Keepalive高可用的实现

一、高可用集群

Keepalived是一个用于实现Linux系统高可用性的软件,主要用于构建VRRP(Virtual Router Redundancy Protocol)虚拟路由器冗余协议和健康检查服务。Keepalived可以监控网络服务的运行状态,并在检测到故障时自动切换到备用服务器,以此来提供服务的连续性和高可用性。

在一个典型的Keepalived高可用集群中,通常会包含以下组件:

  1. Master节点:这是主服务器,负责提供主要的服务。它持有VIP(Virtual IP Address)并响应所有客户端请求。
  2. Backup节点:这是备用服务器,它监视Master节点的状态。如果Master节点发生故障,Backup节点会接管VIP,继续提供服务。
  3. VRRP协议:Keepalived通过VRRP协议来管理Master和Backup之间的角色切换。VRRP允许多个路由器使用一个IP地址作为默认网关,当Master路由器失效时,Backup路由器可以无缝地接管这个角色。
  4. 健康检查:Keepalived支持多种健康检查机制,包括但不限于HTTP、TCP、UDP等,用于监控服务是否正常运行。如果检测到服务不可用,Keepalived可以触发相应的动作,如重启服务或切换到Backup节点。
  5. 配置文件:Keepalived的配置文件通常位于/etc/keepalived/keepalived.conf,其中包含了VRRP实例的定义、健康检查的设置以及网络接口的配置等信息。
  6. 日志记录:Keepalived会记录它的活动和状态变化,这对于故障排查和维护是非常重要的

为了实现一个高可用的Keepalived集群,你需要在每个参与节点上安装Keepalived软件,配置相应的VRRP实例,设置健康检查策略,并确保网络通信正常。通常还需要配置防火墙规则以允许VRRP通告和其他必要的网络流量。 

Keepalived不仅限于Web服务器,还可以用于数据库服务器、邮件服务器等各种关键业务系统的高可用性部署。它是一个非常灵活和强大的工具,可以根据具体需求进行定制化配置

1.集群类型

  • LB:Load Balance 负载均衡 LVS/HAProxy/nginx(http/upstream, stream/upstream)
  • HA:High Availability 高可用集群 数据库、Redis
  • SPoF: Single Point of Failure,解决单点故障
  • HPC:High Performance Computing 高性能集群

2.系统可用性

SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能 等方面所达成的双方共同认可的协议或契约)

A = MTBF / (MTBF+MTTR)

99.95%:(60*24*30)*(1-0.9995)=21.6分钟 #一般按一个月停机时间统计

 指标 :99.9%, 99.99%, 99.999%,99.9999%

3.系统故障 硬件故障

设计缺陷:wear out(损耗)、非人为不可抗拒因素

软件故障:设计缺陷 bug

4.实现高可用

提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)

解决方案:建立冗余机制

active/passive 主/备

active/active 双主

active --> HEARTBEAT --> passive

active HEARTBEAT active

5.VRRP

Virtual Router Redundancy Protocol 虚拟路由冗余协议,解决静态网关单点风险

物理层:路由器、三层交换机

软件层:keepalived

 VRRP 相关术语

  • 虚拟路由器:Virtual Router
  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
  • VIP:Virtual IP
  • VMAC:Virutal MAC (00-00-5e-00-01-VRID)
  • 物理路由器:

          master:主设备

          backup:备用设备

          priority:优先级  

二、Keepalived 的详细部署 

在做keepalive实验的时候,我们需要做好一些环境准备,常见的环境部署如下,由于我用的是rhel7,所以selinux的关闭方式和企业9有所不同

需要做好的环境准备如下:

  • 各节点时间必须同步:ntp, chrony
  • 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

实验准备

KA1:ip 172.25.254.10 主机名ka1.karl.org

KA2:   ip 172.25.254.20 主机名ka2.karl.org

其中KA1和KA2的VIP通过keepalived配置文件获取,例如在抢占模式下,优先级高的获得VIP,当优先级高的主机宕机之后,KA2会接取VIP,当高优先级的主机恢复在线后,会抢占低先级的主机的master角色, 但其实这样会使vip在KA主机中来回漂移,造成网络抖动,建议设置成非抢占模式

VIP:172.25.254.100

Realserver1: ip 172.25.254.110 主机名 reserver1.karl.org

Realserver2:ip 172.25.254.120  主机名realserver2.karl.org 

两台rs安装好http服务,并输入东西到默认发布目录

    4  echo realserver1 - 172.25.254.110
    5  echo realserver1 - 172.25.254.110 > /var/www/html/index.html
    6  systemctl enable --now httpd.service 
    7  curl 172.25.254.110
    8  curl 172.25.254.120

在ka1,ka2上安装keepalived服务: 

yum install keepalived.x86_64 -y

由于两台ka之间是通过组播相互确认存活情况的,所以我们配置好keepalive配置文件进行tcpdump实验,其中vitual_ipaddress板块便是确定VIP具体的值

vim /etc/keepalived/keepalived.conf

.....
global_defs {
   notification_email {
        1487994142@qq.com
   }
   notification_email_from keepalived@karl.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.karl.org
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}

此时ka1配置好之后,有一个小技巧,可以帮助我们节省重复配置ka2的时间:

cp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf

之后我们把ka2的vrrp_instance VI_1中的state 由MASTER 改成BACKUP,priority 改成 80即可,保存并重启keepalive

在ka1上使用ifconfig命令,可以查看到VIP

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.254.100  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:0c:29:98:63:e0  txqueuelen 1000  (Ethernet)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值