Articles of 起搏器

(Pacemaker)Nginx使用主IP地址而不是虚拟IP与Web服务器进行通信

我使用Corosync / Pacemaker和nginx作为反向代理build立了双节点群集(主动/被动)。 OS是RHEL7,目前该机器只有一个networking接口。 我configuration了两个资源: cluster-vip共享虚拟IP 反向代理 nginx 这里是两个资源的声明: pcs resource create cluster-vip ocf:heartbeat:IPaddr2 ip=192.168.0.1 cidr_netmask=24 op monitor interval=30s pcs resource create reverse-proxy systemd:nginx op monitor interval=5s meta failure-timeout=60s pcs constraint colocation add reverse-proxy with cluster-vip INFINITY pcs constraint order cluster-vip then reverse-proxy 昨天,我发现了一个意外的行为,而networking捕获。 与客户端通信时,主动节点使用虚拟IP地址(192.168.0.1)。 与位于内部networking的Web服务器进行通信时,它将使用接口的主IP地址而不是vip(取决于活动节点的192.168.0.2或192.168.0.3)。 因此,我不得不在我的防火墙上创build两个不同的规则(一个用于node1,另一个用于node2),而不是只允许vip与Web服务器通信。 我打算将其他节点添加到群集中,而不必一个一个地允许每个节点,只是一次性允许VIP。 这种行为是否有合理的解释? 有没有办法告诉起搏器只使用VIP? 这是一个好习惯吗? 我不想做任何愚蠢的事情,所以如果你认为我不应该这样做,我会很高兴听到为什么。 问候

可以configuration一个configuration文件的起搏器吗?

我试图configuration一个configuration文件的起搏器(我可以自动生成,然后要求起搏器“重新加载”)。 但是我所看到的所有例子都是针对命令行命令或交互式编辑器的。 (我正在运行Ubuntu)。 命令行方法是这样的 : crm configure primitive VIP ocf:IPaddr2 params ip=10.0.2.200 nic=eth0 op monitor interval=10s 虽然交互模式是这样的 : sudo crm configure And then we add the res_ip resource: crm(live)configure# primitive res_ip ocf:heartbeat:IPaddr2 params ip="102.169.122.254" cidr_netmask="24" nic="eth0" crm(live)configure# commit crm(live)configure# exit 但我想要一个静态configuration文件,我可以更新和重新加载。 像心跳使用的/etc/ha.d/haresources文件。 这是可能吗?

Hyper-V上的起搏器和DRBD

我需要为Apache网站设置双节点Web群集。 我有Hyper-V基础架构,只有两个节点。 这些要点是负载平衡和高可用性。 我使用CentOS 7,Pacemaker集群,MariaDB 10安装和configuration了两台虚拟机。我在Pacemaker中configuration了主/从ocf :: percona:mysql资源。 接下来,我需要一个网站内容的共享存储。 我在双主模式下创build了DRBD磁盘,在其上创build了GFS2。 我没有增加Pacemakertesting它。 一切运行良好,但为了使其自动提升,我需要通过Pacemakerpipe理这些。 问题是,Pacemaker需要栅栏来创buildDRBD资源,但是没有用于Hyper-V的stonith代理。 我在之前的CentOS 6版本中看过,可以创buildSSH stonith代理。 我试图做到这一点,但个人电脑不适用于它。 现在可以在Hyper-V之上使用Pacemaker吗? 或者可能存在另一种在双基层中使用DRBD的方法?

Linux HA群集:以非root用户身份运行资源

我已经成功地在centos7上使用pacemaker和corosync设置了HA集群,并且我也能够添加和启动资源。 其中一个资源是tomcat的一个实例,在当前的configuration中运行正常。 我唯一的问题是,tomcat正在以root用户身份运行。 我希望tomcat资源作为非root用户启动。 我一直在阅读文档,但我还没有find任何东西。 谁能在这里看到,如果他们有这个解决scheme? 提前致谢。

让起搏器重试失败的资源

我想让起搏器重新开始我的资源 primitive Imq ocf:example:imq \ op monitor on-fail="restart" interval="10s" \ op start interval="0" timeout="60s" on-fail="restart" \ meta failure-timeout="30s" 请注意,此资源通过固定到第一个节点 location location_Imq Imq inf: vm1 location location_Imq1 Imq -inf: vm2 目前,如果我打破了一些东西,停止这个资源启动失败计数返回INFINITY并停止尝试重新启动服务。 我想永远不要放弃资源,一旦间歇性问题消除,资源就会重新启动并恢复服务。 在CentOS上使用pacemaker 1.0。

起搏器corosync 2节点与第三法定人数

我无法弄清楚如何configuration第二个简单的法定人数的双节点安装程序。 似乎认为所有的节点都有能力作为一个完整的后备节点,当我只想要一个与STONITH的法定数量工作时,本质上是一个2 + 1 DRBD-MySQL节点系统。 任何关于如何使第三节点只是法定成员的技巧或文档,将不胜感激。

Centos 5和Centos 6之间的起搏器

在Centos 5和Centos 6之间configurationpacemaker + corosync时遇到一些麻烦。这里是crm_mon的输出: 在node1上: Last updated: Sun Jul 21 19:02:21 2013 Last change: Sun Jul 21 18:14:48 2013 via crmd on svr077-53149.localdomain Stack: openais Current DC: svr077-53149.localdomain – partition WITHOUT quorum Version: 1.1.8-2.el5-394e906 2 Nodes configured, 2 expected votes 1 Resources configured. Online: [ svr077-53149.localdomain ] OFFLINE: [ svr423L-2737.localdomain ] Crond (lsb:crond): Started […]

ha.cf文件在心跳/心脏起搏器环境中的重要性?

我有几个问题试图了解ha.cf以及集群如何在更新上采取行动。 例如,当创build一个新的群集时,我通常: 在节点1-节点x上设置ha.cf中的一些默认选项 启动群集。 在任何节点上运行crm,configuration资源。 虽然我通常上/下节点,资源上/下,我以后从来没有实际添加一个新的节点。 只是为了“有趣”,我决定运行一个新的服务器,它只在ha.cf中的集群中指定一个节点,然后启动心跳。 这台机器成功地join了群集,并将其本身添加到群集中的每个其他节点….我感到困惑的是,即使我closures所有节点,并重新启动原来的2个节点,他们都仍然有第三个服务器群集但脱机,尽pipe第三个不在原始2节点的ha.cf文件中。 即使我编辑ha.cf并改变一些无意义的值或者触摸文件,重启服务器和集群,它仍然存在。 所以我的结论是CIB优先于ha.cf,但是,我没有得到的是为什么/如何。 我真的在寻找最佳实践 – 如果任何一台机器都有足够的ha.cf来“搞定”,那么在CRM中做一切事情呢? 是ha.cf浪费时间,还是应该使用它更多? 试着不要这么模糊 – 我只是在寻找我应该在CRM中做什么,以及我应该在ha.cf中做什么? 谢谢, 会

心脏起搏器能否重试监测错误的动作?

我创build了简单的起搏器代理来pipe理MySQL。 它工作的很好,但有一件事我不明白。 当资源是“开始”时,监视器操作返回下列之一: $ OCF_NOT_RUNNING $ OCF_ERR_GENERIC 起搏器立即停止资源,并再次运行。 在停止资源之前,是否有任何方法可以执行多个监视器检查? 例如30秒内重试5次超时。 当然,我可以设置操作超时,但就是这样。 我知道我可以在我的资源代理中实现重试机制,但是我不认为这是最好的方法。 任何帮助将不胜感激

crm_mon -E不会在Debian Jessie上运行外部代理

build立 我目前正在使用Pacemaker + Corosync工作的2节点HA集群。 我的节点运行在Debian 8(Jessie)上。 现在,当集群发生更改(资源停止/启动,升级/降级,移动…)时,我将能够得到通知。 由于电子邮件报告是如此,2008年,我想使用Slack。 为此,我创build了一个脚本,使用curl将消息发布到我的团队的Slack频道,使用Slack的webhook 。 我的脚本使用了这里logging的环境variables: Pacemaker – 7.3。 通过外部代理configuration通知 。 该脚本在shell中手动执行时可以正常工作,并且能够在指定的通道上发布。 它也logging到/var/log/ocf-notifier.log 。 问题 基于这个答案 ,我使用Pacemaker的ocf:pacemaker:ClusterMon创build了一个新的资源ocf:pacemaker:ClusterMon资源代理,它调用我的自定义脚本( /usr/local/bin/ocf-notifier )。 但是我注意到,当节点发生更改时(尝试停止资源以及完全closures节点),根本不调用我的脚本。 所以我试图用手工启动crm_mon ,如下所示: $ crm_mon -Arf –interval=2 -E /usr/local/bin/ocf-notifier -e '@jordan' 看看是否可以通过与另一个shell一起玩群集来触发这个事情。 事实certificate, crm_mon能够看到集群中发生的变化(节点脱机,资源被停止/启动…),但我的自定义脚本从来没有眨眼之间。 我的自定义日志文件保持空白,Slack中没有任何内容,因为我相信这个脚本根本就没有被调用。 TL; DR crm_mon不会在集群事件上调用外部代理,因为它应该与-E选项一起使用。 我究竟做错了什么?