在 Linux 集群中,使用 fence 同步通常是指在一个高可用性集群中实现节点间的故障检测和自动恢复
Corosync 是一个用于实现高可用性和负载均衡的集群服务。首先,在所有集群节点上安装 Corosync。
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get install corosync
对于基于 RHEL 的系统(如 CentOS):
sudo yum install corosync
接下来,编辑 /etc/corosync/corosync.conf
文件以配置集群。这里有一个简单的示例配置:
totem {
version: 2
secauth: off
cluster_name: my_cluster
transport: udpu
}
nodelist {
node {
ring0_addr: node1_ip_address
name: node1
}
node {
ring0_addr: node2_ip_address
name: node2
}
}
quorum {
provider: corosync_votequorum
}
logging {
to_logfile: yes
logfile: /var/log/corosync.log
to_syslog: yes
}
将 node1_ip_address
和 node2_ip_address
替换为实际节点 IP 地址。
Pacemaker 是一个用于管理集群资源的工具。在所有集群节点上安装 Pacemaker。
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get install pacemaker
对于基于 RHEL 的系统(如 CentOS):
sudo yum install pacemaker
接下来,创建并编辑 /etc/pacemaker/authkey
文件以设置集群节点之间的认证密钥。在文件中添加以下内容:
auth 1
1 sha1 my_cluster_password
将 my_cluster_password
替换为实际密码。然后,将此文件复制到其他节点。
STONITH(Shoot The Other Node In The Head)是一种用于在集群中实现节点隔离的技术。你需要为你的集群选择合适的 STONITH 设备。这里有一个使用 IPMI 的示例:
在所有节点上安装 pcs
工具:
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get install pcs
对于基于 RHEL 的系统(如 CentOS):
sudo yum install pcs
使用以下命令创建 STONITH 设备:
sudo pcs stonith create my_stonith_device ipmi \
ipaddr=bmc_ip_address \
userid=bmc_username \
passwd=bmc_password \
interface=lanplus \
pcmk_host_list=node1,node2
将 bmc_ip_address
、bmc_username
和 bmc_password
替换为实际 BMC(基板管理控制器)信息。
在一个节点上运行以下命令以启动并激活集群:
sudo systemctl start corosync
sudo systemctl enable corosync
sudo systemctl start pacemaker
sudo systemctl enable pacemaker
现在,你已经在 Linux 集群中使用 fence 同步。你可以通过手动关闭一个节点或模拟故障来测试集群的故障检测和自动恢复功能。