问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Nginx + Keepalived 实现高可用架构

创作时间:
作者:
@小白创作中心

Nginx + Keepalived 实现高可用架构

引用
CSDN
1.
https://blog.csdn.net/weixin_39041354/article/details/136891247

负载均衡技术对于一个网站尤其是大型网站的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 服务安装

安装keepalived服务

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

Keepalived配置

vrrp_script check_nginx_status {
    script "/home/nginx_keep/check_nginx_status.sh"
    interval 2
    weight 2
}

global_defs {
    router_id rancher
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.200.16
    }
}

监控脚本

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

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

#!/bin/bash

NGINX_PROCESS_NAME="nginx"
KEEPALIVED_PROCESS_NAME="keepalived"

function check_nginx_status() {
    local nginx_pid=$(pgrep -f "$NGINX_PROCESS_NAME")
    if [ -z "$nginx_pid" ]; then
        echo "Nginx is not running. Killing Keepalived..."
        pkill -f "$KEEPALIVED_PROCESS_NAME"
        return 1
    else
        echo "Nginx is running."
        return 0
    fi
}

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
done
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号