keepalive + nginx 实现高可用

本篇主要介绍一下 keepalive + Nginx 来实现 对于nginx的高可用, 还是简单的主备模式

keepalive + nginx 实现高可用

1.概述

前面有了解keepalive 的主备的基本使用, 但是那种是针对宕机等情况 停止了keepalive 的进程实现的 vip的漂移,本篇把keepalive 添加校验nginx存活脚本 实现针对nginx的监控, 实现nginx的高可用


2.准备工作

准备2台机器 , 把111定义为 keepalive 的 MASTER 节点

ip keepalived
172.16.225.111 MASTER
172.16.225.110 BACKUP

分别在2台服务器上配置好nginx 并且修改默认的 index.html  添加上 ip 标识方便区分. 如下:

keepalive + nginx 实现高可用



3.配置 keepalived

在keepalived 的配置文件中的 instance 里面配置 track_script 指定 检查nginx是否存活的脚本


3.1 master (172.16.225.111)

! Configuration File for keepalived

global_defs {
  router_id LB111
}

vrrp_script chk_nginx {
  # 具体的脚本
  script "/etc/keepalived/nginx_check.sh"
  interval 2 # 2s执行一次
  weight -20 # 失败一次 则优先级 -20
}

vrrp_instance VI_1 {
   state MASTER
   interface ens160
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
  }
   virtual_ipaddress {
      172.16.225.200
  }
   # 指定脚本
   track_script {
     chk_nginx
  }
}


3.2 master (172.16.225.110)

! Configuration File for keepalived

global_defs {
  router_id LB111
}

vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
   state BACKUP
   interface ens160
   virtual_router_id 51
   priority 90
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
  }
   virtual_ipaddress {
      172.16.225.200
  }

   track_scrip {
     chk_nginx
  }
}


4.配置 nginx_check.sh

主要是这个脚本 这个脚本的内容就是 通过ps命令检查 nginx进程是否存活 ,如果不存活 则尝试启动一次 则检查 ,如果还是启动不起来 则 把keepalived 关闭, 从而让 keepalived 能检测到 并且 vip 能够漂移到其他机器


#!/bin/bash
status=$(ps -C nginx --no-heading|wc -l)
if [ "${status}" = "0" ]; then
           # 尝试启动一次
          systemctl start nginx
       # 再次检查ngixn 进程
       status2=$(ps -C nginx --no-heading|wc -l)
       if [ "${status2}" = "0" ]; then
               # 关闭 keepalived
              systemctl stop keepalived
       fi
fi

需要在2台机器上都配置上这个脚本


# 给脚本一个 可执行的权限
chmode +x /etc/keepalived/nginx_check.sh


# 重启或者启动 keepalived 
systemctl restart keepalived


5.关闭 seLinux

如果重启后或者启动后 查看日志有如下抛错 , 则是 selinux 没有关闭

keepalive + nginx 实现高可用


# 临时关闭
setenforce 0

#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config



6.模拟测试

2台机器 分别启动nginx 和 keepalive 后

访问 vip 172.16.225.200 这个vip 目前在 111 master机器上

keepalive + nginx 实现高可用

在master机器上 把ngixn关闭

# 关闭 nginx 
./nginx -s stop


# 此时查看 keepalived 的状态就是 dead了
systemctl status keepalived

● keepalived.service - LVS and VRRP High Availability Monitor
  Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
  Active: inactive (dead)


再次访问vip  172.16.225.200 , 可以看到 vip 已经跑到了 backup机器110上了

keepalive + nginx 实现高可用


总结

本篇主要介绍了 keepalive + nginx 的基本的主备配置 实现了 nginx 的高可用,核心点就是配置 nginx_check.sh脚本给keepalive 的执行, 这个nginx_check.sh 脚本内如果发现nginx 不存活 尝试启动 如果还是不存活 则直接关闭 keepalive 进程


原文始发于微信公众号(Johnny屋):keepalive + nginx 实现高可用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/89756.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!