在现代 IT 基础设施中,系统的高可用性(High Availability, HA)至关重要。当一台服务器出现故障时,服务能自动切换到备用服务器上,从而保障业务连续性。本文将详细讲解如何在 Ubuntu 系统上配置一个简单的 Ubuntu集群故障转移 环境,即使你是 Linux 新手也能轻松上手。

什么是 Ubuntu 集群故障转移?
Ubuntu 集群故障转移是指在由多台 Ubuntu 服务器组成的集群中,当主节点(Primary Node)发生故障时,备用节点(Standby Node)能够自动接管其服务,确保对外服务不中断。这种机制通常通过 高可用集群配置 实现,核心组件包括 Pacemaker 和 Corosync。
准备工作
本教程使用两台 Ubuntu 22.04 LTS 服务器:
node1:IP 地址 192.168.1.10(主节点) node2:IP 地址 192.168.1.11(备用节点)确保以下条件已满足:
两台服务器网络互通 已配置静态 IP 已禁用防火墙或开放所需端口(如 5403-5405) root 权限或可使用 sudo步骤 1:安装 Pacemaker 和 Corosync
在两台服务器上执行以下命令安装高可用套件:
sudo apt updatesudo apt install -y pacemaker corosync resource-agents
步骤 2:配置主机名和 hosts 文件
在 node1 上执行:
sudo hostnamectl set-hostname node1
在 node2 上执行:
sudo hostnamectl set-hostname node2
然后在两台机器的
/etc/hosts文件末尾添加以下内容:
192.168.1.10 node1192.168.1.11 node2
步骤 3:生成并配置 Corosync
在任意一台节点(例如 node1)上生成 Corosync 配置:
sudo corosync-keygen
然后编辑配置文件
/etc/corosync/corosync.conf,内容如下:
totem { version: 2 cluster_name: ubuntu-ha-cluster transport: udpu}nodelist { node { ring0_addr: node1 nodeid: 1 } node { ring0_addr: node2 nodeid: 2 }}quorum { provider: corosync_votequorum expected_votes: 2}logging { to_logfile: yes logfile: /var/log/corosync/corosync.log to_syslog: yes}将此配置文件复制到 node2:
scp /etc/corosync/corosync.conf node2:/etc/corosync/
同时将密钥文件也复制过去:
scp /etc/corosync/authkey node2:/etc/corosync/
步骤 4:启动集群服务
在两台服务器上分别执行:
sudo systemctl enable --now corosyncsudo systemctl enable --now pacemaker
验证集群状态:
sudo crm status
正常输出应显示两个在线节点,例如:
Online: [ node1 node2 ]
步骤 5:配置虚拟 IP 资源(实现自动故障切换)
假设我们希望对外提供一个虚拟 IP(VIP)192.168.1.100,当主节点宕机时,该 IP 自动漂移到备用节点。
在任意节点执行以下命令创建 VIP 资源:
sudo crm configure primitive vip ocf:heartbeat:IPaddr2 \ params ip=192.168.1.100 cidr_netmask=24 \ op monitor interval=30s
设置资源为“仅运行一个实例”(避免重复分配):
sudo crm configure commit
现在,你可以通过
ping 192.168.1.100测试 VIP 是否生效。尝试关闭当前持有 VIP 的节点,观察是否自动切换到另一台——这就是 自动故障切换 的核心功能!
总结
通过以上步骤,你已经成功搭建了一个基于 Ubuntu 的高可用集群,实现了基础的 Ubuntu HA集群 功能。这种 Ubuntu集群故障转移 架构适用于 Web 服务、数据库等关键业务场景,有效提升系统可靠性。
后续你可以扩展更多资源(如 Apache、MySQL),配置 STONITH(防止脑裂)等高级功能。希望这篇教程对你有所帮助!
