两台服务器做热备的核心是“浮动IP+心跳检测+数据一致+防脑裂”,开源组合Keepalived或Pacemaker/Corosync加DRBD就能跑通,商业软件买的是授权和兜底服务。 下面按方案选型、配置步骤、成本、切换时间、实操命令五块展开,尽量把能落地的路径写清楚。
两台服务器热备方案哪种好:先分清主备、双活和负载均衡
两台服务器做热备,最常见的误区是把“热备”和“负载均衡”混成一件事,热备关注的是故障后业务还能不能起来,负载均衡关注的是流量怎么分摊,两者目标不同,配置思路也不同。
主备模式是两台服务器热备的默认答案
主备模式也叫Active-Standby,一台机器对外提供服务,另一台待命,主节点挂掉后,备用节点接管浮动IP和业务进程,这个模式对两台服务器的要求最低,适合OA、进销存、小型数据库、内部文件服务这类“不能停太久、但流量不算大”的场景。
- 优点:结构简单,数据一致性容易控制,故障切换逻辑清晰。
- 缺点:备用机平时利用率不高,硬件资源存在待命成本。
- 关键点:浮动IP必须能漂移,心跳网络必须独立,数据必须有一份可信副本。
双活和负载均衡不是一回事
双活通常指两台机器同时承载业务,负载均衡器把请求分到两边,它看起来利用率高,但对数据一致性、会话保持、故障隔离要求更高,两台服务器做双活,如果没有共享存储或强一致复制,数据库场景很容易出现数据冲突,行业共识认为,两台服务器热备优先做主备,不要为了“利用率”强行上双活。
| 模式 | 业务中断 | 数据一致性难度 | 适用场景 | 两台服务器成本 |
|---|---|---|---|---|
| 主备热备 | 切换期间短时中断 | 较低,单写更稳 | OA、小数据库、内部系统 | 低到中 |
| 双活 | 理论上更短 | 较高,需强一致或共享存储 | 无状态Web、读多写少 | 中到高 |
| 负载均衡 | 单台故障影响部分流量 | 取决于后端存储 | 高并发Web、API网关 | 中 |
选型时先问三个问题
- 业务能停多久?也就是RTO,恢复时间目标。
- 能丢多少数据?也就是RPO,恢复点目标。
- 数据放在本机磁盘、共享存储,还是数据库自带复制?
参考GB/T 20988-2007的灾难恢复能力分级思路,RTO和RPO越小,方案越复杂,两台服务器做热备,多数中小企业把RTO控制在分钟级、RPO控制在“尽量少丢”即可,不必一上来就追求零中断。
中小企业两台服务器热备怎么配置:从业务连续性目标倒推
第一步:明确RTO和RPO,别先买软件
如果业务是内部OA,停半小时能接受,主备加定时备份就够,如果是订单库,停五分钟都难受,就要把数据库复制和切换脚本做扎实,先写清楚“故障后几分钟内恢复、允许丢几分钟数据”,后面选型才不会跑偏。
第二步:规划心跳网络和浮动IP
两台服务器至少要有两类网络:业务网络和心跳网络,心跳网络最好单独走一台交换机或直连网线,避免业务流量把心跳包堵死,浮动IP用Keepalived的VRRP实现,主节点持有VIP,备节点监听心跳。
- 业务网卡:
eth0,承载VIP和业务流量。 - 心跳网卡:
eth1,只跑VRRP或Corosync心跳。 - VIP示例:
168.1.100/24,切换时从主漂到备。 - 检查命令:
ip addr show eth0,看VIP是否在主节点上。
第三步:数据一致性方案按场景选
- 文件服务:用DRBD做块设备镜像,主节点挂载读写,备节点被动复制。
- MySQL:用主从复制或MGR,配合VIP切换;切换后要检查复制位点。
- PostgreSQL:用流复制加VIP,备库提升为主库。
- Windows文件服务器:用Windows故障转移集群加共享存储或存储副本。
- 无状态Web:代码放共享NAS或rsync同步,VIP漂移即可。
第四步:防脑裂和切换验证不能省
心跳线断掉时,两台机器可能都以为自己是主,这就是脑裂,业内专家指出,没有仲裁或STONITH的纯软件双机热备,在生产环境里要慎用,常见做法是加仲裁盘、ping网关做额外检测,或者用Pacemaker的STONITH隔离故障节点。
切换验证要实际做,不是看配置文件,拔掉主节点网线、停掉主节点服务、直接关机,三种故障各演练一次,每次记录VIP漂移时间、业务恢复时间、数据是否完整。
两台服务器做热备需要多少钱:开源与商业方案成本拆解
开源方案的成本主要在人
Keepalived、Pacemaker、Corosync、DRBD本身不收费,成本集中在实施人天、心跳交换机、备用服务器和演练时间,两台普通x86服务器加一台小交换机,硬件投入相对可控;真正花钱的是懂切换逻辑的运维或集成商。
- 软件授权:开源方案通常为零。
- 硬件:两台服务器、心跳网线或交换机、共享存储按需。
- 实施:按人天计费,北京地区两台服务器热备实施服务通常按项目包干或人天报价,差异主要看数据库和存储复杂度。
- 演练与维护:每年至少做一次切换演练,成本常被低估。
商业方案贵在授权和服务
商业双机热备软件通常按节点或按CPU授权,价格从数千到数万元不等,带图形界面、技术支持和切换编排,对没有专职运维的团队,商业软件买的是“出事有人兜底”,但商业软件也不能替代数据一致性设计,数据库复制和存储规划仍要自己做。
| 成本项 | 开源方案 | 商业方案 |
|---|---|---|
| 软件授权 | 通常无 | 数千到数万元不等 |
| 实施难度 | 需要熟悉脚本和集群组件 | 图形化程度高,依赖厂商支持 |
| 故障兜底 | 靠自身团队 | 厂商支持加自身演练 |
| 适合团队 | 有Linux运维经验 | 运维人力有限、要求快速上线 |
别忽略隐性成本
备用服务器平时不承载业务,但也要更新补丁、监控磁盘、同步配置,很多热备失效不是切换逻辑错,而是备机半年没登录,补丁和证书都过期了,把备机纳入日常巡检,比多买一套软件更实际。
两台服务器热备切换需要多长时间
切换时间由检测、仲裁、接管三段组成
- 检测段:Keepalived的
advert_int和weight决定多快发现主节点异常。 - 仲裁段:Pacemaker/quorum判断是否允许备节点接管,防脑裂会拉长这个阶段。
- 接管段:启动服务、挂载存储、漂移VIP、检查端口。
多数情况下,Keepalived加VIP的简单主备能在秒级完成漂移;数据库提升和存储挂载会拉长到分钟级,具体时间必须实测,不能只看软件宣传。
缩短切换时间的实操点
- 心跳间隔别设得太保守,内网可适当缩短,但要防误切。
- 健康检查脚本只检查关键端口和进程,不要做全量业务探测。
- 数据库切换脚本提前写好,切换后自动检查复制状态。
- 用
journalctl -u keepalived -f观察切换日志,定位卡在哪一段。
常见落地场景与命令示例
Nginx加Keepalived双机热备配置片段
主节点/etc/keepalived/keepalived.conf核心片段:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100/24
}
}
备节点把state改为BACKUP,priority调低,例如90,重启并查看:
systemctl restart keepalived ip addr show eth0 journalctl -u keepalived -f
MySQL主备切换要点
主库和备库先做复制,VIP挂在主库,切换时先确认备库复制延迟,再停主库写入、提升备库、漂移VIP,切换后检查:
SHOW SLAVE STATUS\G SHOW MASTER STATUS;
Windows环境操作路径
Windows文件服务器可用“故障转移集群管理器”创建集群,配置共享存储和角色,切换验证用Get-Cluster、Get-ClusterNode查看节点状态,没有共享存储时,用存储副本做复制,再配合集群角色切换。
两台服务器做热备不是买两台机器插上网线就完事,关键是浮动IP、心跳检测、数据一致性和防脑裂四件事配齐,把这四件事跑通并做过切换演练,才算真正落地。
Q&A:两台服务器怎么做热备常见问题
两台服务器热备必须用共享存储吗?
不是必须,文件级同步、DRBD块复制、数据库自带主从复制都能替代共享存储,共享存储的好处是切换后数据视图统一,缺点是增加单点依赖和成本,小规模场景优先用数据库复制加VIP,文件服务用DRBD或rsync。
两台服务器做热备需要几块网卡?
至少两块,一块业务网卡承载VIP和业务流量,一块心跳网卡跑VRRP或Corosync心跳,条件允许时再做一条直连心跳线,降低交换机故障导致双机同时失联的概率,只有一块网卡也能配,但生产环境不建议。
两台服务器热备切换后原主机恢复怎么办?
原主机恢复后不要直接抢回VIP,先确认数据是否落后,再以备节点身份加入集群,等复制追平后再按维护窗口切回,Keepalived可通过调整优先级控制抢占,Pacemaker用资源约束避免来回切换,切换后原主机恢复的正确顺序是:检查数据、加入集群、追平复制、择机回切。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792664.html


