Nginx-keepalived-高可用
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.gzcd keepalived-1.4.5./configure --prefix=/usr/local/keepalivedmake && make install
2.1.1 配置文件配置
# 配置文件 keepalived.conf 配置
mkdir -p /etc/keepalivedvim keepalived.conf# 配置文件内容
! Configuration File for keepalivedglobal_defs {router_id NGINX_MASTERscript_user rootenable_script_security
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1mcast_src_ip 192.168.159.129authentication {auth_type PASSauth_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 keepalivedglobal_defs {router_id NGINX_BACKUPscript_user rootenable_script_security
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1mcast_src_ip 192.168.159.130authentication {auth_type PASSauth_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