小知识:keepalived + nginx 实现高可用方案

本篇主要介绍一下 keepalived + nginx 来实现 对于nginx的高可用, 还是简单的主备模式

%小知识:keepalived + nginx 实现高可用方案-猿站网-插图

1.概述

前面有了解keepalived主备的基本使用, 但是那种是针对宕机等情况 停止了keepalived 的进程实现的 vip的漂移,本篇把keepalived 添加校验nginx存活脚本 实现针对nginx的监控, 实现nginx的高可用

2.准备工作

准备2台机器 , 把111定义为 keepalived 的 MASTER 节点

ip keepalived 172.16.225.111 MASTER 172.16.225.110 BACKUP

分别在2台服务器上配置好nginx 并且修改默认的 index.html 添加上 ip 标识方便区分. 如下:

%小知识:keepalived + nginx 实现高可用方案-1猿站网-插图

3.配置 keepalived

在keepalived 的配置文件中的 instance 里面配置 track_script 指定 检查nginx是否存活的脚本

3.1 master (172.16.225.111)

! 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 } }

3.2 master (172.16.225.110)

! 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 } }

4.配置 nginx_check.sh

主要是这个脚本 这个脚本的内容就是 通过ps命令检查 nginx进程是否存活 ,如果不存活 则尝试启动一次 则检查 ,如果还是启动不起来 则 把keepalived 关闭, 从而让 keepalived 能检测到 并且 vip 能够漂移到其他机器

#!/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台机器上都配置上这个脚本

# 给脚本一个 可执行的权限 chmode +x /etc/keepalived/nginx_check.sh
# 重启或者启动 keepalived systemctl restart keepalived

5.关闭 selinux

如果重启后或者启动后 查看日志有如下抛错 , 则是 selinux 没有关闭

%小知识:keepalived + nginx 实现高可用方案-2猿站网-插图

# 临时关闭 setenforce 0 #永久关闭 sed -i “s/SELINUX=enforcing/SELINUX=disabled/” /etc/selinux/config

6.模拟测试

2台机器 分别启动nginx 和 keepalived 后

访问 vip 172.16.225.200 这个vip 目前在 111 master机器上

%小知识:keepalived + nginx 实现高可用方案-3猿站网-插图

在master机器上 把ngixn关闭

# 关闭 nginx ./nginx -s stop
# 此时查看 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 实现高可用方案-4猿站网-插图

总结

本篇主要介绍了 keepalived + nginx 的基本的主备配置 实现了 nginx 的高可用,核心点就是配置 nginx_check.sh脚本给keepalived 的执行, 这个nginx_check.sh 脚本内如果发现nginx 不存活 尝试启动 如果还是不存活 则直接关闭 keepalived 进程

到此这篇关于keepalived + nginx 实现高可用方案的文章就介绍到这了,更多相关keepalived + nginx 实现高可用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://www.cnblogs.com/askajohnny/p/16981112.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux仿写chmod命令

2023-3-13 22:40:10

建站知识

小知识:linux获取系统启动时间示例详解

2023-3-13 22:48:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索