Articles of 起搏器

Xen / DRBD / Pacemaker集群上不能再添加虚拟机

操作系统:Debian 7.3和7.6 问题: 每次用virsh操作(创build,迁移甚至列出)虚拟机的尝试都会导致这个“无法获得主机供电能力”警告。 我pipe理一个独立的Xen虚拟主机,产生相同的警告,虽然它可能是烦人的,我发现我可以简单地忽略它。 不幸的是,忽略集成了ocf.heartbeat.VirtualDomain资源处理程序的集群上的警告似乎不是一个选项。 基本上,Pacemaker使用virsh创build和pipe理虚拟机。 现在我发现,我不能再添加任何新的资源(虚拟机)。 我相信这个问题是libvirt(0.9.12.3)和这个“无法find…”的警告。 Google / Debian说libvirt-bin中有一个错误,并build议使用早期版本的软件。 问题: 有没有人在Xen / Pacemaker集群中遇到类似的限制(无法添加资源)? 如果是这样,原因是什么? 这个问题是如何处理的? 我相信我可以通过将ocf.heartbeat.VirtualDomain替​​换为ocf.heartbeat.Xen来避免此问题。 有没有人有类似的经历? 我很感激可能提供的任何提示,经验或build议。

起搏器节点是UNCLEAN(离线)

我正在遵循http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Clusters_from_Scratch/_verify_corosync_installation.html文档,以在AWS中设置2节点群集。 两个节点安装了起搏器,FW规则已启用。 当我在两个节点上运行pcs status命令时,都会收到另一个节点为UNCLEAN(脱机)的消息。 我设置的两个节点是ha1p和ha2p。 输出在ha1p上 [root@ha1 log]# pcs status Cluster name: mycluster WARNING: no stonith devices and stonith-enabled is not false Last updated: Wed Dec 24 21:30:44 2014 Last change: Wed Dec 24 21:27:44 2014 Stack: cman Current DC: ha1p – partition with quorum Version: 1.1.11-97629de 2 Nodes configured 0 Resources configured Node ha2p: […]

将主节点降为从节点时获取运行特定资源的节点的IP地址

build立 我正在为具有2个节点(2个物理服务器)的Web应用程序设置HA群集: node1(当前master节点) node2(当前slave节点) 使用Corosync&Pacemaker我能够创build群集和一些资源代理,包括IP故障转移和Web服务器(apache)。 资源 Failover资源一次仅存在于一个节点上 使用python脚本对我的主机提供商进行API调用,以更新IP故障转移目标 WebServer资源在每个可用节点上都存在(作为克隆) 标准的OCF资源使用Apache的server-status处理程序 约束 有一个约束,说Failover和WebServer必须同时在服务器上运行,以便将其视为可用。 问题 现在我想创build一个自定义资源代理(就像我为IP故障转移所做的那样),它将: 将当前从节点的mysql实例切换到主节点 将当前主节点的mysql实例切换到新主节点的从节点 Redis实例基本上是一样的 理想情况下,资源将仅在一个节点( 主节点)上启动,并在所有其他节点( 从节点)上停止。 因此,启动资源会将当前节点置于master模式,并停止将其置于slave模式。 我做了一个脚本,可以轻松实现所有这些操作。 这是如何工作的。 以主模式打开本地节点: # /usr/local/bin/db_failover_switch.sh master 在从属模式下打开本地节点: # /usr/local/bin/db_failover_switch.sh slave 123.45.67.89 大纲很简单明白。 我面临的问题是,我显然需要设置主IP以使从服务器相应地configurationMySQL和Redis服务。 TL; DR 在故障转移的情况下,我想: 资源在节点2上成为master节点 资源在节点1上成为slave节点 为了停止资源(即将其设置为从属模式),我需要知道正在运行资源的节点的IP地址(主机名将执行)。 有没有一种方法可以让我的dynamic参数Pacemaker将传递给我的资源代理? 或者,也许我可以直接从我的资源代理脚本检索群集信息,以知道哪个节点运行特定的资源?

起搏器故障超时不会重置故障计数

我在Centos7上使用Pacemaker 1.1.13和Corosync 2.3.4。 我有一个主/从资源的问题。 有我的资源meta attrs: 迁移阈值= 1 失败超时= 10S 但是当资源宕机时,只有一次尝试启动它。 文档说,属性failure-timeout = 10s应该每10秒重置一次failcount,但是这并没有发生,所以资源永远不会启动。 你知道这个问题吗? 也许我做错了什么? 我正在发送下面的“电脑状态”: Cluster Name: webcluster Corosync Nodes: 10.121.100.101 10.121.100.102 Pacemaker Nodes: pm-node1 pm-node2 Resources: Master: Services-master Meta Attrs: failure-timeout=10s Group: Services Meta Attrs: migration-threshold=1 Resource: Test (class=ocf provider=scooty type=test) Operations: start interval=0s timeout=20 (Test-start-interval-0s) stop interval=0s timeout=20 (Test-stop-interval-0s) monitor interval=10 […]

ZFS-HA池发生元数据损坏

我按照Github的优秀描述设置了ZFS-HA(见这里 )。 经过广泛的testing后,我使用HBA控制器连接到两个节点的RAIDZ3中使用5×12磁盘将设置转换为生产。 直到昨天晚上,这两个存储池中的一个突然出现“池元数据已损坏”的故障。 在scrub运行期间。 在这一点上,我只能推测是什么导致了这种情况,两个池都是在起搏器中使用SCSI栅栏build立的,而且在投入生产之前,我在testing过的所有故障情况下,磁盘保留工作都完美无缺。 最近发生的唯一重大事件是没有UPS支持的两次完全停电(读取:权力刚刚从一个时刻到下一个)。 但是,也可能是腐败的真正原因是完全不同的。 现在的情况是,我不能再import池了(请在这个问题的最后看到zpool import的输出)。 到目前为止,我所有的拯救游泳池的意图都失败了: # zpool import -f tank cannot import 'tank': one or more devices is currently unavailable # zpool import -F tank cannot import 'tank': one or more devices is currently unavailable 这让我感到困惑,因为它并不真正说唯一的select就是摧毁游泳池(这将是一个致命损坏游泳池的预期反应)。 # zpool clear -F tank cannot open 'tank': no such pool 我也手动删除所有的SCSI保留,例如: # […]

在不同子网上有两个节点的IP故障切换:无法从第二个节点ping虚拟IP?

我要设置冗余故障转移Redmine : 另一个实例安装在第二台服务器上没有问题 MySQL(与Redmine在同一台计算机上运行)被configuration为主 – 主复制 因为它们位于不同的子网(192.168.3.x和192.168.6.x),所以似乎VIPArip是唯一的select。 在node1上的/etc/ha.d/ha.cf logfacility none debug 1 debugfile /var/log/ha-debug logfile /var/log/ha-log autojoin none warntime 3 deadtime 6 initdead 60 udpport 694 ucast eth1 node2.ip keepalive 1 node node1 node node2 crm respawn node2上的/etc/ha.d/ha.cf : logfacility none debug 1 debugfile /var/log/ha-debug logfile /var/log/ha-log autojoin none warntime 3 deadtime 6 initdead 60 […]

起搏器群集:Xen RA与libvirt RA

构build起搏器集群来pipe理Xen domU虚拟机,系统pipe理员可以select不同的资源代理: 专用的Xen资源代理( ocf:heartbeat:Xen ) 基于libvirt的资源代理( ocf:heartbeat:VirtualDomain ) 两者都将支持通常的启动/停止操作以及运行节点之间的实时迁移。 Xen ra通过运行xm list来实现监视器动作(我知道它确实很慢,如果监视器超时设置太低会导致问题),libvirt使用virsh domstate(我不知道它是如何的被执行)。 总的来说,这两个RA似乎在function上几乎相同。 在规划和实施新的集群时,是否有任何理由偏好一种资源types?

无法使用Corosync / Pacemaker启动PostgreSQL复制资源

我正在两台服务器(CentOS 6.5)上通过Corosync / Pacemaker与HAbuild立PostgreSQL复制。 我的软件信息: postgresql91-9.1.19-1PGDG.rhel6.x86_64 postgresql91-server-9.1.19-1PGDG.rhel6.x86_64 postgresql91-libs-9.1.19-1PGDG.rhel6.x86_64 postgresql91-contrib-9.1.19-1PGDG.rhel6.x86_64 postgresql91-devel-9.1.19-1PGDG.rhel6.x86_64 corosynclib-1.4.7-2.el6.x86_64 corosync-1.4.7-2.el6.x86_64 pacemaker-cli-1.1.12-8.el6_7.2.x86_64 pacemaker-1.1.12-8.el6_7.2.x86_64 pacemaker-cluster-libs-1.1.12-8.el6_7.2.x86_64 pacemaker-libs-1.1.12-8.el6_7.2.x86_64 resource-agents-3.9.5-24.el6_7.1.x86_64 复制正在工作,从主人我可以看到从属服务器连接: -bash-4.1$ psql -c "select client_addr,sync_state from pg_stat_replication;" client_addr | sync_state ————-+———— 172.16.1.10 | async (1 row) 而且我也确认在master上创build的数据被复制到slave。 这里是我的crm configure show : node master node slave primitive PSQL pgsql \ params restart_on_promote=true pgctl="/usr/pgsql-9.1/bin/pg_ctl" psql="/usr/pgsql-9.1/bin/psql" pgdata="/var/lib/pgsql/9.1/data" node_list="master slave" repuser=rep […]

多状态MySQL主/从心脏起搏器资源无法在群集节点上启动

build立 我正在使用Corosync / Pacemaker受pipe群集中的两台物理服务器为Web应用程序设置HA群集。 在发现我的方向错误之后 ,我决定使用心跳捆绑的MySQL资源代理来pipe理群集中的MySQL实例。 目前,从node1 (当前主机 )到node2 (当前从机 )有一个工作主/从configuration。 现在我想让Pacemakerpipe理我的MySQL实例,以便它可以提升/降级主控或从属。 根据这个(旧的)wiki页面 ,我应该能够通过这样做来实现设置: primitive p_mysql ocf:heartbeat:mysql \ params binary="/usr/sbin/mysqld" \ op start timeout="120" \ op stop timeout="120" \ op promote timeout="120" \ op demote timeout="120" \ op monitor role="Master" timeout="30" interval="10" \ op monitor role="Slave" timeout="30" interval="20" ms ms_mysql p_mysql \ meta clone-max=3 正如你所看到的,我做了第二个op […]

快速找出起搏器/ corosync是否有法定人数

在一个shell脚本中,我们目前调用/usr/sbin/pcs status cluster ,然后用grep -qE查找'Current DC:.*partition with quorum' grep -qE 'Current DC:.*partition with quorum'来确定集群是否正常。 我想知道是否有一个更快的方法,因为pcs status cluster查询所有节点的PCSD状态,这需要时间,大约一秒半,我想做这个检查之前做某些操作是要经常做。 pcs status nodes both并计算在线节点的数量是同样好决定如果群集没有问题? 这大约需要2秒钟: pcs status cluster 2>&1 | grep -qE 'Current DC:.*partition with quorum' pcs status cluster 2>&1 | grep -qE 'Current DC:.*partition with quorum' 这需要约0.2秒: pcs status nodes both | grep -cE 'Online: [az]+ [az]+ […]