Keepalived

目录

什么是Keepalived

主要功能

工作原理

应用场景

Keepalived 的工作原理

心跳机制

状态监测

故障转移

选举机制(在多主多备场景下)

Keepalived功能

Keepalived环境准备

Keepalived相关文件

Keepalived的安装

Keepalived配置说明

keepalived配置文件组成部分

Keepalived配置语法说明

帮助

全局配置

虚拟路由配置

修改KA1配置文件

修改KA2配置文件

测试

通信功能的开启

原因

解决方法

解决

启用Keepalived日志

实现独立子配置文件

原因

子配置文件

Keepalived应用示例

抢占模式和非抢占模式

非抢占模式 nopreempt

抢占延迟模式  preempt_delay

VIP单播模式

Keepalived通知脚本配置

邮件通知

准备工作

通知脚本的创建

权限添加

脚本调用

Keepalived双主模式

实现ipvs的高可用

示例

准备工作

配置Keepalived

测试

Keepalived+haproxy的高可用集群


什么是Keepalived

        Keepalived 是一种用于实现高可用的软件工具

主要功能

        实现对服务器的健康检查:定期检测服务器的运行状态,如网络连接是否正常、服务是否可用等。

        虚拟 IP(VIP)管理:可以将一个虚拟 IP 绑定到多台服务器上,当主服务器故障时,自动将虚拟 IP 切换到备份服务器。

工作原理

        通过发送心跳报文来检测服务器的状态。主服务器和备份服务器之间相互发送这些报文,当备份服务器在一定时间内未收到主服务器的心跳报文时,就会认为主服务器故障。

        触发故障转移机制,将虚拟 IP 绑定到备份服务器上,并接管主服务器的服务,以保证服务的连续性。

应用场景

        在负载均衡架构中:与负载均衡软件(如 LVS、Nginx 等)配合使用,当其中一台负载均衡服务器故障时,自动切换到另一台服务器,确保负载均衡服务不中断。

        保障关键业务服务的高可用性:如数据库服务器、Web 服务器等,当主服务器出现故障时,快速切换到备份服务器,减少服务中断时间

Keepalived 的工作原理

        Keepalived 的工作原理主要包含以下关键要点:

心跳机制

        Keepalived 采用多播或单播等方式在主服务器(Master)和备份服务器(Backup)之间发送心跳报文,通常是按照一定的时间间隔(可配置)进行发送。

        这些心跳报文用于相互检测对方的状态,以判断服务器是否正常运行。

状态监测

        对自身服务以及关联的关键资源(如网络连接、应用程序端口等)进行持续监测。

        同时也接收来自对方服务器的心跳报文,并根据报文的接收情况和自身监测结果来综合判断服务器的健康状态。

故障转移

        当主服务器在规定时间内没有收到备份服务器的心跳报文,或者自身监测到自身或对方出现故障时,会认为自身或对方出现问题。

        如果主服务器判定自身故障,它会主动停止自身的服务并释放资源,如虚拟 IP(VIP)等。

        备份服务器在发现主服务器故障后,会迅速启动自身的服务,并接管主服务器的虚拟 IP,开始对外提供服务,以实现服务的无缝切换,保证业务的连续性。

选举机制(在多主多备场景下)

        在一些复杂的高可用架构中,如果存在多个 Keepalived 实例,当故障发生后,多个备份服务器之间可能需要通过一定的选举规则来确定新的主服务器。

        选举通常基于预先配置的优先级或者根据服务器的一些特定属性(如硬件性能等)来进行。

Keepalived功能

        基于 vrrp 协议完成地址流动

        为 VIP 地址所在的节点生成 ipvs 规则(在配置文件中预先定义)

        为 ipvs 集群的各 RS 做健康状态检测

        基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

Keepalived环境准备

###主机1
版本:rhel7.9
hostname: real server1
172.25.254.110

###主机2
版本:rhel7.9
hostname: real server2
172.25.254.120

###主机3
版本:rhel7.9
hostname: KA1
172.25.254.10

###主机4
版本:rhel7.9
hostname: KA2
172.25.254.20

Keepalived相关文件

        软件包名: keepalived

        主程序文件:/usr/sbin/keepalived

        主配置文件:/etc/keepalived/keepalived.conf

        配置文件示例:/usr/share/doc/keepalived/

        Unit File:/lib/systmed/system/keepalived.service

        Unif File的环境配置文件:/etc/sysconfig/keepalived

Keepalived的安装

### KA1
dnf install keepalived -y
systemctl start keepalived
ps axf | grep keepalived

Keepalived配置说明

keepalived配置文件组成部分

        配置文件:/etc/keepalived/keepalived.conf

        配置文件组成:

                GLOBAL CONFIGURATION

                Global definitions:   定义邮件配置,route_id,vrrp配置,多播地址等

                VRRP CONFIGURATION

                VRRP instance(s):   定义每个vrrp虚拟路由器

                LVS CONFIGURATION

                Virtual server group(s)

                Virtual server(s):      LVS集群的VS和RS

Keepalived配置语法说明

帮助

man keepalived.conf

全局配置

global_defs {
   notification_email {
        111122223333@qq.com              #keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写多个
        111222333555@163.com
   }
   notification_email_from keepalived@example.com   #发邮件的地址

   smtp_server 127.0.0.1                 #邮件服务器地址
   smtp_connect_timeout 30               #邮件服务器连接超时时间
   router_id ka1.ccc.com                 #每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响
   
   vrrp_skip_check_adv_addr              #对所有通告报文都检查,会比较消耗性能
                                         #启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查

   vrrp_strict                           #严格遵循vrrp协议;
                                         #启用此项后以下状况将无法启动服务:
                                         #1.无VIP地址 
                                         #2.配置了单播邻居
                                         #3.在VRRP版本2中有IPv6地址
                                         #建议不加此项配置

   vrrp_garp_interval 0                  #报文发送延迟,0表示不延迟
   vrrp_gna_interval 0                   #消息发送延迟
   vrrp_mcast_group4 224.0.0.18          #指定组播IP地址范围:

}

虚拟路由配置

vrrp_instance VI_1 {
    state MASTER
    interface eth0          #绑定为当前虚拟路由器使用的物理接口,如:eth0,可以和VIP不在一个网卡
    
    virtual_router_id 100   #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动
                            #同属一个虚拟路由器的多个keepalived节点必须相同
                            #务必要确认在同一网络中此值必须唯一
    
    priority 100            #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    
    advert_int 1            #vrrp通告的时间间隔,默认1s
    
    authentication {        #认证机制
        auth_type PASS      #两种机制分别为AH和PASS
                            #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
        
        auth_pass 1111      #预共享密钥,仅前8位有效
                            #同一个虚拟路由器的多个keepalived节点必须一样
}
    }
    virtual_ipaddress {     #虚拟IP,生产环境可能指定上百个IP地址
        172.25.254.100/24 dev eth0
    }
}

修改KA1配置文件

### 安装keepalived
yum install keepalived -y
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值