一、环境准备
192.168.113.11 | Nginx+Keepalive(Master) |
192.168.113.22 | Nginx+keepalive(Backup) |
192.168.113.33 | Nginx(web服务器) |
192.168.113.44 | Nginx(服务器) |
二、环境搭建准备
2.1 Nginx源码编译安装
参考作责之前发布《Nginx源码编译安装》https://blog.csdn.net/m0_55213400/article/details/147066230?spm=1001.2014.3001.5501
2.2 Nginx配置负载均衡反向代理
192.168.113.11
192.168.113.22
在http{ }模块定义地址池upstream releserver {server 192.168.113.33:80;server 192.168.113.44:80;}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 5s;proxy_read_timeout 30s;proxy_send_timeout 10s;proxy_pass http://releserver; 调用地址池}
2.3 web服务器配置
192.168.113.33
192.168.113.44
站点目录:自定义
location / {#allow 0.0.0.0/24; # 公司内网#allow 10.0.0.0/8; # 内部服务器#deny all; # 拒绝其他所有IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 5s;proxy_read_timeout 30s;proxy_send_timeout 10s;root /usr/local/nginx/html/laoshi/admin;index index.html index.htm;}
2.3 Keepalive编译安装
keepalive官网下载链接https://www.keepalived.org/download.htmlhttps://www.keepalived.org/download.html
编译步骤如下
yum install -y gcc gcc-c++ make automake autoconf libtooltar -zxvf keepalived-2.3.4.tar.gzcd keepalived-2.3.4/./configure --prefix=/usr/local/keepalived --sysconfdir=/etc --with-init=systemd --with-openssl --with-snmpmake && make installcd /etc/keepalived/cp keepalived.conf.sample keepalived.conf
2.4 设置允许虚拟IP
主备都需要
echo 'net.ipv4.ip_nonlocal_bind = 1' >> /etc/sysctl.conf && sysctl -p
2.5 开始配置keepalive 主备都需要配置(重点)
virtual_router_id 51 必须与主备保持一致
priority 100 如果主为100 则备低于100
auth_type PASS 必须主备保持一致
auth_pass 1111 必须主备保持一致
! Configuration File for keepalivedglobal_defs {router_id 192.168.113.11
}vrrp_script check_nginx {script "/usr/local/bin/check_nginx.sh"interval 2 #每隔2S执行脚本weight -20}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.113.100 #定义虚拟IP}track_script {check_nginx}# Allow packets addressed to the VIPs above to be receivedaccept
}
判断Nginx运行状态脚本
#!/bin/bash
#检查Nginx状态是否存在
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ];then#Nginx不存在systemctl restart nginxsleep 3#以防万一再次尝试重启一下nginxif [ $(ps -C nginx --no-header | wc -l) -eq 0 ];then#重启失败 强制停止keepalived服务systemctl stop keepalivedexit 1fi
fi
exit 0
三、验证是否正常
此时 虚拟IP正常显示 master
此时 备主机不显示虚拟IP
访问测试 http://192.168.111.100
访问测试 http://192.168.111.100
主服务器关机测试
VIP飘移正常