Nginx-keepalived-高可用

发布于:2025-04-08 ⋅ 阅读:(82) ⋅ 点赞:(0)

Nginx 高可用 通常 借助 Keepalived 实现, Keepalived 能通过 VRRP (虚拟路由冗余协议)让多个 Nginx 服务器 组成一个 热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。

一、环境准备

角色 IP 地址
主服务器(Master) 192.168.159.129
备用服务器(Backup) 192.168.159.130
虚拟IP(VIP) 192.168.159.120
Keepalived版本 1.4.5

二、源码安装 Keepalived 服务

2.1 在节点 Mater 上安装 keepalived

# 安装依赖
yum install openssl-devel libnl3-devel ipset-devel -y
yum install libnfnetlink-devel -y

# 下载源码
wget https://www.keepalived.org/software/keepalived-1.4.5.tar.gz

# 解压
tar -zxvf  keepalived-1.4.5.tar.gz

cd keepalived-1.4.5

./configure --prefix=/usr/local/keepalived

make && make install

2.1.1 配置文件配置

# 配置文件 keepalived.conf 配置
mkdir -p /etc/keepalived

vim keepalived.conf

# 配置文件内容
! Configuration File for keepalived

global_defs {
   router_id NGINX_MASTER
   script_user root
   enable_script_security
}


vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
        mcast_src_ip 192.168.159.129
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.159.200
    }
}

2.1.2 把keepalived 配置成系统命令

  • 创建 服务文件

    vim /etc/systemd/system/keepalived.service
    
    [Unit]
    Description=Keepalived High Availability Service
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/keepalived.pid
    ExecStart=/usr/local/keepalived/sbin/keepalived --pid=/var/run/keepalived.pid --config=/etc/keepalived/keepalived.conf
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
  • 重新加载 Systemd 配置并启动服务

    sudo systemctl daemon-reload
    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    
  • 检查服务状态

    sudo systemctl status keepalived
    

2.2 在节点 Backup 上安装 Keepalived

安装方法与 Master 一致, 配置文件 keepalived.conf 需要修给为以下

! Configuration File for keepalived

global_defs {
   router_id NGINX_BACKUP
   script_user root
   enable_script_security
}


vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    mcast_src_ip 192.168.159.130
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.159.200
    }
}

三、启动 keepalived 服务验证 VIP 是否挂起

在这里插入图片描述

四、安装 Nginx 服务器

pass

五、测试 Nginx

在 Master 上的 Nginx 的 HTML配置 MASTER

在 Backup 上的 Nginx 的 HTML 配置 Buckup

5.1 访问虚拟 IP 192.168.159.200

在这里插入图片描述

5.2 把 Master 的 keepalived 关闭,模拟服务故障

在这里插入图片描述
发现 VIP 192.168.159.200 切换到 备用服务器,访问 192.168.159.120
在这里插入图片描述