Keepalived搭配Nginx的高可用策略验证和实操

该文详细介绍了如何使用Nginx作为代理服务器,结合Keepalived实现高可用性,以及如何配置Tomcat集群。通过二进制安装和Docker容器安装Nginx,然后设置Keepalived的配置文件,包括VRRP脚本和虚拟IP地址。在主、备用节点间进行配置,并编写心跳脚本来监控Nginx状态。最终,通过启动服务并验证虚拟IP的访问和故障转移,确保了在主节点宕机时能平滑切换到备份节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

临头一砖——代理服务器Nginx
Nginx策略搭配Tomcat集群实操手册(二进制安装和Docker容器安装)
Keepalived搭配Nginx的高可用策略验证和实操
Keepalived搭配Nginx的高可用策略验证遇到的问题以及解决方案

1. 高可用架构

在这里插入图片描述

保障Nginx的稳定,主Nginx是否宕机。

2. 启动集群Tomcat

/e3base/tomcat/bin/startup.sh

在这里插入图片描述

3. 安装备份节点Nginx

备份的Nginx节点为e3base04,主节点为e3base03。

在这里插入图片描述

在这里插入图片描述

PS(make install 是默认安装到root用户路径下面:/usr/local/nginx,修改的配置文件也在这个下面修改才有作用)。

在这里插入图片描述

4. 安装KeepAlive

安装在/usr/local目录下

在这里插入图片描述

4.1. 改名

在这里插入图片描述

4.2../configure和make install

在这里插入图片描述

4.3. Make install

在这里插入图片描述

5. 配置

参考博客:https://www.jianshu.com/p/426b3261f9d0

在这里插入图片描述

5.1. 修改Keepalived.conf

! Configuration File for keepalived

 

global_defs {

 \#  notification_email {

 \#   acassen@firewall.loc

 \#   failover@firewall.loc

 \#   sysadmin@firewall.loc

 \#  }

 \#  notification_email_from Alexandre.Cassen@firewall.loc

 \#  smtp_server 192.168.200.1

 \#  smtp_connect_timeout 30

  router_id LVS_DEVEL

 \#  vrrp_skip_check_adv_addr

 \#  vrrp_strict

 \#  vrrp_garp_interval 0

 \#  vrrp_gna_interval 0}

vrrp_script chk_nginx {

​    script "/etc/keepalived/nginx_check.sh"

​    interval 2

​    weight -20}

vrrp_instance VI_1 {

  state MASTER # 标识为主服务

  interface ens33 #绑定虚拟机的IP

  virtual_router_id 51 # 虚拟路由id,和从机保持一致

  \#mcast_src_ip 192.168.126.2  #本机ip

  priority 100 #权重,需要高于从机

  advert_int 1

  authentication {

​    auth_type PASS

​    auth_pass 1111

  }

  track_script {

​        chk_nginx ## 执行 Nginx 监控的服务}

  virtual_ipaddress {192.168.136.99 #/32 brd 255.255.255.0 dev ens33 label ens33:vip #虚拟IP地址#     192.168.200.17#     192.168.200.18

  }}

参数不太了解

在这里插入图片描述

设置好虚拟ip(100),和网卡

5.2. 分发从机

在这里插入图片描述

5.3. 从机

5.4. 检验

出现附录的两个缺少依赖的问题。

无报错。

在这里插入图片描述

5.5. Make install

略。(SCP已经安装好的文件夹其实无需再安装)。

5.6. 从机配置

! Configuration File for keepalived

 

global_defs {#  notification_email {#   acassen@firewall.loc#   failover@firewall.loc#   sysadmin@firewall.loc#  }#  notification_email_from Alexandre.Cassen@firewall.loc#  smtp_server 192.168.200.1#  smtp_connect_timeout 30

  router_id dreamer1#  vrrp_skip_check_adv_addr#  vrrp_strict#  vrrp_garp_interval 0#  vrrp_gna_interval 0}

vrrp_script chk_nginx {

​    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径

​    interval 2 ## 检测时间间隔

​    weight -20 ## 如果条件成立,权重-20}

 

vrrp_instance VI_1 {

  state BACKUP

  interface ens33

  virtual_router_id 51

  \#mcast_src_ip 192.168.136.4 ## 本机 IP 地址 

  priority 90

  advert_int 1

  authentication {

​    auth_type PASS

​    auth_pass 1111

  }

​    track_script {

​        chk_nginx ## 执行 Nginx 监控的服务}

  virtual_ipaddress {192.168.136.99

​    \#192.168.200.17

​    \#192.168.200.18

  }}

修改其实是修改了:全局设置的ID和state跟权限90

配置来自于:https://www.jianshu.com/p/ac538fa4c175

5.7. 创建脚本文件目录

在这里插入图片描述

5.8. 编写心跳脚本

#!/bin/bash

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}" = "0" ]; then

  /usr/sbin/nginx

  sleep 2

  counter=$(ps -C nginx --no-heading|wc -l)

  if [ "${counter}" = "0" ]; then

​    /etc/init.d/keepalived stop

  fi

fi

在这里插入图片描述

5.9. 脚本解读

Nginx停下来了首先会重启本地nginx服务,起不了再中止掉keepalived服务,让渡机会给备选节点。

参考博客:定义变量,此变量为检查nginx进程脚本,如果进程为0,则启动nginx服务,再次检查nginx服务,如果仍没启动 ,杀掉所有keepalived的进程。

5.10. 启动keepalived

先启动nginx和Tomcat集群。

到/usr/local/sbin/下面执行keepalived命令,我找了好久,泪目T T

/usr/local/sbin/./keepalived

在这里插入图片描述

5.11. 放入开机启动项

cp /usr/local/sbin/./keepalived /etc/init.d/

在这里插入图片描述

5.12. nginx启动命令放入/usr/sbin/nginx

cp /usr/local/nginx/sbin/nginx /usr/sbin/nginx

在这里插入图片描述

5.13. 输入虚拟网址检验

主机集群为:

192.168.106.128

192.168.106.129

192.168.106.130

虚拟IP:

192.168.106.100

在这里插入图片描述

6. 验证Nginx高可用特性

6.1. 执行监听脚本文件

nohup /etc/keepalived/nginx_check.sh &

在这里插入图片描述

6.2. 宕掉主节点Nginx

主节点是:192.168.128

在这里插入图片描述

实操是直接关闭了e3base03主机,因为脚本写了,停下来了首先会重启本地nginx服务,起不了再中止掉keepalived服务,让渡机会给备选节点。

6.3. 验证虚拟IP是否可以访问

在这里插入图片描述

6.4. ARP检验MAC地址

arp -a 192.168.106.100

在这里插入图片描述

7. 快捷命令

/e3base/tomcat/bin/startup.sh

/usr/local/nginx/sbin/./nginx -c /usr/local/nginx/conf/nginx.conf

/usr/local/sbin/keepalived

nohup /etc/keepalived/nginx_check.sh &

/usr/local/nginx/sbin/./nginx -s stop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长臂人猿

客官们众筹请博主喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值