如何配置虚拟机双机热备实现高可用性?

更新于
2026-09-22 01:30:00
52阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

一、 :为何必须实现虚拟机双机热备?

在金融、医疗、电商等对业务连续性要求极高的领域,一次程序故障就可能导致巨额损失、客户流失甚至合规风险。双机热备通过两台主机实时互为备份。实现故障自动切换,从而保障业务零宕机

二、使用者痛点直击

  • 配置复杂、文档分散:很多公司在搭建双机热备时需要同时处理网络、存储、心跳还有虚拟化网站的多套参数,容易出现遗漏。
  • 故障切换不可靠:心跳链路不稳定或VIP配置错误,会导致主备切换失败业务仍然中断。其实,
  • 运维成本高:缺乏统一监控和自动化脚本。使得日常维护需要大量人工介入。
  • 升级风险大:程序升级或补丁更新后往往会破坏已有的高可用配置,需要反复调试。

三、双机热备概述

1. 双机热备的工作原理

两台服务器到故障。备用节点立即接管虚拟IP并启动相同的业务实例,实现无感知切换。

如何配置虚拟机双机热备实现高可用性?

2. 关键技术组件

  • keepalived —— 基于VRRP实现心跳与VIP漂移。按理说,
  • VMware vSphere HA —— ESXi 集群层面的自动重启与资源调度。
  • LVS/NGINX/HAPROXY —— 前端负载均衡与双机热备结合使用。
  • CARP / pfsense —— 防火墙层面的冗余方案。按理说,

四、环境准备与硬件规划

a. 虚拟化网站选择

推荐使用 VMware vSphere 6.x/7.x 或者开源 KVM。确保网站支持 HA 集群功能 并已启用 DRS。

b. 网络设计要点

  • L1 心跳网卡:专用网卡或 VLAN。用于 keepalived 心跳通信,避免业务流量干扰。
  • L2 公网/业务网卡:PING 可达且绑定 VIP 的网络段。
  • L3 存储网络:NFS/iSCSI 共享磁盘,用于 VM 的数据盘。

b. 共享存储准备

- 创建一个容量足够的共享磁盘,挂载到两台 ESXi 主机;- 在 VMware 中将该磁盘标记为“独占”或“多写”,视业务需求而定。不过,

五、软件层面详细配置步骤

在 CentOS 7 虚拟机上安装 keepalived 并编写 VRRP 配置文件

# 安装 keepalived
yum install -y keepalived
# 编辑 /etc/keepalived/keepalived.conf
cat> /etc/keepalived/keepalived.conf <'EOF'
global_defs {
    router_id LVS_DEVEL
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    notification_email {
    }
    notification_email_from 
}
vrrp_instance VI_1 {
    state MASTER          # 主节点写 MASTER,备用写 BACKUP
    interface eth0       # 心跳网卡名称
    virtual_router_id 51 # VRRP 实例 ID,保持唯一
    priority 150         # 主节点> 备用节点
advert_int 1 # 心跳间隔秒
auntication {
auth_type PASS
auth_pass mysecurepass
}
virtual_ipaddress {
192.168.10.101/24 dev eth0 label eth0:vip # VIP 地址。
可定义多个
}
track_script {
chk_nginx # 健康检查脚本,可自行
}
}
EOF
# 添加健康检查脚本
cat> /etc/keepalived/check_nginx.sh <'EOS'
#!/bin/bash
if systemctl is-active --quiet nginx; n exit 0; else exit 1; fi
EOS
chmod +x /etc/keepalived/check_nginx.sh
# 启动并设置开机自启
systemctl enable keepalived && systemctl start keepalived

在 VMware vSphere 中开启 HA 并添加容错规则

  1. 登录 vCenter Web Client → "集群"
  2. Select your cluster → “Configure” → “vSphere HA”。勾选 “Turn ON vSphere HA”。
  3. "Admission Control" 建议使用 “Host failures tolerance = 1”。
  4. "Advanced Options" 中将 “Isolation Response” 设置为 “Power off” 或 “Shutdown”。
  5. "VM Overrides" 为关键业务 VM 勾选 “Restart Priority = High”。
  6. "Save" 完成后vCenter 会自动在每台 ESXi 主机上部署 HA Agent。

将 VIP 与 VM 网络适配器关联

- 在 VM 的网络适配器属性中添加第二块 NIC,连接到 Heartbeat VLAN。- 在 ESXi 上创建一个 Port Group。将其绑定至同一 VLAN,并在 Keepalived 配置中指定该接口名称。

验证主备切换

  1. A 节点正常运行时通过 alert ping 192.168.10.101 确认 VIP 可达。
  2. A 节点强制关机,观察 B 节点日志是否出现 “Entering BACKUP state” 并接管 VIP。
  3. B 节点成功接管后 启动 A 节点,确认它回到 MASTER 状态并抢回 VIP。

六、常见问题与痛点对应方法

痛点描述 可能原因 解决办法 
*心跳丢包导致误判*- Heartbeat 网卡与业务网卡共用同一物理链路 - VLAN 配置错误或 MTU 不匹配 - 防火墙拦截 VRRP 包- 为 Heartbeat 单独划分 VLAN - 确保 MTU 一致且关闭防火墙对 VRRP 的过滤 - 使用 `tcpdump -i ethX -nnvvv 'proto vrrp'` 排查数据包流向
*VIP 被两台机器同时持有*- 两台机器 priority 相同 - Keepalivered 服务未同步启动顺序 - 多播路由阻塞导致 VRRP 广播不被接收 - 明确设定 `priority` 值 - 确保所有节点在同一时间启动 keepalive 服务 - 检查交换机 IGMP Snooping 设置是否放行 VRRP 多播
*ESXi 主机宕机后 VM 未自动重启*- 集群未开启 HA 或 Admission Control 阈值过低 - 虚拟机未标记为“受保护” - 存储不可用导致 VM 无法启动 - 在集群设置里打开 vSphere HA。并设置容忍故障数 - 对关键 VM 设置 Restart Priority=High - 确认共享存储已被所有 ESXi 正常挂载
*升级补丁后 Keepalived 不再工作*- 新内核改动了网络接口命名规则 - SELinux 策略阻止了 VRRP 包发送 - Keepalive 包版本不兼容新程序库 - 检查 `/etc/sysconfig/network-scripts/ifcfg-*` 是否仍然对应原接口名 - 临时关闭 SELinux 验证是否是策略问题 - 使用官方仓库提供的最新 Keepalive RPM 或自行编译源码

七、常用方法建议

  • SLA‑Driven Design:先明确业务 RTO/RPO,接下来决定“双活”还是“单活+热备”。
  • #Automation:T​erraform + Ansible 脚本化创建 ESXi 集群、网络 Port‑Group 与 Keepalived 配置,实现“一键部署”。
  • #监控告警:Zabbix/Nagios 对以下指标设置阈值告警:VRRP 状态变化、VIP Ping 丢失、ESXi 主机关机事件。
  • #定期演练:每季度进行一次“主备切换演练”,记录恢复时间并调整脚本。
  • #文档统一管理:采用 Confluence 或 GitBook 将网络拓扑图、IP 分配表还有 Keepalive 配置统一归档,降低交接风险。

八、迈向真正的高可用之路 🚀

演练和运维自动化。解决了配置复杂、切换不可靠和运维成本高等痛点**,帮助公司实现真正意义上的零停摆**。

还在为程序宕机担忧吗?怎么说呢,立即动手部署双机热备,让您的业务稳如磐石!📈💪

如何配置虚拟机双机热备实现高可用性?

标签:双机

一、 :为何必须实现虚拟机双机热备?

在金融、医疗、电商等对业务连续性要求极高的领域,一次程序故障就可能导致巨额损失、客户流失甚至合规风险。双机热备通过两台主机实时互为备份。实现故障自动切换,从而保障业务零宕机

二、使用者痛点直击

  • 配置复杂、文档分散:很多公司在搭建双机热备时需要同时处理网络、存储、心跳还有虚拟化网站的多套参数,容易出现遗漏。
  • 故障切换不可靠:心跳链路不稳定或VIP配置错误,会导致主备切换失败业务仍然中断。其实,
  • 运维成本高:缺乏统一监控和自动化脚本。使得日常维护需要大量人工介入。
  • 升级风险大:程序升级或补丁更新后往往会破坏已有的高可用配置,需要反复调试。

三、双机热备概述

1. 双机热备的工作原理

两台服务器到故障。备用节点立即接管虚拟IP并启动相同的业务实例,实现无感知切换。

如何配置虚拟机双机热备实现高可用性?

2. 关键技术组件

  • keepalived —— 基于VRRP实现心跳与VIP漂移。按理说,
  • VMware vSphere HA —— ESXi 集群层面的自动重启与资源调度。
  • LVS/NGINX/HAPROXY —— 前端负载均衡与双机热备结合使用。
  • CARP / pfsense —— 防火墙层面的冗余方案。按理说,

四、环境准备与硬件规划

a. 虚拟化网站选择

推荐使用 VMware vSphere 6.x/7.x 或者开源 KVM。确保网站支持 HA 集群功能 并已启用 DRS。

b. 网络设计要点

  • L1 心跳网卡:专用网卡或 VLAN。用于 keepalived 心跳通信,避免业务流量干扰。
  • L2 公网/业务网卡:PING 可达且绑定 VIP 的网络段。
  • L3 存储网络:NFS/iSCSI 共享磁盘,用于 VM 的数据盘。

b. 共享存储准备

- 创建一个容量足够的共享磁盘,挂载到两台 ESXi 主机;- 在 VMware 中将该磁盘标记为“独占”或“多写”,视业务需求而定。不过,

五、软件层面详细配置步骤

在 CentOS 7 虚拟机上安装 keepalived 并编写 VRRP 配置文件

# 安装 keepalived
yum install -y keepalived
# 编辑 /etc/keepalived/keepalived.conf
cat> /etc/keepalived/keepalived.conf <'EOF'
global_defs {
    router_id LVS_DEVEL
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    notification_email {
    }
    notification_email_from 
}
vrrp_instance VI_1 {
    state MASTER          # 主节点写 MASTER,备用写 BACKUP
    interface eth0       # 心跳网卡名称
    virtual_router_id 51 # VRRP 实例 ID,保持唯一
    priority 150         # 主节点> 备用节点
advert_int 1 # 心跳间隔秒
auntication {
auth_type PASS
auth_pass mysecurepass
}
virtual_ipaddress {
192.168.10.101/24 dev eth0 label eth0:vip # VIP 地址。
可定义多个
}
track_script {
chk_nginx # 健康检查脚本,可自行
}
}
EOF
# 添加健康检查脚本
cat> /etc/keepalived/check_nginx.sh <'EOS'
#!/bin/bash
if systemctl is-active --quiet nginx; n exit 0; else exit 1; fi
EOS
chmod +x /etc/keepalived/check_nginx.sh
# 启动并设置开机自启
systemctl enable keepalived && systemctl start keepalived

在 VMware vSphere 中开启 HA 并添加容错规则

  1. 登录 vCenter Web Client → "集群"
  2. Select your cluster → “Configure” → “vSphere HA”。勾选 “Turn ON vSphere HA”。
  3. "Admission Control" 建议使用 “Host failures tolerance = 1”。
  4. "Advanced Options" 中将 “Isolation Response” 设置为 “Power off” 或 “Shutdown”。
  5. "VM Overrides" 为关键业务 VM 勾选 “Restart Priority = High”。
  6. "Save" 完成后vCenter 会自动在每台 ESXi 主机上部署 HA Agent。

将 VIP 与 VM 网络适配器关联

- 在 VM 的网络适配器属性中添加第二块 NIC,连接到 Heartbeat VLAN。- 在 ESXi 上创建一个 Port Group。将其绑定至同一 VLAN,并在 Keepalived 配置中指定该接口名称。

验证主备切换

  1. A 节点正常运行时通过 alert ping 192.168.10.101 确认 VIP 可达。
  2. A 节点强制关机,观察 B 节点日志是否出现 “Entering BACKUP state” 并接管 VIP。
  3. B 节点成功接管后 启动 A 节点,确认它回到 MASTER 状态并抢回 VIP。

六、常见问题与痛点对应方法

痛点描述 可能原因 解决办法 
*心跳丢包导致误判*- Heartbeat 网卡与业务网卡共用同一物理链路 - VLAN 配置错误或 MTU 不匹配 - 防火墙拦截 VRRP 包- 为 Heartbeat 单独划分 VLAN - 确保 MTU 一致且关闭防火墙对 VRRP 的过滤 - 使用 `tcpdump -i ethX -nnvvv 'proto vrrp'` 排查数据包流向
*VIP 被两台机器同时持有*- 两台机器 priority 相同 - Keepalivered 服务未同步启动顺序 - 多播路由阻塞导致 VRRP 广播不被接收 - 明确设定 `priority` 值 - 确保所有节点在同一时间启动 keepalive 服务 - 检查交换机 IGMP Snooping 设置是否放行 VRRP 多播
*ESXi 主机宕机后 VM 未自动重启*- 集群未开启 HA 或 Admission Control 阈值过低 - 虚拟机未标记为“受保护” - 存储不可用导致 VM 无法启动 - 在集群设置里打开 vSphere HA。并设置容忍故障数 - 对关键 VM 设置 Restart Priority=High - 确认共享存储已被所有 ESXi 正常挂载
*升级补丁后 Keepalived 不再工作*- 新内核改动了网络接口命名规则 - SELinux 策略阻止了 VRRP 包发送 - Keepalive 包版本不兼容新程序库 - 检查 `/etc/sysconfig/network-scripts/ifcfg-*` 是否仍然对应原接口名 - 临时关闭 SELinux 验证是否是策略问题 - 使用官方仓库提供的最新 Keepalive RPM 或自行编译源码

七、常用方法建议

  • SLA‑Driven Design:先明确业务 RTO/RPO,接下来决定“双活”还是“单活+热备”。
  • #Automation:T​erraform + Ansible 脚本化创建 ESXi 集群、网络 Port‑Group 与 Keepalived 配置,实现“一键部署”。
  • #监控告警:Zabbix/Nagios 对以下指标设置阈值告警:VRRP 状态变化、VIP Ping 丢失、ESXi 主机关机事件。
  • #定期演练:每季度进行一次“主备切换演练”,记录恢复时间并调整脚本。
  • #文档统一管理:采用 Confluence 或 GitBook 将网络拓扑图、IP 分配表还有 Keepalive 配置统一归档,降低交接风险。

八、迈向真正的高可用之路 🚀

演练和运维自动化。解决了配置复杂、切换不可靠和运维成本高等痛点**,帮助公司实现真正意义上的零停摆**。

还在为程序宕机担忧吗?怎么说呢,立即动手部署双机热备,让您的业务稳如磐石!📈💪

如何配置虚拟机双机热备实现高可用性?

标签:双机