使用linux的工具keepalived实现ip虚拟,监控端口状态,实现数据库故障切换_虚拟ip管理工具-程序员宅基地

技术标签: linux  工具  

一、keepalived工具简介

1.Keepalived高可用软件

    Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。

    keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual  Router  Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由的单点故障问题的,它能保证当个别节点宕机时,整个网络可以不间断地运行。所以,keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能。

2.Keepalived高可用故障切换转移原理

    Keepalived高可用服务对之间的故障切换转移,是通过VRRP来实现的。在keepalived服务工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用来告诉备Backup节点自己还活着。当主节点发生故障时,就无法发送心跳的消息了,备节点也因此无法继续检测到来自主节点的心跳了。于是就会调用自身的接管程序,接管主节点的IP资源和服务。当主节点恢复时,备节点又会释放主节点故障时自身接管的IP资源和服务,恢复到原来的备用角色。

 

二、使用keepalived配合mysql实现数据库故障切换

1.keepalived安装

  准备两台linux服务器,master服务器和slave服务器

  在linux服务器上,有两种安装方式:一是使用yum命令进行安装,二是使用rpm包进行安装

  相比之下,yum命令安装较简单,会自动下载各种依赖,而rpm不会下载相关依赖,需要自己下载

在master服务器上使用yum方式:

  yum install keepalived -y

 

 

安装完成之后,会在默认路径下产生一个配置文件、etc/keepalived/keepalived.conf

启动keepalived:service keepalived start

查看keepalived的运行状态:service keepalived status

 

使用ip a命令可以查看虚拟出来的ip地址情况

 

成功启动之后,可以按照自己的需求修改keepalived.conf文件

master的配置

global_defs {
script_user root  #指定脚本的执行用户
enable_script_security 
vrrp_skip_check_adv_addr
router_id LVS_DEVEL1    #id唯一,两个服务器上配置需要不同

}
vrrp_instance VI_1 
{
state MASTER   #设置服务器的状态,分为:MASTER和BACKUP两种
interface enp2s0   #网卡名,使用ifconfig命令可以查看服务器的网卡名
virtual_router_id 51   
priority 100   #虚拟ip的权重,值越高,越能获取ip资源
advert_int 1
authentication 
{
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.84.200  #虚拟的ip
}
}
virtual_server 192.168.84.200 3306 {  #监听的ip及端口
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.84.56 3306 {  #真实ip及端口
weight 3
notify_down /etc/keepalived/mysql.sh   #监听到端口不能访问后执行该脚本
TCP_CHECK {
connect_timeout 10  #超时时间
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

详细配置见

https://www.cnblogs.com/panbc/articles/8258282.html

/etc/keepalived/mysql.sh脚本的作用是检测mysql数据库是否还正常运行,如果数据库不能正常运行,则停掉keepalived服务,虚拟ip的指向会自动变为slave服务器的ip,能够访问slave服务器的mysql

 

mysql.sh脚本的内容

#!/bin/bash
log="/etc/keepalived/sh.log"
echo "进入mysql.sh脚本" >> $log
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=username
MYSQL_PASSWORD=password
CHECK_TIME=3
#mysql is working MYSQL_OK is 0 , mysql down MYSQL_OK is 1
MYSQL_OK=1
function check_mysql_helth() {
$MYSQL -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -e"show status;" > /dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_OK=0
else
MYSQL_OK=1
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
echo $MYSQL_OK >> $log
if [ $MYSQL_OK = 0 ] ; 
then
CHECK_TIME=0
exit 0
fi
if [ $MYSQL_OK -eq 1 ] && [ $CHECK_TIME -eq 1 ]
then
pkill keepalived
exit 1
fi
sleep 1
done

脚本编写也是一个大坑,在windows上编写的文件,在linux上不能正常执行,需要用工具格式化,或者直接在linux上编写shell脚本,使用命令给mysql.sh脚本赋可执行权限

chmod   +x    mysql.sh

 

slave服务器也需要进行相同的安装操作,只是配置上会有所不同

slave的配置:

global_defs {
router_id LVS_DEVEL2 #id需要唯一
script_user root
enable_script_security 
}
vrrp_instance VI_1 
{
state BACKUP #状态设为BACKUP,必须为大写
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication 
{
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.228.200
}
}
virtual_server 192.168.228.200 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.228.130 3306 {
weight 3
notify_down /etc/keepalived/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

1.成功启动两台服务器的keepalived之后,测试master服务器上的keepalived挂掉,虚拟ip转移到slave服务器

2.重新启动master的keepalived服务,如果master上的配置参数priority 100>slave的priority 90,master服务器会抢夺资源,虚拟ip会重新指向master服务器

3.测试停掉master上的mysql服务,master上的keepalived会在脚本的作用下挂掉,虚拟ip指向slave服务器

三、keepalived的日志

  可以使用命令service keepalived status查看启动状态及小部分启动日志,看到启动的报错,keepalived的默认日志文件在/var/log/message文件中,根据日志查看问题,寻找解决方案

四、注意事项

  在使用keepalived时,服务器会通过vrrp发送消息给组内的服务器,但是要接受到其他服务器的vrrp消息,需要关闭防火墙或将vrrp加入到防火墙的设置中,否则会出现,BACKUP状态的从服务器接收不到主服务器的消息,强制将自己的状态转为MASTER,会有两个vip,出现keepalived脑裂的情况。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ykqwill/article/details/89378936

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文