Docker nginx容器高可用(Keepalived)

embedded/2024/11/23 21:41:27/

概述

Keepalived主要作用:在多个服务器上安装Keepalived并且为各个服务器的Keepalived指定相同的虚拟IP。该虚拟IP根据服务器上Keepalived配置的角色、优先级 决定出现在其中一台服务器上,当拥有虚拟IP的服务器Keepalived进程被杀死后,那么此时虚拟IP会跳到其它服务器上。

nginx容器高可用原理:根据上述所说 Keepalived特性原理,那么我们在各个nginx容器所在服务器上安装Keepalived,用户访问nginx时使用虚拟IP进行访问。使用脚本定期检查,如果拥有虚拟IP的服务器的nginx挂掉了,那么此时将该服务器上的Keepalived进程杀死,从而让虚拟IP跳转至其它服务器,从而实现故障转移,该过程对用户层面是无感知。

安装配置信息如下:

名称IPkeepalve角色
nginx1192.168.25.61
nginx1192.168.25.81
虚拟IP192.168.25.100

2.安装Keepalived

安装keepalived

yum install -y keepalived

3.修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

修改内容如下:
在这里插入图片描述

master节点配置:

! Configuration File for keepalivedglobal_defs {script_user root     # 执行检查脚本时使用的用户,别漏了!!!!!!!!!!notification_email {  # 配置邮件通知列表acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc    # 配置邮件发送人的邮件信息smtp_server 192.168.200.1    # 邮件服务器smtp_connect_timeout 30      # 设置了SMTP服务器连接超时时间,这里是30秒。router_id LVS_DEVEL          # 为Keepalived实例指定了一个唯一的路由器ID,这里是LVS_DEVEL。这个ID在集群中是唯一的,vrrp_skip_check_adv_addr     # 这个选项通常用于性能优化,它会跳过对VRRP广播地址的检查。vrrp_strict                  # 启用严格模式,这要求VRRP配置中的某些字段必须严格匹配vrrp_garp_interval 0         # vrrp_garp_interval、vrrp_gna_interval 这两个选项与GRATUITOUS ARP(免费ARP)相关,用于加速VIP的故障转移过程。这里都设置为0,表示不发送GRATUITOUS ARP。vrrp_gna_interval 0
}vrrp_script chk_nginx {script "/root/keepalived_check_nginx.sh"       # 指定keepalved nginx检查脚本路径interval 1    # 检查周期/秒
}vrrp_instance VI_1 {state MASTER            # 定义了Keepalived实例的初始状态,这里是MASTER。在HA配置中,通常会有一个主节点(MASTER)和一个或多个备节点(BACKUP)。interface ens33        # 指定了Keepalived将绑定哪个网络接口来发送和接收VRRP广播,这里是ens33。这个值需要结合你电脑实际网卡而定virtual_router_id 51   # 为VRRP实例指定了一个虚拟路由器ID,这里是51。在VRRP配置中,这个ID用于标识虚拟路由器。priority 100           # 设置了Keepalived实例的优先级,这里是100。优先级较高的实例将成为MASTER。advert_int 1           # 设置了VRRP广告间隔(秒),这里是1秒。MASTER会定期发送VRRP广告来通知BACKUP节点其存在。authentication {auth_type PASS     # 配置了VRRP认证信息,包括认证类型和认证密码。这里使用的是PASS类型auth_pass 123456   # 认证的密码}virtual_ipaddress {192.168.25.100     # 定义了要绑定的虚拟IP地址列表。这里只列出了一个地址192.168.25.100。当MASTER节点失效时,这个VIP会自动转移到BACKUP节点上。}track_script {chk_nginx         # 指定健康检查脚本}
}

slave节点配置:
和主节点的差异部分为:state 、priority

! Configuration File for keepalivedglobal_defs {script_user root     # 执行检查脚本时使用的用户,别漏了!!!!!!!!!!notification_email {  # 配置邮件通知列表acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc    # 配置邮件发送人的邮件信息smtp_server 192.168.200.1    # 邮件服务器smtp_connect_timeout 30      # 设置了SMTP服务器连接超时时间,这里是30秒。router_id LVS_DEVEL          # 为Keepalived实例指定了一个唯一的路由器ID,这里是LVS_DEVEL。这个ID在集群中是唯一的,vrrp_skip_check_adv_addr     # 这个选项通常用于性能优化,它会跳过对VRRP广播地址的检查。vrrp_strict                  # 启用严格模式,这要求VRRP配置中的某些字段必须严格匹配vrrp_garp_interval 0         # vrrp_garp_interval、vrrp_gna_interval 这两个选项与GRATUITOUS ARP(免费ARP)相关,用于加速VIP的故障转移过程。这里都设置为0,表示不发送GRATUITOUS ARP。vrrp_gna_interval 0
}vrrp_script chk_nginx {script "/root/keepalived_check_nginx.sh"       # 指定keepalved nginx检查脚本路径interval 1    # 检查周期/秒
}vrrp_instance VI_1 {state BACKUP			# 定义了Keepalived实例的初始状态,这里是MASTER。在HA配置中,通常会有一个主节点(MASTER)和一个或多个备节点(BACKUP)。interface ens33         # 指定了Keepalived将绑定哪个网络接口来发送和接收VRRP广播,这里是ens33。这个值需要结合你电脑实际网卡而定virtual_router_id 51    # 为VRRP实例指定了一个虚拟路由器ID,这里是51。在VRRP配置中,这个ID用于标识虚拟路由器。priority 90            # 设置了Keepalived实例的优先级,这里是100。优先级较高的实例将成为MASTER。advert_int 1            # 设置了VRRP广告间隔(秒),这里是1秒。MASTER会定期发送VRRP广告来通知BACKUP节点其存在。authentication {auth_type PASS      # 配置了VRRP认证信息,包括认证类型和认证密码。这里使用的是PASS类型auth_pass 123456    # 认证的密码}virtual_ipaddress {192.168.25.100      # 定义了要绑定的虚拟IP地址列表。这里只列出了一个地址192.168.25.100。当MASTER节点失效时,这个VIP会自动转移到BACKUP节点上。}track_script {chk_nginx         # 指定健康检查脚本}
}

3.添加keepalived检查脚本

vim /root/keepalived_check_nginx.sh

文件内容如下:

#!/bin/bashif [ $(docker ps | grep nginx |  grep Up | wc -l) -eq  0 ];thenpkill keepalive
elif [ $(ps -C keepalived --no-header | wc -l) -eq 1 ];thensystemctl start keepalived
fi

给脚本添加执行权限(不要漏了这步骤)

chmod +x /root/keepalived_check_nginx.sh

4. 启动keepalived

systemctl enable keepalived.service --now

查看启动状态:

systemctl status keepalived.service

查看keepalived运行日志:

journalctl -u keepalived.service

5.验证

# 查看IP
ip addr

发现虚拟IP 落在 master服务器上。
在这里插入图片描述


访问 http://虚拟ip:80,效果如下
在这里插入图片描述


把主节点的nginx进行关闭,检查虚拟IP是否跳转到备服务器上

#主节点执行关闭nginx容器命令docker stop nginx

如下图,发现虚拟IP已经跳转至备服务器上。
在这里插入图片描述
再次访问 http://虚拟ip:80,效果如下
在这里插入图片描述


至此,大功告成~~~~


http://www.ppmy.cn/embedded/139950.html

相关文章

「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解

本篇将介绍 Cangjie 中的字符串类型,包括字符串的定义、字面量形式、插值表达、常用操作及应用场景,帮助开发者熟练掌握字符串的使用。 关键词 字符串类型定义字符串字面量插值字符串字符串拼接常用操作 一、字符串类型概述 在 Cangjie 中,…

长文解读:OSAID 1.0,全球首个开源AI标准,审视探讨其对AI行业实践开源的影响

引言 在人工智能(AI)的快速发展中,开源已经成为推动技术创新和知识共享的重要力量。随着AI技术的广泛应用,确保其开放性、透明性和可访问性变得至关重要。在这样的背景下,OSAID 1.0(Open Source AI Defini…

深度学习:GPT-1的MindSpore实践

GPT-1简介 GPT-1(Generative Pre-trained Transformer)是2018年由Open AI提出的一个结合预训练和微调的用于解决文本理解和文本生成任务的模型。它的基础是Transformer架构,具有如下创新点: NLP领域的迁移学习:通过最…

RAG与微调:大模型落地的最佳路径选择(文末赠书)

一、大模型技术发展现状 自2022年底ChatGPT掀起AI革命以来,大语言模型(LLM)技术快速迭代发展,从GPT-4到Claude 2,从文心一言到通义千问,大模型技术以惊人的速度发展。然而,在企业实际应用场景中…

圣诞节秘诀

🕰️你想在2024年圣诞节脱颖而出吗?利用我们的数据洞察,发现今年最受欢迎的礼物!无论是在亚马逊、速卖通、Shopify还是直销平台上,我们的排行榜都将帮助您找到最畅销和最受欢迎的产品。立即优化您的库存,以…

Nexus搭建go私有仓库,加速下载go依赖包

一、搭建go私库 本文我们梳理一下go依赖包的私库搭建以及使用。 它只分为proxy和group两种仓库,这一点和maven仓库有所不同。 1、创建Blob Stores 为了区分不同的私库依赖包,存储的位置分隔开。 2、新建go proxy官网 Remote storage:htt…

TM1可视化解决方案:企业增效降本的智控大脑

您是否还费时费力整合从各部门收集不同来源的数据资料,或是分析财务数据时在Excel和各可视化软件之间来回切换? 让我们看看咨询顾问小C (Cubewiser) 如何使用 TM1 系统的展示平台—— Apliqo UX 对企业运营成本及费用进行智能管控。 预实分析&#xff…

安装多个nodejs版本(nvm)

一 安装nvm&#xff08;Node Version Manager&#xff09; 安装包已上传 二 安装nodejs 使用nvm install <版本号> 可能会安装失败&#xff0c;需要手动下载 nodejs下载地址 解压后放到nvm目录中 三 npm 设置国内镜像加速 使用国内的 npm 镜像可以显著提升包的…