Keepalived
Keepalived
Keepalived 软件由 C 编写的,最初是专为 LVS负载均衡软件设计的,Keepalived 软件主要是通过 VRRP 协议实现高可用功能。
VRRP部分,该部分可以包含以下四个子模块
1. vrrp_script #我们会用到第一个和第四个
2. vrrp_sync_group
3. garp_group
4. vrrp_instance #我们会用到第一个和第四个

1.keepalived的安装 步骤1:从官方网站下载keepalived,官网地址 https://keepalived.org/ 步骤2:将下载的资源上传到服务器 keepalived-2.0.20.tar.gz 步骤3:创建keepalived目录,方便管理资源 mkdir keepalived 步骤4:将压缩文件进行解压缩,解压缩到指定的目录 tar -zxf keepalived-2.0.20.tar.gz -C keepalived/ 步骤5:对keepalived进行配置,编译和安装 cd keepalived/keepalived-2.0.20 ./configure --sysconf=/etc --prefix=/usr/local make && make install

2.keepalived的配置 cp /etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf vim /etc/keepalived/keepalived.conf #vrrp master配置 global_defs { notification_email { #通知邮件,当keepalived发生切换时,需要发email给具体的邮箱地址 acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc #设置发件人的邮箱信息 smtp_server 192.168.200.1 #指定smpt服务地址 smtp_connect_timeout 30 #指定smpt服务连接超时时间 router_id LVS_DEVEL #运行keepalived服务器的一个标识,可以用作发送邮件的主题信息 vrrp_skip_check_adv_addr #默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查) vrrp_strict #严格遵守VRRP协议。 vrrp_garp_interval 0 #在一个接口发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0 vrrp_gna_interval 0 #在一个网卡上每组na消息之间的延迟时间,默认为0 } vrrp_instance VI_1 { #设置keepalived实例的相关信息,VI_1为VRRP实例名称 state MASTER #有两个值可选MASTER主 BACKUP备;这个值有什么意义?实际生效还是靠优先级 interface ens33 #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称] virtual_router_id 51 #指定VRRP实例ID,范围是0-255 priority 100 #指定优先级,优先级高的将成为MASTER advert_int 1 #指定发送VRRP通告的间隔,单位是秒 authentication { #vrrp之间通信的认证信息 auth_type PASS #指定认证方式。PASS简单密码认证(推荐) auth_pass 1111 #指定认证使用的密码,最多8位 } virtual_ipaddress { 192.168.1.99 #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个 } track_script { check_nginx } } #keepalived只能做到对网络故障和keepalived本身的监控,即当出现网络故障或者keepalived本身出现问题时,进行切换。 #但是这些还不够,我们还需要监控keepalived所在服务器上的其他业务,比如Nginx,如果Nginx出现异常了,仅仅keepalived保持正常,是无法完成系统的正常工作的, #因此需要根据业务进程的运行状态决定是否需要进行主备切换,这个时候,我们可以通过编写脚本对业务进程进行检测监控。 #我们需要使用 vrrp_script,使用脚本监控指定的系统状态,进而完成vrrp的切换 #此处仅在master进行配置即可 vrrp_script check_nginx { script /root/check_nginx.sh #执行脚本位置 interval 3 #执行时间间隔 weight -20 #动态调整vrrp_instance的优先级 } [root@yefeng ~]# cat check_nginx.sh #!/bin/bash num=`ps -C nginx --no-header | wc -l` if [ $num -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then killall keepalived fi fi #注意,脚本若要正确执行,需要给予正确的权限 chmod 755 /root/check_nginx.sh #反正验证了,check_nginx.sh的相关配置无误,但是keepalived并未执行check_nginx.sh脚本。 -------------------------------------------------------- #vrrp backup配置 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_instance VI_1 { state BACKUP #修改此项,其余使用默认配置 interface ens33 #修改此项,其余使用默认配置 virtual_router_id 51 priority 90 #修改此项,其余使用默认配置 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.99 #修改此项,其余使用默认配置 } }

3.启动keepalived并测试 /usr/local/sbin/keepalived #ip a s ens33 观察现象,vip确实启用了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!