在 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 同步。你可以通過手動關閉一個節點或模擬故障來測試集群的故障檢測和自動恢復功能。