Nginx +keepalived 实现Nginx高可用架构

本文介绍了如何在Centos7.9环境中实现Nginx和Keepalived的高可用负载均衡,包括安装Nginx和Keepalived,配置VRRP,以及使用监控脚本确保在Nginx故障时VIP能快速切换到备用节点,保障网站的稳定运行。
摘要由CSDN通过智能技术生成

背景:

负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行。

由于业务扩展,网站的访问量不断加大,负载越来越高。现需要在web前端放置nginx负载均衡,同时结合keepalived对前端nginx实现HA高可用。

当一台nginx故障时,keepalived迅速检测出nginx服务状态并把vip主动漂移到另外一个节点上提供服务,实则用户是通过vip去访问后端的业务。

实验环境:

本次使用2台Centos 7.9的机器来模拟Nginx高可用架构的实现过程

        Hostname              IP               VIP
  Nginx_keep1
  Nginx_keep2

安装nginx服务

参考链接中的方法

Nginx 服务安装-CSDN博客

安装keepalived服务

keepalived 原理

Keepalived 是Linux下面实现VRRP备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时VIP瞬间无缝交接。

安装 keepalived 

vrrp_script check_nginx_status {    #检查nginx服务是否运行
script "/home/nginx_keep/check_nginx_status.sh"
interval 2                       #脚本执行间隔,每2秒检测一次
weight 2
}


! Configuration File for keepalived

global_defs {

   router_id rancher              #主机名
}

vrrp_instance VI_1 {
    state MASTER                  #主节点写MASTER  备节点写BACKUP
    interface ens33               # 写主机真是网卡的名字  ip addr查看
    virtual_router_id 51          # 主备信息一致
    priority 100                  #优先等级 ,数字随便只要主节点的数字大于备节点上的就可以
    advert_int 1
    authentication {
        auth_type PASS            #主备信息一致
        auth_pass 1111            #主备信息一致
    }
    virtual_ipaddress {
        192.168.200.16            #虚拟机ip 简称vip 主备节点上填写一致
    }
}
~

监控脚本:


监控脚本原理:当系统连续监控nginx服务出现故障时,这个时候就把本机的keepalived 服务器的进程pid号给杀掉,然后等vip迅速漂移到另外一个节点上对外提供正常服务,从而减少服务影响时间。

根据自己的环境情况来修改shell脚本情况

#!/bin/bash  
  
# Nginx进程名称  
NGINX_PROCESS_NAME="nginx"  
# Keepalived进程名称  
KEEPALIVED_PROCESS_NAME="keepalived"  
  
# 检查Nginx进程是否存在  
function check_nginx_status() {  
    local nginx_pid=$(pgrep -f "$NGINX_PROCESS_NAME")  
    if [ -z "$nginx_pid" ]; then  
        echo "Nginx is not running. Killing Keepalived..."  
        # 杀死Keepalived进程  
        pkill -f "$KEEPALIVED_PROCESS_NAME"  
        return 1  
    else  
        echo "Nginx is running."  
        return 0  
    fi  
}  
  
# 无限循环检查Nginx状态  
while true; do  
    check_nginx_status  
    if [ $? -ne 0 ]; then  
        # 可以选择发送邮件或执行其他操作来通知管理员  
        echo "Notification: Nginx is down and Keepalived has been killed." | mail -s "Nginx Down Alert" admin@example.com  
    fi  
    sleep 5  # 每5秒检查一次  
done
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值