在 Linux 中,使用 fence(围栏)可以防止由于硬件故障导致的服务器不可用或数据丢失
安装 fence 工具:
对于基于 Debian 的系统(如 Ubuntu),请运行以下命令:
sudo apt-get update sudo apt-get install fence-agents
对于基于 RHEL 的系统(如 CentOS),请运行以下命令:
sudo yum install fence-agents
配置 fence 设备:
根据你的硬件和需求选择合适的 fence 设备。例如,如果你有一个 IPMI 设备,你需要在
/etc/fence_ipmilan.conf
文件中添加以下内容:# 设备名称 FENCE_DEVICE=ipmilan # 设备登录信息 LOGIN="username" PASSWORD="password" # IPMI 设备地址 IPADDR="192.168.1.100"
其他类型的 fence 设备也有类似的配置文件。确保根据你的环境修改这些值。
测试 fence 设备:
使用
fence_login
命令测试你的 fence 设备是否正常工作:fence_login -n <设备名称> -a <IP地址> -u <用户名> -p <密码> --command "status"
如果一切正常,你应该会看到设备的状态信息。
配置 Pacemaker 或其他集群管理工具:
为了实现自动故障转移,你需要配置一个集群管理工具,如 Pacemaker。这里以 Pacemaker 为例:
a. 安装 Pacemaker:
对于基于 Debian 的系统:
sudo apt-get install pacemaker
对于基于 RHEL 的系统:
sudo yum install pacemaker
b. 创建并配置集群:
使用
corosync-keygen
生成一个密钥,然后将其添加到/etc/corosync/authkey
文件中。接下来,编辑/etc/corosync/corosync.conf
文件,添加以下内容:totem { version: 2 secauth: off cluster_name: mycluster transport: udpu } nodelist { node { ring0_addr: <节点1 IP地址> name: <节点1名称> } node { ring0_addr: <节点2 IP地址> name: <节点2名称> } } quorum { provider: corosync_votequorum } logging { fileline: off to_stderr: yes to_logfile: no logfile: /var/log/cluster.log debug: off timestamp: on }
根据你的环境修改这些值。
c. 启动并启用 Corosync 和 Pacemaker 服务:
sudo systemctl start corosync sudo systemctl enable corosync sudo systemctl start pacemaker sudo systemctl enable pacemaker
配置资源代理:
为了在发生硬件故障时自动执行故障转移,你需要配置资源代理。这里以 MySQL 数据库为例:
a. 安装 MySQL 资源代理:
对于基于 Debian 的系统:
sudo apt-get install resource-agents
对于基于 RHEL 的系统:
sudo yum install resource-agents
b. 创建并配置 MySQL 资源:
在一个节点上运行以下命令,创建并配置 MySQL 资源:
sudo pcs resource create mysql ocf:heartbeat:mysql \ params binary="/usr/sbin/mysqld" config="/etc/mysql/my.cnf" datadir="/var/lib/mysql" \ op monitor interval="30s" timeout="60s"
根据你的环境修改这些值。
配置 STONITH 设备:
最后,为了在发生硬件故障时自动关闭故障节点,你需要配置 STONITH 设备。这里以 IPMI 为例:
a. 安装 STONITH 资源代理:
对于基于 Debian 的系统:
sudo apt-get install stonith
对于基于 RHEL 的系统:
sudo yum install stonith
b. 创建并配置 STONITH 资源:
在一个节点上运行以下命令,创建并配置 STONITH 资源:
sudo pcs stonith create ipmilan fence_ipmilan \ pcmk_host_list="<节点1名称> <节点2名称>" \ ipaddr="<IPMI设备IP地址>" login="<用户名>" passwd="<密码>" \ pcmk_reboot_timeout=600
根据你的环境修改这些值。
现在,你已经成功配置了 fence 设备,当硬件出现故障时,Pacemaker 会自动执行故障转移,保证服务器的高可用性。