nginx + keepalived 高可用配置
参考文档《keepalived-doc》
ip | |
192.168.153.14 | 主 |
192.168.153.15 | 备 |
1、安装nginx
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
# 安装 nginx wget https://nginx.org/download/nginx-1.9.9.tar.gz tar -xzvf nginx-1.9.9.tar.gz cd nginx-1.9.9 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module # 安装 make && make install # 启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 重启 /usr/local/nginx/sbin/nginx -s reload # 设置开机启动 vim nginx.service
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 保存退出,将文件移动或复制到 /usr/lib/systemd/system/
cp ./nginx.service /usr/lib/systemd/system/
# 重启配置服务
systemctl daemon-reload
# 启动
systemctl start nginx
# 查看状态
systemctl status nginx
# 复制安装包到其他服务器并安装
scp ./nginx-1.9.9.tar.gz root@192.168.153.15:/opt/
2、安装Keepalived
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
# 新增nginx健康监测
vrrp_script check_nginx{
script "/etc/keepalived/check_nginx.sh" # 心跳执行的脚本,检测nginx是否启动
interval 2 #(检测脚本执行的间隔,单位是秒)
}
vrrp_instance VI_1 {
state MASTER
#interface eth0
interface ens33 # 修改为本机网卡名称
virtual_router_id 51
priority 101 # 优先级,备机要小于主机优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 192.168.200.16
# 192.168.200.17
# 192.168.200.18
192.168.153.100 # 虚拟ip
}
# 跟踪脚本
track_script {
check_nginx
}
}
# /etc/keepalived新增check_nginx.sh监测脚本
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
# 检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then # 如果nginx没有启动就启动nginx
systemctl start nginx # 重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then # nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived
fi
fi
# 复制到备机
scp ./check_nginx.sh root@192.168.153.15:/etc/keepalived/
scp ./keepalived.conf root@192.168.153.15:/etc/keepalived/
# 备机 编辑配置修改如图标示即可
# 开机启动
systemctl enable --now keepalived
# MASTER ip a 查看
ip a
# 备机
测试访问虚拟ip 192.168.153.100 当前是153.14 master绑定了vip
关闭掉 153.14 的keepalived
systemctl stop keepalived
再次访问,vip已经漂移到了153.15备机上
备机查看
现在再启动master上的keepalived,我们会发现ip会再漂移回master
systemctl start keepalived