1.Nginx高可用原理
2.版本与信息
Nginx:1.23.1
keepalived osixia/keepalived:2.0.20
机器资源:192.168.50.22 与192.168.50.251
3.部署详情
3.1 Nignx部署
两台机器执行如下命令
docker run --restart unless-stopped --net=host --name nginx \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/html:/home/nginx/html \
-v /home/nginx/logs:/var/log/nginx -d \
nginx:1.23.1
可以将自己的nginx.conf放置在宿主机的/home/nginx/conf目录下。
3.2 keepalived部署
- 修改配置文件 keepalived.conf内容如下:
global_defs {
}
vrrp_script check_LVS {
script "/container/service/keepalived/assets/check_nginx.sh"
interval 5
timeout 2
weight 50
rise 3
fall 3
user root
}
vrrp_instance VI_1 {
interface em2
state MASTER
virtual_router_id 51
priority 100
nopreempt
unicast_peer {
192.168.50.9
192.168.50.18
}
virtual_ipaddress {
192.168.50.127
}
authentication {
auth_type PASS
auth_pass 3er4#ER$
}
track_script {
check_LVS
}
notify "/container/service/keepalived/assets/notify.sh"
}
需要修的配置信息:interface 网卡信息,state 状态(MASTER、BACKUP),virtual_route_id 进行同网段vip隔离,priority 优先级(Master要大于BACKUP),unicast_peer 机器真实ip,virtual_ipaddress 虚拟的vip。
关于网卡信息,可以通过ip addr找到
check_nginx.sh脚本如下
#!/bin/bash
http_status=`curl -sIL -w "%{http_code}\n" -o /dev/null http://127.0.0.1:7800`
if [ ${http_status} != 200 ];then #判断变量里的值如果等于0
kill 1
fi
可以根据自己想需要调整访问的Nginx的端口或路径。
- 启动容器
将keepalived.conf与check_nginx.sh放置在/home/keepalived路径下,执行如下命令:
docker run -d --net=host --cap-add=NET_ADMIN \
--name keepalived \
-v /etc/localtime:/etc/localtime \
-v /home/keepalived/keepalived.conf:/container/service/keepalived/assets/keepalived.conf \
-v /home/keepalived/check_nginx.sh:/container/service/keepalived/assets/check_nginx.sh \
--privileged=true \
osixia/keepalived:2.0.20 --copy-service
最后可以ping的方式,看看vip是否生效。
4.最后说明
如果要卸载vip,执行如下命令
ip addr del 192.168.50.127/32 dev em2