服务器高可用架构搭建:教你搭建服务器高可用架构,从入门到验证
你需要准备哪些东西
搭建服务器高可用架构之前,先确认两件事:你有两台 Linux 服务器(CentOS 7 或 Ubuntu 20.04 均可),并且它们之间网络可以互通。
如果只有一台服务器,可以先用虚拟机模拟,步骤完全一样。
另外,每台服务器最好有相同版本的 Nginx 和 Keepalived 安装包。
安装核心组件
安装 Nginx
在两台服务器上分别执行:
# CentOS 7
yum install -y epel-release && yum install -y nginx
# Ubuntu 20.04
apt update && apt install -y nginx
安装后启动并设置开机自启:
systemctl start nginx
systemctl enable nginx
测试 Nginx 是否正常:访问服务器 IP,看到 Welcome 页面即为成功。
安装 Keepalived
Keepalived 负责健康检查和虚拟 IP 漂移。
在两台服务器上分别执行:
# CentOS 7
yum install -y keepalived
# Ubuntu 20.04
apt install -y keepalived
配置高可用,关键一步
下面以“主-备”模式为例,主服务器(192.168.1.10)和备用服务器(192.168.1.20)共享一个虚拟 IP(192.168.1.100)。
主服务器配置
编辑 /etc/keepalived/keepalived.conf:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
}
vrrp_script chk_nginx {
script "/usr/bin/kill -0 $(cat /var/run/nginx.pid 2>/dev/null) || exit 1"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.100
}
}
注意把 interface 改成实际网卡名(如 ens33),priority 主服务器要比备用高(主101,备100)。
备用服务器配置
备用服务器上同样编辑 /etc/keepalived/keepalived.conf,仅修改 state 为 BACKUP,priority 为 100,其余保持一致。
启动 Keepalived
在两台服务器上分别执行:
systemctl start keepalived
systemctl enable keepalived
此时虚拟 IP 会绑定到主服务器上。
可以用 ip addr show 查看。
常见问题与避坑
- 虚拟 IP 无法 ping 通? 检查防火墙是否放行 VRRP 协议(协议号 112)或关闭防火墙:
systemctl stop firewalld,生产环境请放行。 - 切换后服务不正常? 确认 Keepalived 的健康检查脚本路径是否正确。示例脚本检查 Nginx 进程是否存在,如果 Nginx 挂了 Keepalived 会自动降权触发切换。
- 两个节点都抢主? 检查
virtual_router_id是否一致,且priority值没有相同。另外确认网络中没有其他路由器占用该 ID。 - VIP 漂移后客户端需要重连? 如果应用没有做重连机制,建议在应用层增加连接重试或使用 DNS 轮询结合短 TTL。
如何验证架构真的高可用
- 观察当前哪台服务器持有 VIP:在两台服务器上分别运行
ip addr show看 192.168.1.100 出现在哪。 - 手动停掉主服务器的 Nginx:
systemctl stop nginx,等待 2 秒后ip addr show应看到 VIP 已漂移到备用服务器。 - 访问虚拟 IP 的 Nginx 页面,应仍能正常访问。
- 恢复主服务器 Nginx:
systemctl start nginx,稍后 VIP 会主动漂移回来(因为主 priority 更高)。
如果你也在搭建服务器高可用架构,建议先按以上步骤完整执行,再根据实际业务调整健康检查脚本和告警通知。
遇到异常时优先检查防火墙、 Keepalived 日志(/var/log/messages)和 Nginx 运行状态。
写在最后
高可用不是一次配置就一劳永逸,定期演练切换、监控 VIP 状态和业务健康同样重要。
本文提供的方案足够应对绝大多数中小型 Web 服务场景,零基础用户也能在 30 分钟内完成搭建。