KEEPALIVED总结

1.keepalived 简介

        vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务
官网:http://keepalived.org/
功能:
    基于vrrp协议完成地址流动
    为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
    为ipvs集群的各RS做健康状态检测
    基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持n    ginx、haproxy等服务

2.Keepalived 架构

        官方文档:
        https://keepalived.org/doc/
        http://keepalived.org/documentation.html 

用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测real server
system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
IO复用器:针对网络目的而优化的自己的线程抽象
内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

3.Keepalived 环境准备

两台安装ka的服务器,两台客户机,IP无要求,关闭火墙和selinux

4.实验环节

1.安装keepalived

2.KeepAlived 配置

 1.全局配置

 

 

 2.配置slave端

 

 

4.测试

 3.启用keepalived日志功能

 

 

3.Keepalived企业应用示例 

 1.非抢占模式 nopreempt

默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,
这样会使vip在KA主机中来回漂移,造成网络抖动,
建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色
非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

ka1配置

ka2配置

非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机。

2.VIP单播配置

ka1配置

ka2配置

抓包查看单播效果:

3.Keepalived 通知脚本配置

 

4.实现IPVS的高可用性

准备web服务器并使用脚本绑定VIP至web服务器lo网卡

 准备两台后端rs主机

[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@rs1 ~]# ip addr add 172.25.254.100/32 dev lo
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]# yum install httpd -y
[root@rs1 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@rs2 ~]# ip addr add 172.25.254.100/32 dev lo
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@node30 ~]# yum install httpd -y配置keepalived
[root@node30 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@node30 ~]# ip addr add 172.25.254.100/32 dev lo
[root@node30 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node30 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node30
~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#ka1节点的配置  

 

[root@rhel7-ka1 ~]# vim /etc/keepalived/keepalived.conf
@@@@ 省略内容 @@@@
virtual_server 172.25.254.100 80 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   protocol TCP
   sorry_server 172.25.254.30
   real_server 172.25.254.101 80 {
       weight 1
       TCP_CHECK {
           connect_timeout 5
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
       }
   }
   real_server 172.25.254.102 80 {
       weight 1
       HTTP_GET {
           url {
               path /
               status_code 200
           }
           connect_timeout 1
           nb_get_retry 3
           delay_before_retry 1
       }
   }
}

ka2节点的配置,配置和ka1基本相同,只需修改三行

[root@rhel7-ka2 ~]# vim /etc/keepalived/keepalived.conf
@@@@ 省略内容 @@@@
virtual_server 172.25.254.100 80 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   protocol TCP
   sorry_server 172.25.254.30访问测试结果
模拟故障
   real_server 172.25.254.101 80 {
       weight 1
       TCP_CHECK {
           connect_timeout 5
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
       }
   }
   real_server 172.25.254.102 80 {
       weight 1
       HTTP_GET {
           url {
               path /
               status_code 200
           }
           connect_timeout 1
           nb_get_retry 3
           delay_before_retry 1
       }
   }
}

 访问测试结果

[Administrator.WIN-20240602BIS] ➤ for i in {1..6}; do curl 172.25.254.100; done
RS1 - 172.25.254.101
RS2 - 172.25.254.102
RS1 - 172.25.254.101
RS2 - 172.25.254.102
RS1 - 172.25.254.101
RS2 - 172.25.254.102
[root@rhel7-ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr
 -> 172.25.254.101:80           Route   1     0         6
 -> 172.25.254.102:80           Route   1     0         6

模拟故障

#第一台RS1故障,自动切换至RS2
[root@rs1 ~]# systemctl stop httpd #当RS1故障
[Administrator.WIN-20240602BIS] ➤ for i in {1..6}; do curl 172.25.254.100; done 
#全部流浪被定向到RS2中
RS2 - 172.25.254.102
RS2 - 172.25.254.102
RS2 - 172.25.254.102
RS2 - 172.25.254.1023.6.2.2 实战案例2:实现双主的 LVS-DR 模式 
RS2 - 172.25.254.102
RS2 - 172.25.254.102
[root@rhel7-ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr
 -> 172.25.254.102:80           Route   1     0         12 #RS1被踢出保留
RS2
#后端RS服务器都故障,启动Sorry Server
[root@rs2 ~]#systemctl stop httpd
[Administrator.WIN-20240602BIS] ➤ for i in {1..6}; do curl 172.25.254.100; done
sorry server
sorry server
sorry server
sorry server
sorry server
sorry server
[root@rhel7-ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr
 -> 172.25.254.30:80             Route   1     0         3
#陆续启动RS1 RS2
[root@rhel7-ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr
 -> 172.25.254.101:80           Route   1     0         3
 -> 172.25.254.102:80           Route   1     0         9
#ka1故障,自动切换至ka2
[root@rhel7-ka1 ~]# systemctl stop keepalived.service
[root@rhel7-ka2 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr
 -> 172.25.254.101:80           Route   1     0         0
 -> 172.25.254.102:80           Route   1     0         0

 

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值