Nginx集群+Keepalived-docker模式

1. Nginx 高可用原理

Nginx集群+Keepalived-docker模式

部署详情

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找到

Nginx集群+Keepalived-docker模式

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
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...