服务器高可用架构从零搭建教程,保证网站不宕机

为什么需要服务器高可用架构

单台服务器随时可能因硬件故障、网络波动或程序崩溃而宕机,网站就会打不开。服务器高可用架构的核心思想:准备两台以上服务器,让其中一台出问题时,另一台能自动接管服务,用户几乎无感知。
最常见的方式是用 Keepalived 搭配 Nginx,通过虚拟 IP(VIP)漂移实现主备自动切换。

动手前的硬件与软件清单

  • 两台服务器(物理机或云主机),操作系统建议 CentOS 7/8 或 Ubuntu 20.04+。
  • 两台服务器都安装了 Nginx(版本无所谓,但确保能正常启动)。
  • 内网互通或同一 VPC 网络,两台机器可以互相 ping 通。
  • 登录 root 或拥有 sudo 权限的用户。

安装 Keepalived 并配置主备切换

1. 在两台服务器上安装 Keepalived

CentOS 系统:

# 安装 epel 源(如果未安装)
sudo yum install -y epel-release
# 安装 Keepalived
sudo yum install -y keepalived

Ubuntu 系统:

sudo apt update
sudo apt install -y keepalived

2. 修改主服务器(master)的 Keepalived 配置

主服务器 IP 假设为 192.168.1.10,备服务器 IP 为 192.168.1.20,VIP 规划为 192.168.1.100。

编辑配置文件 /etc/keepalived/keepalived.conf(如果不存在则创建):

sudo vim /etc/keepalived/keepalived.conf

写入以下内容(注意替换网卡名称,一般为 eth0 或 ens33):

vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"   # 检测 nginx 进程是否存在
    interval 2
    weight -2
}

global_defs {
    notification_email {
        admin@example.com
    }
    notification_email_from keepalived@example.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0            # 改成你的实际网卡名称
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

3. 修改备服务器(slave)的 Keepalived 配置

同样编辑 /etc/keepalived/keepalived.conf,内容基本一样,只需修改以下三处:

  • state MASTER 改为 state BACKUP
  • priority 101 改为 priority 100(数字必须小于主服务器)
  • router_id LVS_MASTER 改为 LVS_BACKUP(可自定义)

其他参数保持一致。

4. 启动 Keepalived 并验证

两台服务器分别执行:

sudo systemctl start keepalived
sudo systemctl enable keepalived

登录主服务器,使用 ip addr show eth0 查看是否绑定 VIP 192.168.1.100。
出现说明主服务器角色生效。

常见坑与急救方案

  • 防火墙拦截 VRRP 协议:Keepalived 依赖 VRRP 多播,需要在防火墙放行。CentOS 上执行:
  sudo firewall-cmd --add-protocol=vrrp --permanent
  sudo firewall-cmd --reload
  • Nginx 检测脚本权限不足:确保 killall -0 nginx 能被 sudo 执行。也可以写一个更健壮的脚本检测 80 端口,保存为 /etc/keepalived/check_nginx.sh 并授予 chmod +x
  • 抢占模式导致频繁切换:如果希望备机不主动抢占,可以在实例中添加 nopreempt 选项(仅 BACKUP 状态可加)。

效果验证:模拟宕机并见证 VIP 漂移

  1. 在主服务器上停掉 Nginx:sudo systemctl stop nginx
  2. 等待 2-3 秒,主服务器上的 VIP 会被移除。
  3. 到备服务器上执行 ip addr show eth0,应看到 VIP 已出现在备机上。
  4. 访问 VIP http://192.168.1.100(或者你配置的域名),页面应该由备机的 Nginx 正常响应。
  5. 恢复主服务器 Nginx 并启动 Keepalived,VIP 会重新漂回主服务器(如果配置了 nopreempt 则不会主动抢回)。

通过上述步骤,你已经完成了一套最基础的服务器高可用架构
实际生产环境中还可以结合数据库主从复制、共享存储等方案,确保整个链路无单点。
初次操作时建议先在虚拟机或同网段云主机上练习,熟悉后再投入到正式业务。
遇到异常时重点排查 Keepalived 日志 /var/log/messages(或使用 journalctl -u keepalived),大部分问题都能找到线索。

分享到:
上一篇
零基础搞定服务器CC攻击防护:从入门到落地
下一篇
零基础服务器集群搭建实战:从准备到部署完整流程
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意