时间:2022-12-15来源:www.pcxitongcheng.com作者:电脑系统城
本篇主要介绍一下 keepalived + nginx 来实现 对于nginx的高可用, 还是简单的主备模式
前面有了解keepalived 的主备的基本使用, 但是那种是针对宕机等情况 停止了keepalived 的进程实现的 vip的漂移,本篇把keepalived 添加校验nginx存活脚本 实现针对nginx的监控, 实现nginx的高可用
准备2台机器 , 把111定义为 keepalived 的 MASTER 节点
ip | keepalived |
---|---|
172.16.225.111 | MASTER |
172.16.225.110 | BACKUP |
分别在2台服务器上配置好nginx 并且修改默认的 index.html 添加上 ip 标识方便区分. 如下:
在keepalived 的配置文件中的 instance 里面配置 track_script 指定 检查nginx是否存活的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
! 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 } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
! 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 } } |
主要是这个脚本 这个脚本的内容就是 通过ps命令检查 nginx进程是否存活
,如果不存活 则尝试启动一次 则检查 ,如果还是启动不起来 则 把keepalived 关闭
, 从而让 keepalived 能检测到 并且 vip 能够漂移到其他机器
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash status=$( ps -C nginx --no-heading| wc -l) if [ "${status}" = "0" ]; then # 尝试启动一次 systemctl start nginx # 再次检查ngixn 进程 status2=$( ps -C nginx --no-heading| wc -l) if [ "${status2}" = "0" ]; then # 关闭 keepalived systemctl stop keepalived fi fi |
需要在2台机器上都配置上这个脚本
1 2 |
# 给脚本一个 可执行的权限 chmode +x /etc/keepalived/nginx_check .sh |
1 2 |
# 重启或者启动 keepalived systemctl restart keepalived |
如果重启后或者启动后 查看日志有如下抛错 , 则是 selinux 没有关闭
1 2 3 4 5 |
# 临时关闭 setenforce 0 #永久关闭 sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config |
2台机器 分别启动nginx 和 keepalived 后
访问 vip 172.16.225.200 这个vip 目前在 111 master机器上
在master机器上 把ngixn关闭
1 2 |
# 关闭 nginx . /nginx -s stop |
1 2 3 4 5 6 |
# 此时查看 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 进程
2024-07-07
myeclipse怎么导入tomcat教程2024-07-07
myeclipse如何启动tomcat2024-07-07
myeclipse如何绑定tomcat上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....
2023-03-17