高可用集群keepalived---实战案例1

目录

一、环境:

二、文件的配置

1、server1

下载keepalived

创建etc下的keepalived目录,编辑配置文件

 开机启动keepalived

安装Nginx

启动keepalived

2、server2

下载keepalived

创建etc下的keepalived目录,编辑配置文件

 开机启动keepalived

安装Nginx

启动keepalived

三、测试

访问VIP(对外虚拟ip)http://192.168.229.110

拔掉master(server1)的网线。

四、关于keepalived对nginx状态未知的问题

添加nginx监控脚本

赋予脚本权限

启动监控脚本

重启keepalived

nginx状态测试


一、环境:

初识keepalived,实现web服务器的高可用集群。

准备两台虚拟机

Server1: 192.168.229.11

Server2: 192.168.229.12

关闭防火墙、selinux,配置yum源 等步骤请参考:

关闭防火墙,selinux,配置源

二、文件的配置

1、server1

下载keepalived

yum -y install keepalived

创建etc下的keepalived目录,编辑配置文件

vim /etc/keepalived/keepalived.conf

配置文件示例:

! Configuration File for keepalived
global_defs {router_id 1                            #设备在组中的标识,设置不一样即可}#vrrp_script chk_nginx {                        #健康检查
# script "/etc/keepalived/ck_ng.sh"     #检查脚本
# interval 2                            #检查频率.秒
# weight -5                             #priority减5
# fall 3                                        #失败三次
# }#高可用集群的组员设置
vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。state MASTER                        #主或者从状态interface ens33                     #监控网卡mcast_src_ip 192.168.229.11         #心跳源IP,当前主机的ipvirtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分priority 100                        #优先级 数值越大优先级越高advert_int 1                        #心跳间隔 单位是秒authentication {                    #秘钥认证(1-8位)auth_type PASSauth_pass 123456}virtual_ipaddress {                 #VIP 虚拟ip192.168.229.100/24}#  track_script {                       #引用脚本
#       chk_nginx
#    }}

 开机启动keepalived

systemctl enable keepalived.service

安装Nginx

yum -y install nginxsystemctl enable nginx.service    #开机自启动
systemctl start nginx.service     #开启

修改一下nginx默认页面内容,方便更直观的感受高可用性,内容可以web111111为例

vim /usr/share/nginx/html/index.html

启动keepalived

systemctl start keepalived.service

使用 ip a 命令查看

2、server2

下载keepalived

yum -y install keepalived

创建etc下的keepalived目录,编辑配置文件

vim /etc/keepalived/keepalived.conf

配置文件示例:

BACKUP服务器的配置需要几处修改

state MASTER改为  state BACKUP
mcast_src_ip 192.168.229.11改为backup服务器实际的IP mcast_src_ip 192.168.229.12
priority 100改为priority 99

! Configuration File for keepalived
global_defs {router_id 2}#vrrp_script chk_nginx {
# script "/etc/keepalived/ck_ng.sh"
# interval 2
# weight -5
# fall 3
# }vrrp_instance VI_1 {state BACKUPinterface ens33mcast_src_ip 192.168.229.12virtual_router_id 55priority 99advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.229.100/24}#  track_script {
#       chk_nginx
#    }}

 开机启动keepalived

systemctl enable keepalived.service

安装Nginx

yum -y install nginxsystemctl enable nginx.service    #开机自启动
systemctl start nginx.service     #开启

修改一下nginx默认页面内容,方便更直观的感受高可用性,内容可以web22222为例

vim /usr/share/nginx/html/index.html

启动keepalived

systemctl start keepalived.service

使用 ip a 命令查看

在此对比可发现,在server1主服务器中可以看到192.168.229.100这个对外虚拟ip,而在server2从服务器中看不到192.168.229.100这个对外虚拟ip,这是因为

1.server1 拥有虚拟 IP,因为它是主服务器。

2.server2 不拥有虚拟 IP,因为它是备用状态。

这种设计保证了服务的连续性和高可用性。

三、测试

访问VIP(对外虚拟ip)http://192.168.229.110

拔掉master(server1)的网线。

访问VIP(对外虚拟ip)http://192.168.229.110,观察网页已经切换

再查看一下server2的ip,发现对外虚拟ip已切换

四、关于keepalived对nginx状态未知的问题

关闭master的nginx服务 。systemctl stop nginx 继续访问VIP,就会出现错误,不能够切换到从服务器上,原因是keepalived监控的是接口IP状态。无法监控nginx服务状态,因此需要编辑一个脚本监控nginx的状态。

添加nginx监控脚本

server1和server2一样都添加nginx脚本

vim /etc/keepalived/ck_ng.sh

脚本内容示例:

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测systemctl start nginxsleep 5counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换systemctl stop keepalived fi
fi

赋予脚本权限

chmod +x /etc/keepalived/ck_ng.sh

启动监控脚本

清除掉配置文件中的注释

vim /etc/keepalived/keepalived.conf

重启keepalived

systemctl restart keepalived.service

nginx状态测试

因为脚本中有拉起nginx的语句,测试时可以将脚本文件位置进行改变。观察脚本的效果即可。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件企业毛利率正在变得越来越低

软件开发毛利率逐渐降低的现象可能受到多种因素的影响: 市场竞争加剧:随着软件行业的快速发展,市场上的软件产品和服务越来越多,竞争也越来越激烈。为了在市场上保持竞争力,软件企业可能不得不降低价格,这直…

【word密码】word怎么限制格式,但可以修改文字?

想要限制word文件中文字的格式,但是又希望别人能够删除、输入文字,想要实现这种设置我们可以对word文件设置限制编辑。 点击word文件工具栏中的审阅 – 限制编辑,勾选上【限制对选定的样式设置格式】 然后在弹出的提示框中,输入我…

LDRA Testbed(TBrun)软件单元测试_常见问题及处理

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成(自动静态分析并用邮件自动发送分析结果) LDRA Testbed软件静态分析_软件质量度量 LDRA Testbed软件…

太爱这5本书了,建议所有大模型人去翻烂它❗

要说现在最热门的技术,可谓非大模型莫属! 不少小伙伴都想要学习大模型技术,转战AI领域,以适应未来的大趋势,寻求更有前景的发展~~ 然而,在学习大模型技术这条道路上,却不知道如何进行系统的学…

DQL学习

一、基础查询 1.查询多个字段 select 字段列表 from 表名; select * from 表名;-- 查询所有数据 但不建议使用!!!! 2.去除重复记录 select DISTINCT 字段列表 from 表名; 3.起别名 as;as也可以省略但中间要加空…

关于宝塔PHP getenv无法获取环境变量问题解决办法

今天有用ThinkPHP8接入阿里云OSS时,需要用的用到getenv()来读取环境变量,因为新版OSS SDK是用环境变更来设置AK的。 现象 正常执行PHP文件,可以取到环境变量;但是通过nginxphp-fpm调用脚本取到不到环境变量 原因 php-fpm为了防止…

车辆检测系统源码分享

车辆检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

算法4-----综合训练(4)

一:单词搜索 题目: 给定一个m*n的二位字符网格和一个字符串单词。如果单词存在于网格中,返回true,不然,返回false。 注意:单词必须按照字母顺序,通过相邻的单元格内的字母构成,同…

停车场管理系统的设计与实现

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统停车场管理系统信息管理难度大,容错率低&…

使用豆包Marscode 创建了一个”天气预报“小应用

以下是「豆包MarsCode 体验官」优秀文章,作者一拳干爆显示器。 前言 本文介绍了我第一次使用我在MarsCode IDE制作了一款天气预报的应用 其中在正文的头部以及结语部分发表了我在MarsCode编程中的体验情况,而正文的中间主要是我项目制作的细节步骤 豆…

SPWM正弦波控制

目录 前言一、PWM简介二、SPWM基本原理2.1 SPWM简介2.2 SPWM控制方法2.2.1 直接计算法2.2.2 自然采样法2.2.3 谐波法 2.3 SPWM的注意点2.3.1 死区效应2.3.2 过调制2.3.3 转矩与转速控制 三、SPWM实现四、补充 前言 本文主要介绍SPWM原理及C语言单片机的实现 一、PWM简介 PWM是P…

Vue 响应式监听 Watch 最佳实践

一. 前言 上一篇文章我们学习了 watch 的基础知识,了解了它的基本使用方法及注意事项,本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章: 详解 Vue 中 Watch 的使用方法及注意事项https://bl…

ARM单片机的中断详细过程(重要)

ARM单片机的中断详细过程(重要) 一、ARM异常中断 ARM的异常(中断源)总共分为三类(八种): 三类: (1)执行指令引起的直接异常:软件中断&#xff…

0920作业+思维导图

一、 写一个shell脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dirdir下创建dir1和dir2把当前目录下的所有文件拷贝到dir1中,把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz再把dir2.tar.xz移动到…

13.第二阶段x86游戏实战2-动态模块地址

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

LabVIEW项目编码器选择

在LabVIEW项目中,选择增量式(Incremental Encoder)和绝对式(Absolute Encoder)编码器取决于项目的具体需求。增量式编码器和绝对式编码器在工作原理、应用场景、精度和成本等方面存在显著差异。以下从多方面详细阐述两…

MySql数据库---单表查询,高级查询,外键约束,多表关系,建表原则

思维导图 模糊查询 select * from 表名 where 列名 like 匹配符; 符号: _ 表示一个任意字符 符号: % 表示0或者多个任意字符 # (1)查询商品名称含有"香"字的所有商品信息; select * from product where pname like %香%; # &#x…

【车联网安全】车端知识调研

一、CAN总线: 1、定义: CAN 总线相当于汽车的神经网络,连接车内各控制系统,其通信采用广播机制,各连接部件均可收发控制消息,通信效率高,可确保通信实时性。当前市场上的汽车至少拥有一个CAN网络&#xff0…

Thinkphp(TP)

1.远程命令执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 2.远程代码执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]…

多模态文档编辑器flowmix/docx,9月更新复盘!

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践,也陆陆续续设计并开发了多款可视化搭建产品,比如: H5-Dooring(页面可视化搭建平台)V6.Dooring(可视化大屏搭建平台)橙…