我已设置 Pacemaker+Corosync 来管理 Master-Master/Active-Passive 设置中两个 Mysql 框之间的共享 IP 地址(使用交错主键)。
我已设置 Pacemaker 来管理两台机器之间的共享 IP,但是,它目前仅在节点关闭时迁移 IP,而不是在 mysql 出现问题时迁移 IP。如果连接到本地 mysql 实例时出现问题,我希望 IP 能够自动故障转移。
我的 cib.xml 的配置部分如下所示...
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
<nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.0.9-89bd754939df5150de7cd76835f98fe90851b677"/>
<nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="openais"/>
<nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
<nvpair id="cib-bootstrap-options-expected-quorum-votes" name="expected-quorum-votes" value="2"/>
</cluster_property_set>
</crm_config>
<nodes>
<node id="db0.xxx.xxx" uname="db0.xxx.xxx" type="normal"/>
<node id="db1.xxx.xxx" uname="db1.xxx.xxx" type="normal"/>
</nodes>
<resources>
<group id="group1">
<primitive class="ocf" id="ip0" provider="heartbeat" type="IPaddr2">
<instance_attributes id="ip0-instance_attributes">
<nvpair id="ip0-instance_attributes-ip" name="ip" value="192.168.101.139"/>
<nvpair id="ip0-instance_attributes-nic" name="nic" value="eth0"/>
<nvpair id="ip0-instance_attributes-cidr_netmask" name="cidr_netmask" value="22"/>
<nvpair id="ip0-instance_attributes-broadcast" name="broadcast" value="192.168.103.255"/>
</instance_attributes>
</primitive>
</group>
</resources>
<constraints>
<rsc_order id="ip_before_lvs" score="INFINITY">
<resource_set action="start" id="ip_before_lvs-0">
<resource_ref id="ip0"/>
</resource_set>
</rsc_order>
</constraints>
<rsc_defaults/>
<op_defaults/>
</configuration>
我认为我需要在我的 ip0 原语中添加类似以下内容......
<operations>
<op id="....
</operations>
但我不确定我需要做什么才能检查 mysql 是否正在运行,也可能登录 mysql 并执行具有已知输出的查询。如果这两项检查失败,则应迁移资源。
任何指点都值得赞赏。
答案1
我的心跳设置完全相同......
我们面临的问题是知道何时迁移写入 IP。
基本上通过登录和选择检查是行不通的,我发现某些表已损坏,而正在检查的表却没有问题。
现在我正在听 mysql 日志,这是捕获问题的唯一可靠的地方......
(经过长时间的考虑,我决定不进行自动迁移)
希望这可以帮助 :)