服务器集群搭建实现高可用架构:新手完整实战指南

服务器集群搭建实现高可用架构:新手完整实战指南

很多刚接触运维的朋友,听到“集群”“高可用”就会觉得复杂。
其实用两台服务器组合成一个高可用集群,并不需要很深的网络知识。
今天我就以最常见的 Keepalived + Nginx 双机主备方案 为例,带你从零开始,把一台单点服务变成能自动切换的高可用集群。

为什么需要这样搭建

单台服务器跑业务,最怕两个问题:机器宕机或网络不通。
哪怕是临时关机维护,用户也会因为没法访问而流失。服务器集群搭建实现高可用架构之后,主服务出问题时,备用服务器会自动接替,用户几乎无感知。
这套方案成本低、配置简单,很适合中小团队起步。

准备工作:两台服务器 + 一个虚拟IP

硬件上你需要两台安装了 CentOS 7 或 Ubuntu 20.04 的云服务器或虚拟机。
软件方面只用到两个开源组件:

  • Keepalived:负责虚拟IP(VIP)漂移和健康检查。
  • Nginx:作为反向代理或静态服务,实际业务可以换成任意Web服务。

另外还需要一个未被占用且与服务器在同一个局域网段的额外 IP(虚拟IP)。
比如你的服务器A内网IP是 192.168.1.10,服务器B是 192.168.1.11,那么可以选 192.168.1.100 作为VIP(前提是没人用)。
云服务商一般允许在控制台添加辅助内网IP,记下这个地址。

核心步骤:配置Keepalived实现自动切换

1. 两台服务器都安装Keepalived和Nginx

如果使用 CentOS,执行:

yum install -y keepalived nginx
systemctl enable keepalived nginx
systemctl start nginx

Ubuntu 用户替换为 apt install -y keepalived nginx
两台机器都同样操作。

2. 配置主服务器(MASTER)

编辑 /etc/keepalived/keepalived.conf,清空内容后写入以下配置(根据实际网络修改 interface 和 VIP):

vrrp_instance VI_1 {
    state MASTER
    interface eth0           # 替换为你的网卡名,使用 ip a 查看
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100/24    # 替换为你规划的VIP
    }
}

# Nginx健康检查脚本(可选但推荐)
vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"   # 检查nginx进程是否存在
    interval 2
    weight -20
}

注意,要把 state MASTERpriority 100 搭配使用。virtual_ipaddress 中的地址和子网掩码要写正确。
如果想让Keepalived自动检测Nginx是否存活,加上 track_script { chk_nginx } 行。

3. 配置备用服务器(BACKUP)

在第二台服务器上同样编辑 /etc/keepalived/keepalived.conf,区别如下:

  • state BACKUP
  • priority 90(数值低于MASTER)
  • 其他参数(interface, virtual_router_id, virtual_ipaddress)与主服务器一致。

4. 启动Keepalived并检查VIP漂移

两台服务器都执行:

systemctl start keepalived

使用 ip addr show dev eth0 查看,正常情况下主服务器上会出现VIP(比如 192.168.1.100),备用服务器上没有。

避坑指南:新手最容易踩的三个坑

  1. 防火墙拦截VRRP协议:Keepalived依靠VRRP组播发送心跳,默认使用IP协议号112。请确认两台服务器的防火墙放行该协议,或者暂时关闭防火墙做测试。
  • CentOS 7: firewall-cmd --add-protocol=vrrp --permanent && firewall-cmd --reload
  • Ubuntu: ufw allow proto vrrp
  1. 网卡名或VIP写错interface 必须与服务器实际网卡名一致(用 ip a 确认),virtual_ipaddress 的掩码长度(如/24)要和服务器所在子网一致。
  2. Nginx未监听VIP:需要确保Nginx listen 配置里包含 0.0.0.0:80 或者显式监听VIP,否则切换后流量打不过来。

验证方法:模拟主服务器宕机

在确认VIP已经出现在主服务器后,我们来验证切换是否正常。
执行以下操作:

  • 停掉主服务器的Keepalived进程systemctl stop keepalived
  • 查看备用服务器的IPip addr show dev eth0,几秒内备用服务器应该自动绑定VIP。
  • 访问VIP:用浏览器或 curl http://192.168.1.100 应该能正常显示Nginx默认页面(Nginx已在两台服务器上启动)。
  • 恢复主服务器systemctl start keepalived,VIP会重新回到主节点(因为优先级更高)。

高频问题解答

Q: VIP为什么一直不切换到备用?
A: 检查双方防火墙是否放行VRRP;检查virtual_router_id是否一致;检查eth0网卡名是否正确;查看Keepalived日志 journalctl -u keepalived 定位原因。

Q: 能否做多于两台服务器?
A: 可以,Keepalived支持多个节点,但建议用组播 + 不同优先级实现多主或N+1备份。不过双机主备对于大多数业务已经足够。

Q: 集群内服务怎么同步数据?
A: 高可用只解决服务可用性,不自动同步数据。业务数据(如用户上传文件、数据库)需要额外用rsync、NFS共享或数据库主从方案。

写在最后

通过上面几步,你已经完成了一个最简单的服务器集群搭建实现高可用架构
这套组合可以保证当任意一台Web节点出问题时,流量自动切到备用节点,业务中断时间一般不超过10秒。
如果后续想进一步扩展,可以在Nginx前面再加一层LVS,也可以将Keepalived换成更现代的方式。
但核心的VIP漂移和健康检查思路是一样的。

建议你先在虚拟机里完整跑一遍流程,熟悉后再到生产环境部署。
遇到异常时,先从防火墙、网卡名和日志入手排查,大部分问题都能快速解决。

分享到:
上一篇
服务器负载均衡配置提升并发:服务器负载均衡配置与并发提升实操
下一篇
服务器硬件配件选购搭配指南:新手必看的5个核心步骤
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意