keepalived + nginx 实现高可用(nginx如何实现高可用)

  本篇文章为你整理了keepalived + nginx 实现高可用(nginx如何实现高可用)的详细内容,包含有keepalived+nginx高可用架构 nginx如何实现高可用 nginx和keepalived如何搭建高可用集群 nginx的keepalive keepalived + nginx 实现高可用,希望能帮助你了解 keepalived + nginx 实现高可用。

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

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

  2.准备工作

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

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

  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-headingwc -l)

  if [ "${status}" = "0" ]; then

   # 尝试启动一次

   systemctl start nginx

   # 再次检查ngixn 进程

   status2=$(ps -C nginx --no-headingwc -l)

   if [ "${status2}" = "0" ]; then

   # 关闭 keepalived

   systemctl stop keepalived

  

 

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

  

# 给脚本一个 可执行的权限

 

  chmode +x /etc/keepalived/nginx_check.sh

  

 

  

# 重启或者启动 keepalived 

 

  systemctl restart keepalived

  

 

  5.关闭 selinux

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

  

# 临时关闭

 

  setenforce 0

  #永久关闭

  sed -i s/SELINUX=enforcing/\SELINUX=disabled/ /etc/selinux/config

  

 

  6.模拟测试

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

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

  在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上了

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

  欢迎大家访问 个人博客 Johnny小屋
 

  欢迎关注个人公众号

  以上就是keepalived + nginx 实现高可用(nginx如何实现高可用)的详细内容,想要了解更多 keepalived + nginx 实现高可用的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: