docker 容器部署nginx+keepalived实现高可用

news/2025/4/2 8:53:03/文章来源:https://www.cnblogs.com/ggborn-001/p/18802818

准备两台机器分别部署nginx和keepalived,事先部署好docker容器环境。

主机名 ip地址 部署容器
park2-0007 10.9.102.62 nginx+keepalived
park2-0008 10.9.102.63 nginx+keepalived

分别启动两个nginx容器

docker run -d  \--name my-nginx -p 8005:8005  \-v ./nginxdir/default.conf:/etc/nginx/conf.d/default.conf  \-v ./nginxdir/index.html:/usr/share/nginx/html/index.html  \10.9.102.61:5000/nginx:1.27.2

  

分别访问看看

在启动 keepalived容器之前先把配置写好

[root@park2-0007 keepalived]# cat keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTERinterface eth1  # 根据实际网络接口修改virtual_router_id 51priority 51advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.9.102.244  # 替换为实际的虚拟 IP}
}
[root@park2-0008 keepalived]# cat keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTERinterface eth1  # 根据实际网络接口修改virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.9.102.244  # 替换为实际的虚拟 IP}
}

分别在两台机器启动keepalived容器

docker run -d  \--copy-service \--name keepalived   \--network host   --cap-add=NET_ADMIN  \-v ./keepalived.conf:/container/service/keepalived/assets/keepalived.conf  \swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/osixia/keepalived:2.0.20

可以看到vip在park2-0008的eth1上启动了,跟我们配置的一样。

好了,我们现在访问10.9.102.244:8005这个vip+端口应该看到的就是hello park2-0008

 

 现在我们手动停掉park2-0008上的keepalived容器,模拟0008上nginx故障看看效果

 可以看到park2-0008上的vip漂移走了

 惊不惊喜,vip漂移到了park2-0007上。那我们再通过vip访问看一下

翻车了,不知道为啥vip不通了,刚刚还能访问的。不管了,思路就是这样。

最后在补充一个检查脚本,放在cronjob中每两秒执行检查一次。注意两个节点上都要有这个脚本,同时脚本中的ip写本机的。

#!/bin/bash
# 向 Nginx 发送 HTTP 请求,检查返回状态码
response=$(curl -s -o /dev/null -w "%{http_code}" http://nginxip:8005)if [ "$response" -ne 200 ]; then# 如果状态码不是 200,停止 Keepalived/etc/init.d/keepalived stop
fi

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GraphRAG介绍

一、RAG原理 用户输入了一个指令Instruct,RAG将其与Document store(向量库)中的预存文本进行匹配,然后将符合条件的筛选文本(Retrieved Documents)与指令Instruct,共同合成为一个增强型的Prompt,并将该增强型Prompt喂给大模型,最终大模型根据此增强型Prompt,生成最终的Re…

清理Docker数据卷volumes

原文链接地址 清理Docker数据卷volumes1.查看磁盘使用 2.查看Docker数据卷及磁盘使用情况 3.Docker 删除无用数据卷今天突然发现跑服务器的磁盘满了。记录下进入服务查看到Docker-Overlay2磁盘空间的清理方法:清理Docker的数据卷volumes Docker在长时间使用的情况下,经常需…

Web开发SpringBoot流程性的学习----回顾补充1

HTML(HyperText Markup Language)**:超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言HTML标签都是预定义好的。例如:使用展示超链接,展示图片,展示视频。 HTML代码直接在浏览器中运…

【我的青春coding物语果然有问题!】第四次上机卡题复盘

最近事多 今天才写出来 实际做的时候变量名犯了很多很唐的错误 这里就不一一说了 我们看一下今天要讲的题目 05:正整数的任意进制转换 将 p 进制 n 转换为 q 进制。p 和 q 的取值范围为[2,36],其中,用到的数码按从小到大依次为:0,1,2,3,4,5,6,7,8,9,A,B,...,Z…

【PCIE711-214】基于PCIe总线架构的4路HD-SDI/3G-SDI视频图像模拟源

产品概述 PCIE711-214是一款基于PCIE总线架构的4路SDI视频模拟源。该板卡为标准的PCIE插卡,全高尺寸,适合与PCIE总线的工控机或者服务器,板载协议处理器,可以通过PCIE总线将上位机的YUV 422格式视频数据下发通过SDI接口播放出去,从而模拟SDI协议标准的视频流。该板卡支持4…

3 Packet (Mbuf) Library

Packet(MBuf)库概述: 这个库提供了分配和释放缓冲区(mbuf)的能力,DPDK 应用可以使用这些缓冲区来存储各种类型的数据,比如:网络数据包(最常见) 控制信息(control data) 事件(events) 或其他需要临时存储的数据这些 mbuf 缓冲区的底层是通过 Mempool 管理的,即使…

3.31 计算机实践-数字逻辑电路

带使能端的D触发器 之前学的门控D锁存器加了一个时钟周期CLK(使得只有时钟发生转换的时候才能写入数据)再加一个使能端(使得只有EN=1的时候才能正确写入,否则就把当前的输出结果再输入给D端,保持触发器当前输出)4位行波加法计数器 T触发器(使得每一个时钟周期之后就会有…

2025年天梯赛补题记录——九宫格

九宫格输入样例: 3 5 1 9 2 8 3 4 6 7 7 2 8 9 6 4 3 5 1 3 4 6 5 7 1 9 2 8 8 9 2 1 4 5 7 3 6 4 7 3 6 2 8 1 9 5 6 5 1 7 3 9 2 8 4 9 3 4 8 1 6 5 7 2 1 6 7 3 5 2 8 4 9 2 8 5 4 9 7 6 1 3 8 2 5 4 9 7 1 3 6 7 9 6 5 1 3 8 2 4 3 4 1 6 8 2 7 9 5 6 8 4 2 7 1 3 5 9 9 1…

【Python编程】Python 参数传递的强制规则你必须掌握

场景 外卖点单时,本来想在“备注”里写“不要辣”,结果不小心输错位置,填在了“地址”栏。骑手到了,给你打电话:“请问您是在‘不要辣小区’门口等我吗?”是不是听起来有点好笑? 生活里,错误填写表单位置尚且令人哭笑不得;而在代码世界里,如果参数用错了位置,后果往…

基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印):设置SNR=8db设置SNR=20db整体波形效果:仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要 2.1 2ASK调制解调2ASK调制解调是一种数字调制解调技术,它是基于ASK调制的一种数字调制方式。ASK调制…

15.文件和流

本章目标Java中的文件 流 字节流 字符流本章内容 一、Java中的文件 1、文件的介绍 Java中文件操作主要通过File类来实现,File类关心的是磁盘上存储的文件File类并不是只代表文件 可以表示特定文件的名称,这里的名称就是路径 可以是某个目录。2、路径的表示方式: 因为在Java中…