我们已经在 CentOS 6 系统上成功使用了负载平衡系统 Piranha+Pulse 15 个月。我们使用它来平衡两台 Web 服务器的负载。请注意,我们的 Web 服务器也是我们的负载平衡器,因此我们的总设置中有两台服务器。
今天,我们从 CentOS 6.4 升级到 6.5,并更新了所有软件包。我们只需执行 即可完成这两项操作yum update
。自更新以来,pulse 将不再启动,因此负载平衡器已关闭。
更新的软件包之一是 piranha,它从 更新到piranha-0.8.5-19.el6.x86_64
。piranha-0.8.6-2.el6_4.1.x86_64
这个问题也可能是由更新的依赖项引起的,谁知道呢。进行了大量更新。
目前,有两个选择:要么使用新软件包修复该问题,要么恢复使用旧软件包。如能提供任何帮助,我们将不胜感激。
我在 Pulse 上发现了什么
当脉冲启动时,它会持续运行几秒钟,然后崩溃。service pulse status
然后显示pulse dead but pid file exists
。
这是/var/log/messages
尝试启动脉冲时显示的内容:
Jan 8 13:12:25 XXX pulse[14028]: STARTING PULSE AS BACKUP
Jan 8 13:12:25 XXX pulse[14028]: Skipping death of unknown child 14029
Jan 8 13:12:26 XXX ntpd[9119]: Listen normally on 12 lo:1:0 xx.xx.xx.xx UDP 123
Jan 8 13:12:26 XXX ntpd[9119]: peers refreshed
Jan 8 13:12:31 XXX pulse[14028]: partner dead: activating lvs
Jan 8 13:12:31 XXX pulse[14028]: Error waiting for semaphore: Interrupted system call
Jan 8 13:12:32 XXX ntpd[9119]: Deleting interface #12 lo:1:0, xx.xx.xx.xx#123, interface stats: received=0, sent=0, dropped=0, active_time=6 secs
Jan 8 13:12:32 XXX ntpd[9119]: peers refreshed
我发现有人遇到了类似的问题:https://www.centos.org/forums/viewtopic.php?f=13&t=44198。我的错误信息略有不同(Interrupted system call
而不是Permission denied
)。不幸的是,建议的答案对我不起作用。我仍然收到相同的错误。
我用 yum 尝试过
yum history list piranha
显示以下内容:
Loaded plugins: fastestmirror, security
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
19 | <yy> | 2014-01-08 11:39 | I, U | 184 EE
15 | <yy> | 2013-05-22 11:00 | I, O, U | 254 EE
11 | <yy> | 2012-10-18 16:37 | Install | 2
history list
我无法发布的完整输出yum history info 19
,因为内容对于这篇文章来说太长了。
yum downgrade piranha
失败:
Loaded plugins: fastestmirror, security
Setting up Downgrade Process
Loading mirror speeds from cached hostfile
* base: mirror.nl.leaseweb.net
* extras: centos.mirror.transip.nl
* updates: mirror.nl.leaseweb.net
Only Upgrade available on package: piranha-0.8.6-4.el6.x86_64
Nothing to do
yum history undo 19
我尝试使用和恢复最新更新yum history rollback 18
。如果我这样做,我会收到以下错误:
Error: Depsolving loop limit reached.
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: python(abi) = 2.6
Removing: python-2.6.6-51.el6.x86_64 (@base)
python(abi) = 2.6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: python-urlgrabber >= 3.9.0-8
Removing: python-urlgrabber-3.9.1-9.el6.noarch (@base)
python-urlgrabber = 3.9.1-9.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: yum-metadata-parser >= 1.1.0
Removing: yum-metadata-parser-1.1.2-16.el6.x86_64 (@anaconda-CentOS-201111250358.x86_64/6.3)
yum-metadata-parser = 1.1.2-16.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: python-iniparse
Removing: python-iniparse-0.3.1-2.1.el6.noarch (@anaconda-CentOS-201111250358.x86_64/6.3)
python-iniparse = 0.3.1-2.1.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: pygpgme
Removing: pygpgme-0.1-18.20090824bzr68.el6.x86_64 (@anaconda-CentOS-201111250358.x86_64/6.3)
pygpgme = 0.1-18.20090824bzr68.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: python >= 2.4
Removing: python-2.6.6-51.el6.x86_64 (@base)
python = 2.6.6-51.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: rpm-python
Removing: rpm-python-4.8.0-37.el6.x86_64 (@base)
rpm-python = 4.8.0-37.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: rpm >= 4.4.2
Removing: rpm-4.8.0-37.el6.x86_64 (@base)
rpm = 4.8.0-37.el6
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: /usr/bin/python
Removing: python-2.6.6-51.el6.x86_64 (@base)
Not found
Error: Package: yum-3.2.29-40.el6.centos.noarch (base)
Requires: python-sqlite
Removing: python-2.6.6-51.el6.x86_64 (@base)
python-sqlite = 2.3.2
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
关于食人鱼,这个脚本说(输出管道到grep piranha
):
Updated piranha-0.8.6-2.el6_4.1.x86_64 @updates
--> Processing Dependency: initscripts for package: piranha-0.8.6-4.el6.x86_64
--> Processing Dependency: initscripts for package: piranha-0.8.6-4.el6.x86_64
---> Package piranha.x86_64 0:0.8.6-4.el6 will be erased
当我--skip-broken
按照建议使用时,仍然会出现错误,并且 piranha 仍然没有降级。我收到以下错误:
Packages skipped because of dependency problems:
yum-3.2.29-40.el6.centos.noarch from base
Error: Trying to remove "yum", which is protected
You could try running: rpm -Va --nofiles --nodigest
更新
我们已经联系了 RedHat,这可能是一个错误。他们有一个可能的修复程序,但 RedHat 无法重现它,所以他们目前无法测试它。我建议将可能的修复程序发送给我们,以便我们可以尝试。他们还没有收到回复。
目前,我们通过 lvsd 自行管理负载平衡。这不是最佳解决方案,但目前可以做到。
答案1
您可以使用 yum history undo ID,其中 ID 是事务的 ID。
你的情况yum history undo 19