Nginx集群+Keepalived-docker模式
1. Nginx 高可用原理

部署详情
VIP+Keepalived保障了一条线路是可用的,一旦该线路宕机后,VIP会自动切换到另外一条上,即我们常说的主备模式,达到高可用的目的。
需要配合nginx检测脚本,防止服务器未故障,但是Nginx异常退出,导致VIP未切换,一直无法给用户响应。
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。
注意点:virtual_route_id与authentication主备需要填写一样。有些网络环境IP一种宝贵的资源,VIP也是需要进行申请的。
关于网卡信息,可以通过ip addr找到

ip addr
- check_nginx.sh 脚本如下
#!/bin/bash
http_status=`curl -sIL -w "%{http_code}
" -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
--restart unless-stopped
osixia/keepalived:2.0.20 --copy-service
最后可以 ping 的方式,看看 vip 是否生效。
4. 删除 VIP
如果要卸载 vip,执行如下命令
ip addr del 192.168.50.127/32 dev em2
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...