欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【Linux】keepalived实现nginx高可用

【Linux】keepalived实现nginx高可用

2025/5/15 18:57:04 来源:https://blog.csdn.net/Freesia_2350/article/details/147918781  浏览:    关键词:【Linux】keepalived实现nginx高可用

环境

VIP=192.168.100.100

主机IP
nginx1192.168.100.150
nginx2192.168.100.151

部署

安装nginx()#两个nginx节点安装keepalive服务
yum -y install keepalived
systemctl enable keepalived

修改keepalive配置文件

nginx1

[root@nginx1 ~]> cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 10weight -5fall 2rise 1
}
vrrp_instance VI_1 {state MASTER# 注意网卡名interface ens33# lan口IP地址mcast_src_ip 192.168.100.150virtual_router_id 51priority 100#nopreemptadvert_int 2authentication {auth_type PASSauth_pass BLUEKING_NGINX_HA}virtual_ipaddress {192.168.100.100/24}track_script {chk_nginx}
}

nginx2

[root@kafka02 ~]> cat /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 10weight -5fall 2rise 1
}
vrrp_instance VI_1 {state BACKUP# 注意网卡名interface ens33mcast_src_ip 192.168.100.151virtual_router_id 51priority 98#nopreemptadvert_int 2authentication {auth_type PASSauth_pass BLUEKING_NGINX_HA}virtual_ipaddress {192.168.100.100/24}track_script {chk_nginx}
}

所有节点编写脚本文件

/etc/keepalived/check_nginx.sh

#!/bin/bash
process_name="nginx"
process_abs_path="/usr/local/nginx1/sbin/nginx"function is_nginx_running() {process_info=$(ps --no-header -C $process_name -o ppid,pid,args | awk '{printf $1 "|" $2 "|" ; for (i=3; i<=NF; i++) { printf "%s ", $i };printf "\n"}' | grep master)if [[ -z "$process_info" ]]; thenreturn 1elseprocess_pids=($(echo "$process_info" | awk -F'|' '{print $2}'))for _pid in "${process_pids[@]}"; doabs_path=$(readlink -f /proc/$_pid/exe)if [ "$abs_path" == "$(readlink -f "$process_abs_path")" ]; thenreturn 0fidonereturn 2fi
}err=0
for k in $(seq 1 3); dois_nginx_runningif [[ $? != "0" ]]; thenerr=$((err + 1))sleep 1elseerr=0breakfi
doneif [[ $err != "0" ]]; thenexit 1  # 返回失败状态
elseexit 0
fi
EOF

测试

在这里插入图片描述
停止1号节点的nginx,验证故障转移。

[root@kafka01 keepalived]> systemctl stop nginx
[root@kafka01 keepalived]> ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:84:bb:4d brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.100.150/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe84:bb4d/64 scope link noprefixroutevalid_lft forever preferred_lft forever

在这里插入图片描述
节点2
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词