我正在尝试配置一个 2 节点 openais/pacemaker 集群,但发现很难找到信息/教程。
我的目标是在主从复制场景中设置 2 个 MySQL 服务器,我可以从两个服务器读取,但只能写入“主”服务器。
因此,我有复制品和手动故障转移通过交换辅助 IP 地址,并使用 my.cnf 中的“只读”选项重新配置新的从属设备,我现在想使用 pacemaker 自动执行此操作。基本上,我希望主 IP 始终位于我可以写入的服务器上,以及从属 IP 始终位于另一个 IP 上。我希望当主服务器上的 mysql 无法响应时发生故障转移。
这是我目前的配置。有人可以检查我的工作吗(我确信它不完整),以及给我一些建议,告诉我我做错了什么?(注意:mysql-master 脚本是 /etc/init.d 下的自定义脚本,用于设置/清除只读选项,并重新启动 mysql)
primitive virtual_master_ip ocf:heartbeat:IPaddr2 \
params ip=192.168.250.xxx.xxx \
op monitor interval=10s
primitive virtual_slave_ip ocf:heartbeat:IPaddr2 \
params ip=192.168.xxx.yyy
primitive mysql_service ocf:heartbeat:mysql
params binary="/usr/bin/mysqld_safe" config="/etc/mysql/my.cnf" \
op minitor interval="60s" timeout="30s" \
meta target-role="Started"
primitive mysql_master_role lsb:mysql-master
group mysql virtual_master_ip mysql_master virtual_slave_ip
colocation ms_ip inf: virtual_master_ip virtual_slave_ip score="-INFINITY"
答案1
知道问题到底是什么是就像 Kamil 所说的那样,这是非常有用的信息。但是,我有几个问题要立即问你:
- 您的 IP 地址有五个八位字节:
192.168.250.xxx.xxx
- 我不知道有一个名为“minitor”的操作:
op minitor interval="60s" timeout="30s"
- 我使用
lsb:mysql
类,而不是ocf:heartbeat:mysql
;如果您在这一部分遇到问题,那么可能值得尝试一下。 - 如果您有共置约束,您可能不希望
virtual_master_ip
和位于同一组中。这会导致起搏器心律失常。virtual_slave_ip
-INF
不过,我甚至不确定您是否想做您认为正在做的事情。我更倾向于设置两个资源mysql_as_master
和mysql_as_slave
,以确保 MySQL 在机器上以适当的模式运行(我将在命令行上设置只读选项来启动 MySQL,而不是使用配置文件进行调整,并使用 mysql 客户端查询正在运行的服务器以确保它根据需要以只读或读写方式运行),然后将它们与关联的 IP 地址分组。