除了典型的 Heartbeat/Pacemaker/CoroSync 组合之外,在 Linux 上是否还有其他主要的自动故障转移替代方案?特别是,我正在 EC2 实例上设置故障转移,它只支持单播 - 没有多播或广播。我专门尝试处理我们拥有的少数软件,这些软件还没有自动故障转移功能并且不支持多主环境。这包括 HAProxy 和 Solr 等工具。
我有 Heartbeat+Pacemaker 工作,但我对此并不感到兴奋。以下是我的一些问题:
起搏器工作得很好,尽管它的功率使其难以设置。Pacemaker 的真正问题在于没有简单的方法来自动化配置。我真的很想启动一个 EC2 实例,安装 Chef/Puppet 并在没有我干预的情况下启动整个集群。
所以我们在 CentOS 上运行 Groundworks(使用 Nagios)来监控我们的各种服务器和进程。我已将其设置为在事情达到“警告”或“关键”状态时自动发送电子邮件和 SMS 文本。通常这可以完美运行。但是,在 Postfix 决定停止发送电子邮件的服务器上,我们两次遇到 Postfix 问题。最近一次持续了 4 天,因为我们都没有注意到。
这引出了一个重要的问题:我应该如何监控我的监控服务器?
我在尝试在 CentOS 6.3 x86_64 服务器上安装最新版本的 ImageMagick 时遇到了糟糕的情况。首先,我[下载]从 ImageMagick 站点 1 RPM 并尝试安装它。由于缺少依赖项而失败:
error: Failed dependencies:
libHalf.so.4()(64bit) is needed by ImageMagick-6.8.0-4.x86_64
libIex.so.4()(64bit) is needed by ImageMagick-6.8.0-4.x86_64
libIlmImf.so.4()(64bit) is needed by ImageMagick-6.8.0-4.x86_64
libImath.so.4()(64bit) is needed by ImageMagick-6.8.0-4.x86_64
libltdl.so.3()(64bit) is needed by ImageMagick-6.8.0-4.x86_64
Run Code Online (Sandbox Code Playgroud)
我已经libtool-ltdl安装,但其中包括libltdl.so.7,而不是libltdl.so.4。我有一个类似的问题libHalf,libIex,libIlmImf和libImath。通常,您可以安装 OpenEXR 来获取这些依赖项。不幸的是,CentOS 6.3 包含 OpenEXR 1.6.1,其中包含 ilmbase-devel 1.0.1。该 ilmbase-devel 版本包括这些依赖项的更新版本:
libHalf.so.6libIex.so.6libIlmImf.so.6libImath.so.6我接下来尝试按照[说明] 2从源代码安装 ImageMagick。那里也没有运气。我收到一个构建错误:
RPM build errors:
File not found …Run Code Online (Sandbox Code Playgroud) 我已经god在至少十几个(或更多)服务器上安装了运行 CentOS 5.5 的 i386 和 x86_64 版本的完美运行。我刚刚设置了两个新的 CentOS 5.5 x86_64 服务器并安装了 God,但是我收到了一个事件系统错误:
$ tail /var/log/god.log
E [2011-04-22 12:33:17] ERROR: Condition 'God::Conditions::ProcessExits'
requires an event system but none has been loaded
$ god check
using event system: none
[fail] event system did not load
$ uname -a
Linux server2.example.com 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我在任何 CentOS 服务器上都找不到任何cn或netlink内核模块。但是我还有其他可以正常工作的服务器:
$ god check
using event system: netlink
starting event …Run Code Online (Sandbox Code Playgroud) 我有一个简单的脚本,它使用 rsync 将 Postgres 数据库复制到备份位置以用于时间点恢复。该脚本通过 postgres 用户的 cron 作业每 2 小时运行一次。出于某种奇怪的原因,我可以在进程列表中看到 rsync 的三个副本。任何想法为什么会这样?
这是 cron 条目:
# crontab -u postgres -l
PATH=/bin:/usr/bin:/usr/local/bin
0 */2 * * * /var/lib/pgsql/9.0/pitr_backup.sh
Run Code Online (Sandbox Code Playgroud)
这是 ps 列表,其中显示了 rsync 运行的两个副本和一个休眠的副本:
# ps ax |grep rsync
9102 ? R 2:06 rsync -avW /var/lib/pgsql/9.0/data/ /var/lib/pgsql/9.0/backups/pitr_archives/20110629100001/ --exclude pg_xlog --exclude recovery.conf --exclude recovery.done --exclude pg_log
9103 ? S 0:00 rsync -avW /var/lib/pgsql/9.0/data/ /var/lib/pgsql/9.0/backups/pitr_archives/20110629100001/ --exclude pg_xlog --exclude recovery.conf --exclude recovery.done --exclude pg_log
9104 ? R 2:51 rsync -avW /var/lib/pgsql/9.0/data/ /var/lib/pgsql/9.0/backups/pitr_archives/20110629100001/ --exclude pg_xlog …Run Code Online (Sandbox Code Playgroud)