要实现服务器虚拟主机的高可用部署,必须将共享存储和浮动IP结合,确保虚拟机在物理节点故障时自动迁移,业务持续可用。 本文从实际运维角度,梳理虚拟主机创建、共享盘绑定、浮动IP配置的全流程,并分享分布式高可用架构的设计要点,避免纸上谈兵。
服务器创建虚拟主机绑定共享盘完整流程
虚拟主机创建涉及底层虚拟化选型,常见方案为KVM配合libvirt管理。关键在于磁盘镜像必须存放在共享存储上,而非本地盘,否则无法实现故障迁移。
共享存储选型:NFS与分布式存储的取舍
共享存储方案直接影响高可用效果,下表对比三种主流方案,便于你根据场景做选择。
| 方案 | 性能 | 数据安全 | 运维复杂度 | 适用规模 |
|---|---|---|---|---|
| NFS | 中等,依赖单点 | 低,需额外冗余 | 低 | 小型集群,临时用途 |
| GlusterFS | 中高,复制卷有写开销 | 高,多副本 | 中 | 中大集群,要求强一致性 |
| Ceph | 高,适合大规模 | 高,纠删码或副本 | 高 | 大型分布式场景 |
大多数生产环境推荐Ceph或GlusterFS,NFS在单点故障时会影响整个集群,成为瓶颈,业内专家指出,分布式存储的副本数至少设为2,否则一旦硬盘损坏,数据恢复窗口极长。
挂载共享盘到虚拟主机
假设共享存储已部署完成,并通过NFS或Ceph RBD导出,在宿主机上挂载共享存储后,需将磁盘附加到虚拟机。
以libvirt环境为例,操作路径如下:
- 在宿主机上挂载共享存储卷,例如通过
mount -t nfs或rbd map。 - 使用
virsh attach-disk命令将共享磁盘附加到指定虚拟机,指定目标总线(如virtio或sata)。 - 若需永久生效,编辑虚拟机XML配置文件,在
<devices>段添加<disk>标签,并设置<shareable>为yes,确保多节点可同时访问。
需要注意:共享盘必须具备特定格式(如raw)并启用缓存直通,否则多节点写入可能导致数据损坏,行业共识认为,采用分布式文件系统(如GlusterFS)时,虚拟机镜像应使用qcow2格式且关闭缓存,由存储层保证一致性。
验证共享存储是否生效
在虚拟机内部执行lsblk或fdisk -l,确认新磁盘已识别,格式化并挂载后,测试读写,若在另一节点上启动同一虚拟机,应能正常访问同一块磁盘。测试时务必关闭节点A上的虚拟机,再在节点B上启动,避免同一磁盘被两节点同时挂载引发脑裂。
分布式高可用部署浮动IP配置要点
浮动IP(VIP)是保障网络连续性的关键,当物理节点宕机,VIP自动漂移到备用节点,客户端无需切换IP即可继续访问。
浮动IP原理与Keepalived配置
VIP通过VRRP协议实现,常见工具为Keepalived,在宿主机上配置时,需注意两点:
- 虚拟主机应绑定在宿主机所在的网络
,VIP配置在宿主机上,虚拟机内部业务通过宿主机网关转发。
- Keepalived配置文件中,
vrrp_instance段定义虚拟路由ID、优先级、认证密码;virtual_ipaddress段写入VIP地址。
配置示例思路(非完整命令,仅示意关键字段):
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.1.100/24
}
}
备节点配置与主节点相同,仅priority值更低。建议priority差值大于30,防止网络抖动导致频繁切换。
验证故障转移效果
启动Keepalived后,在主节点上ip addr show应看到VIP,模拟主节点宕机(如关闭Keepalived服务),观察VIP是否在数秒内出现在备节点上。切换时间通常在2-5秒,多数情况下可在业务可接受范围。
若虚拟主机内服务需要绑定VIP,可通过脚本在VIP漂移时自动更新,例如在Keepalived的notify_master和notify_backup脚本中调用API或修改Nginx配置。
共享存储与浮动IP的协同工作
高可用集群需要同时依赖共享存储和浮动IP,二者缺一不可。存储高可用解决数据持久化,网络高可用解决连接连续性。
脑裂与锁机制
当心跳网络中断,两个节点同时认为自己是主节点,可能同时操作同一共享盘,导致数据损坏,解决方案包括:
- 使用隔离设备(STONITH)强制关闭异常节点。
- 在存储层启用分布式锁,如Ceph的
或GlusterFS的自愈功能。cluster fs
- 控制浮动IP优先与存储挂载联动,确保只有持有VIP的节点才可写共享盘。
网络规划与隔离
建议将心跳网络、存储网络、业务网络分离,使用不同物理网卡和VLAN,避免单点故障,心跳网络带宽要求不高,但延迟需低,存储网络则需高带宽,相当一部分运维事故源于网络混用导致的心跳超时。
服务器创建虚拟主机绑定共享盘浮动IP常见问题
Q: 虚拟主机绑定共享盘后,虚拟机迁移时如何保证数据一致性?
A: 迁移前需确保虚拟机处于关机或挂起状态,避免内存数据与磁盘不一致,若使用在线迁移,需共享存储支持实时复制,且虚拟化平台需集成一致性组功能,多数情况下,迁移前先通过sync命令强制刷新缓存,再执行迁移命令。
Q: 浮动IP配置后,虚拟主机无法访问外部网络,是什么原因?
A: 最常见原因是VIP未配置在正确的网桥接口上,需确认虚拟机的网络模式(如NAT或桥接):若使用桥接,VIP应配置在宿主机桥接接口;若使用NAT,VIP需配置在宿主机对应虚拟网络接口,检查路由表,确保VIP所在网段网关正确。
Q: 分布式高可用部署对硬件有什么要求?
A: 最低要求:至少两台物理服务器,每台配备双网卡(分别用于心跳和业务),共享存储可通过专用网络连接,建议使用SSD加速存储节点,内存至少32GB,若预算有限,可用旧服务器搭建测试环境,但生产环境需保证硬件冗余,避免单点成为瓶颈。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/578790.html




