centos7安装keepalived 保证Nginx的高可用

keepalived工作在虚拟路由器冗余协议 VRRP (Virtual Router Redundancy Protocol) 上,它允许一个静态 IP 在两个 Linux 系统之间进行故障转移。

环境准备:
两台虚拟机centos7,IP:192.168.213.4(backup) 192.168.213.6(master)
安装了Nginx。
关闭Firewalld、SELinux。

访问http://192.168.213.4/,效果如下:
在这里插入图片描述
访问http://192.168.213.6/,效果如下:
在这里插入图片描述

1、安装Keepalived

sudo yum install -y keepalived

备份配置文件:
keepalived的配置文件路径:/etc/keepalived
在这里插入图片描述
将配置文件备份,修改原来的配置文件 keepalived.conf

 cp keepalived.conf keepalived.conf-bk

修改配置文件:
master 192.168.213.6:

global_defs {
 
    # 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)
 router_id 192.168.213.6 
}

# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {
    # 之前编写的nginx重启脚本的所在位置
 script "/bin/keepalived/check_nginx_pid_restart.sh" 
    # 每间隔3秒执行一次
 interval 3
    # 如果脚本中的条件成立,重启一次则权重-20
 weight -20
}

# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {
    # 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)
 state MASTER
    # 绑定虚拟IP的网络接口,根据自己的机器的网卡配置
 interface ens33 
    # 虚拟路由的ID号,主从两个节点设置必须一样
 virtual_router_id 121
    # 填写本机IP
 mcast_src_ip 192.168.213.6 
    # 节点权重优先级,主节点要比从节点优先级高
 priority 100
    # 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题
 nopreempt
    # 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)
 advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 将track_script块加入instance配置块
    track_script {
        # 执行Nginx监控的脚本
  check_nginx_pid_restart
    }

    virtual_ipaddress {
        # 虚拟IP(VIP),也可扩展,可配置多个。
      192.168.213.20
    }
}

backup 192.168.213.4:

global_defs {
  
    # 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)
   router_id 192.168.213.4
}

# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {
    # 之前编写的nginx重启脚本的所在位置
     script "/bin/keepalived/check_nginx_pid_restart.sh" 
    # 每间隔3秒执行一次
     interval 3
    # 如果脚本中的条件成立,重启一次则权重-20
     weight -20
}

# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {
      # 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)
   state BACKUP
      # 绑定虚拟IP的网络接口,根据自己的机器的网卡配置
   interface ens33 
      # 虚拟路由的ID号,主从两个节点设置必须一样
   virtual_router_id 121
      # 填写本机IP
   mcast_src_ip 192.168.213.4
      # 节点权重优先级,主节点要比从节点优先级高
   priority 90
      # 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题
   nopreempt
      # 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)
   advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      # 将track_script块加入instance配置块
      track_script {
          # 执行Nginx监控的脚本
          check_nginx_pid_restart
      }
  
      virtual_ipaddress {
          # 虚拟IP(VIP),也可扩展,可配置多个。
          192.168.213.20
      }
}

check_nginx_pid_restart.sh:

#!/bin/sh
# 通过ps指令查询后台的nginx进程数,并将其保存在变量nginx_number中
nginx_number=`ps -C nginx --no-header | wc -l`
# 判断后台是否还有Nginx进程在运行
if [ $nginx_number -eq 0 ];then
    # 如果后台查询不到`Nginx`进程存在,则执行重启指令
    systemctl start nginx
    # 重启后等待1s后,再次查询后台进程数
    sleep 1
    # 如果重启后依旧无法查询到nginx进程
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        # 将keepalived主机下线,将虚拟IP漂移给从机,从机上线接管Nginx服务
        systemctl stop keepalived.service
    fi
fi

给执行文件授权:

chmod +x /bin/keepalived/check_nginx_pid_restart.sh

启动keepalived:

systemctl start keepalived

设置开机启动:

systemctl enable keepalied

查看启动状态:

systemclt status keepalied

查看ip:

ip addr

在这里插入图片描述
宿主机ping 192.168.213.20:
在这里插入图片描述
访问:http://192.168.213.20/
在这里插入图片描述

2、测试
测试场景:
2.1、停止192.168.213.6的Nginx

systemctl stop nginx

在这里插入图片描述

2.2、停止192.168.213.6的keepalived

 systemctl stop keepalived

在这里插入图片描述

2.3、启动192.168.213.6的keepalived

systemctl start keepalived

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Keepalived是一款开源的高性能、轻量级的虚拟IP(VIP)高可用软件,常用于Linux系统中实现网络服务的高可用性。它通过VRRP (Virtual Router Redundancy Protocol) 协议来监控和切换服务器角色,当主节点发生故障时,备份节点会自动接管VIP服务。 **安装Keepalived**: 1. 安装前确保你的系统已经添加了相应的软件源,如果是基于Debian/Ubuntu系统,可以通过以下命令添加官方源: ```bash sudo apt-get update sudo apt-get install keepalived ``` 2. 如果你的系统使用的是RPM包管理器(如CentOS),则执行: ```bash sudo yum install keepalived ``` 3. 安装完成后,你可以通过`keepalived -v`检查是否安装成功,并配置启动项以便在系统启动时自动运行。 **KeepalivedNginx高可用**: - **配置文件**: 编辑`/etc/keepalived/keepalived.conf`文件,定义VRRP组、虚拟IP地址、VIP绑定到哪个网卡,以及与Nginx相关的健康检查(通常使用TCP端口或HTTP响应)。 - **虚拟IP(VIP)**: 在Keepalived中为Nginx配置一个虚拟IP,这样客户端连接到这个IP,实际流量会被分发到后端的服务器。 - **健康检查**: 在配置文件中设置`track_script`或`vrrp_script`,指定Nginx的健康检查脚本,Keepalived会定期运行这些脚本来判断Nginx服务是否正常。 - **状态切换**: 当一个Nginx实例不可用时,Keepalived会根据VRRP协议切换到备份服务器,保证服务的连续性。 - **监控和日志**: 配置日志记录和通知策略,以便在服务状态变化时能够收到通知。 **相关问题--:** 1. Keepalived的配置文件主要包含哪些部分? 2. 如何在Keepalived中添加自定义的健康检查? 3. 在高可用场景下,如何避免VIP漂移导致的服务中断?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科学熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值