keepalived高可用的安装与部署

1、安装keepalived

准备两台测试机keepalived-01和keepalived-02

(备注:两台安装环境一样,yum源提前配置好)


2、keepalived配置文件

主要由三部分组成:

1、global_defs 部分:部分用于全局定义,包括邮件通知和 SMTP 设置

2、vrrp_instance 部分:部分定义了一个 VRRP 实例,用于配置虚拟路由器的参数。

3、virtual_server 部分:部分定义了一个虚拟服务器的配置。

! Configuration File for keepalived

global_defs {
  notification_email {
    admin@example.com    #指定在发生故障时接收通知的电子邮件地址
  }
  notification_email_from keepalived@example.com #指定通知邮件的发件人地址
  smtp_server smtp.example.com    #指定用于发送通知邮件的 SMTP 服务器地址。
  smtp_connect_timeout 30       #指定连接 SMTP 服务器的超时时间
}

vrrp_instance VI_1 {
  state MASTER           #定义节点的初始状态,可以是 MASTER 或 BACKUP。这里设置为 MASTER,表示当前节点是主节点。
  interface eth0      #指定用于 VRRP 的网络接口,这里是 eth0。
  virtual_router_id 51 #VRRP 虚拟路由的标识号,用于唯一标识一个 VRRP 实例。
  priority 100          #节点的优先级,用于选举主节点,数字越大优先级越高。
  advert_int 1           #发送 VRRP 通告的时间间隔,单位为秒
  authentication {        #认证方式和密码
    auth_type PASS
    auth_pass MySecretPassword
  }
  virtual_ipaddress {      #指定由 VRRP 组共享的虚拟 IP 地址,这里是 
    10.10.10.1
  }
}

virtual_server 192.168.1.100 80 {    #指定一个虚拟服务器配置,绑定在 192.168.1.100 的 TCP 端口 80 上。
  delay_loop 6    #指定健康检查的时间间隔,单位为秒
  lb_algo rr       #负载均衡算法,这里是 round-robin(rr)。
  lb_kind DR        #负载均衡的类型,这里是 direct routing(DR)
  protocol TCP       #指定协议类型,这里是 TCP。

  real_server 192.168.1.10 80 {    #定义真实服务器,即后端提供服务的实际节点
    weight 1           #设置节点的权重,用于负载均衡算法
    TCP_CHECK {          #指定对真实服务器的健康检查参数
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
    }
  }



3、配置测试机参数

keepalived-01主服务器和keepalived-02备服务器

主备配置差异体现在实例router_id、state、priority三个参数上

router_id:主机实例id

state:定义节点的初始状态,可以是 MASTER(主) 或 BACKUP(备)。

priority:节点的优先级,用于选举主节点,数字越大优先级越高


4、启动keepalived服务检查浮动IP是否启用

主服务器配置的IP地址10.10.10.1已正常启用


 5、测试浮动IP飘移

5.1主备机器keepalived服务器正常状态下,10.10.10.1地址由于优先级在01主机下

 5.2模拟主服务器01宕机,IP飘逸备服务器02

下图自动切换成功

 等待01主服务器重启成功,由于优先级参数,自动由备02服务器选举切换为主01服务器

测试结果:自动切换成功


6、keepalived常见故障及排查办法

6.1、在 Keepalived 中,裂脑(Split Brain)是指当网络分区发生时,导致多个节点都认为自己是主节点(MASTER),从而造成服务的不一致性和冲突。这种情况下,不同节点可能同时拥有相同的虚拟 IP 或资源,这会导致网络中出现竞争条件和数据不一致性问题

6.1. 心跳检测机制

Keepalived 使用心跳检测来确定节点的状态,通常是通过配置的健康检查来确认节点是否存活。为了减少裂脑的风险,可以考虑以下措施:

  • 健康检查参数优化: 调整健康检查的超时和重试次数,确保在网络分区时能够快速判断节点状态。
  • 多重健康检查: 使用多个健康检查(如TCP、HTTP、ICMP等)来提高检测的准确性和可靠性。

6.2. 配置优化

  • 优先级设置: 配置每个节点的优先级(priority),确保高优先级节点在冲突时能够成为主节点。
  • Quorum 设置: 使用 quorum 来决定在网络分区后哪些节点有资格成为主节点。这可以通过配置虚拟路由器ID (VRID) 的权重和节点的优先级来实现。

6.3. 恢复策略

  • 预设优先级逻辑: 在配置中定义节点状态变更的预设优先级逻辑,以减少网络分区时的不一致性。
  • 强制切换机制: 当发生裂脑时,通过手动或自动触发强制切换,确保只有一个节点成为主节点,避免多个节点同时拥有同一虚拟 IP。

6.4. 日志和监控

  • 详细日志记录: 配置详细的日志记录,以便能够追踪裂脑发生的原因和影响。
  • 实时监控: 使用监控工具实时监测 Keepalived 运行状态和节点的健康状况,及时发现裂脑问题并采取应对措施。

6.5. 网络设计和拓扑优化

  • 网络分区隔离: 设计和优化网络拓扑,减少因网络分区导致的裂脑可能性。
  • 物理隔离: 将不同 Keepalived 节点部署在物理隔离的网络区域,降低因网络问题导致的裂脑风险。

6.6. 版本更新和漏洞修复

  • 保持更新: 定期更新 Keepalived 版本,应用已知的漏洞修复和改进,以提升系统的稳定性和安全性。

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值