keepalived的基础知识与配置

目录

一、概述

二、核心功能

三、keepalived架构与工作原理

   3.1、VRRP协议:

   3.2、健康检查:

四、配置文件详解

4.1、全局配置块

4.2、VRRP 实例配置

4.3、健康检查配置

五、单实例主备模式的keepalived部署

5.1、部署两个静态站点

5.2、安装keepalived

5.3、配置keepalived

5.4、项目测试

六、双多实例双主模式的keepalived部署 

6.1、修改keepalived配置文件

6.2、启动测试 

七、脑裂

什么是脑裂?

为什么会出现脑裂?

脑裂有没有危害?如果有危害对业务有什么影响

一、概述

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol)协议 的高可用性解决方案,为了解决静态路由器出现的单点故障问题,它能偶保证网络的不间断、稳定的运行。

二、核心功能

IP 漂移(VIP):通过虚拟 IP(VIP)实现服务的高可用。

健康检查(Health Checking):监控后端服务的状态,自动切换故障节点。

负载均衡:可与 LVS(Linux Virtual Server)结合,提供四层负载均衡

三、keepalived架构与工作原理

   3.1、VRRP协议

多台服务器组成一个虚拟路由器组 ,共享一个虚拟 IP 。通过优先级 选举 Master 节点,其他节点为 Backup。Master 节点定期发送 VRRP 通告,若 Backup 未收到通告,则触发选举新 Master。

   3.2、健康检查

支持 TCP、HTTP、HTTPS、SSL、脚本等多种检查方式。

若 Master 节点的服务异常,Keepalived 自动降低优先级,触发 VIP 漂移到 Backup。

四、配置文件详解

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

4.1、全局配置块

global_defs {

notification_email {

admin@example.com # 通知邮箱(需邮件服务器支持)

}

notification_email_from keepalived@example.com

smtp_server 127.0.0.1 # SMTP 服务器地址

smtp_connect_timeout 30 # SMTP 连接超时时间

router_id LVS_DEVEL # 节点标识(唯一)

}

4.2、VRRP 实例配置

vrrp_instance VI_1 {
    state MASTER             # 初始状态:MASTER/BACKUP
    interface eth0           # 绑定的物理网卡
    virtual_router_id 51      # 虚拟路由 ID(同一组需相同,范围 0-255)
    priority 100             # 优先级(值越大越优先)
    advert_int 1             # 通告间隔(秒)

    authentication {         # 认证配置
        auth_type PASS       # 认证类型:PASS/AH
        auth_pass 1234       # 密码(同一组需相同)
    }

    virtual_ipaddress {      # 虚拟 IP(VIP)
        192.168.1.100/24 dev eth0
    }

    track_script {           # 关联健康检查脚本
        chk_nginx
    }
}

4.3、健康检查配置

脚本检查实例:

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"  # 自定义脚本路径 或 shell命令
    interval 2    # 检查间隔时间(秒),默认1秒
    weight -20    # 检查失败时优先级降低的值  (-254 - 254)
}

HTTP检查实例:

virtual_server 192.168.1.100 80 {
    delay_loop 6        # 检查间隔(秒)
    lb_algo rr          # 负载均衡算法(rr/wlc等)
    lb_kind NAT         # LVS 模式(NAT/DR/TUN)
    protocol TCP

    real_server 192.168.1.101 80 {
        weight 1
        HTTP_GET {
            url {
                path /health
                status_code 200
            }
            connect_timeout 3
            retry 3
        }
    }
}

五、单实例主备模式的keepalived部署

单vip 架构: 只有master上有vip,backup上没有vip,这个时候master会比较忙,backup机器会比较闲,设备使用率比较低

5.1、部署两个静态站点

5.2、安装keepalived

5.3、配置keepalived

5.4、项目测试

跟踪服务

开启Master 和 Backup 的keepalived服务

客户端测试:

模拟 Master宕机,Backup接替Master对外提供服务

systemctl  stop keepalived

客户端测试:

Master恢复正常,Master继续提供服务,Backup停止服务 

模拟 Master上的nginx服务停止,尝试重新启动nginx

keepalived不会对Nginx应用做健康检查,这里利用killall 命令探测服务的运行状态,在应用异常时,VIP 自动漂移。

六、双多实例双主模式的keepalived部署 

双vip 架构:  启动2个vrrp实例,每台机器上都启用2个vrrp实例,一个做master,一个做backup,启用2个vip,每台机器上都会有一个vip,这2个vip都对外提供服务,这样就可以避免单vip的情况下,一个很忙一个很闲。  可以提升设备的使用率,这两台机器互为主备。

依据上面单vip环境,接下来我们只需要修改配置形成双vip环境即可

6.1、修改keepalived配置文件

6.2、启动测试 

先启动以192.168.8.10 为主的keepalived,发现虚拟ip全在同一台机器上,当启动另一台以192.168.8.20为主的keepalived时,vip就会转移过去

七、脑裂

  • 什么是脑裂?

脑裂(Split-Brain)是分布式系统或高可用性集群中的一种故障现象,通常发生在节点间通信中断时。当集群中的节点无法检测到彼此的状态,可能会错误地认为其他节点已失效,进而导致多个节点同时认为自己是“主节点”(Leader),引发数据不一致、服务冲突等问题。

  • 为什么会出现脑裂?

  1. 网络分区:节点间的网络连接中断,导致部分节点无法通信。

  2. 硬件/软件故障:如心跳检测机制失效、资源竞争或节点崩溃。

  3. 配置错误:如超时时间设置不合理,导致节点过早判定对端失效

 脑裂现象:
    1.vrid(虚拟路由id)不一样
    2.网络通信有问题:中间有防火墙阻止了网络之间的选举的过程,vrrp报文的通信
    3.认证密码不一样也会出现脑裂

  • 脑裂有没有危害?如果有危害对业务有什么影响?

    没有危害,能正常访问,反而还有负载均衡的作用
    脑裂恢复的时候,还是有影响的,会短暂的中断,影响业务的
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值