LVS中的keepalived高可用


一、Keepalived简介

Keepalived是linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。用来解决单点故障
Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成

高可用:高可用(High availability,缩写为 HA),是指系统无中断地执行其功能的能力,代表系统的可用性程度。

二、keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。
core模块:keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check:负责健康检查,包括常见的各种检查方式。
vrrp模块:实现VRRP协议的。

三、实验

LVS对后端不具备健康检测

1.某台Real Server down

现象
在这里插入图片描述在这里插入图片描述
但是调度器不会显示server2已经down
在这里插入图片描述

2.LVS本身down

现象
在这里插入图片描述在这里插入图片描述

3.keepalived实现过程:

server1:
清除资源
ip a d 192.168.175.88/24 dev eth0
ipvsadm -C
yum install -y keepalived
vim /etc/keepalived/keepalived.conf

global_defs { 
  notification_email { 
     root@localhost                         ##定义接收警告的人 
 } 
 notification_email_from root@localhost     ##定义发邮件地址  
 smtp_server 172.0.0.1                      ##定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务的脚本 
 smtp_connect_timeout 30  
 router_id LVS_DEVEL 
} 
 
  #vrrp_script                               ##自定义名字,后面还会用到它 
  vrrp_garp_interval 0
  vrrp_gna_interval 0
} 
 
vrrp_instance VI_1 { 
  state MASTER                               ##角色为master,备份机的为BACKUP 
  interface eth0                             ##针对哪个网卡监听VIP 
  virtual_router_id 51 
  priority 100                               ##权重为100,master要比backup大 
  advert_int 1 
  authentication { 
    auth_type PASS 
    auth_pass 1111                           ##定义密码,这个密码自定义 
  } 
  virtual_ipaddress { 
    172.25.70.100                            ##定义VIP 
  } 
} 
virtual_server 172.25.70.100 80 {
    delay_loop 6	                         #健康检查的时间间隔
    lb_algo rr	                             #LVS调度算法
    lb_kind DR	                             #LVS模式
    #persistence_timeout 50	                 #持久化超时时间,单位是秒。默认是6分钟
    protocol TCP	                         #4层协议(TCP|UDP|SCTP)
 
    real_server 172.25.70.2 80 {
        weight 1	                         #给服务器指定权重。默认是1
        TCP_CHECK {	                         #real_server中的健康检查
			connect_timeout 3	             #连接超时时间。默认是5s
			nb_get_retry 3	                 #get尝试次数
			delay_before_retry 3	         #在尝试之前延迟多长时间
		}
    }
 
    real_server 172.25.70.3 80 {
        weight 1
        TCP_CHECK {
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
    }
}

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(1)某台Real Server宕机

问题一:某台Real Server down:
down服务器2的http时,ipvsadm -ln会自动删除服务器2的策略,并收到一封邮件,服务器3也是同样的;重启http后,ipvsadm -ln会自动生成策略
安装邮件命令:yum install -y mailx(开启或关闭一次RS机的http,调度器就会收到一封邮件)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(2)调度器宕机

问题二:LVS本身down,做备份主机,当调度器down后,备份主机变为调度机,但是优先级低于主调度器!!!
备份机:yum install ipvsadm -y进行测试
备用机安装 keepalived后传配置文件,并进行修改( yum install -y keepalived)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
调度器:systemctl stop keepalived,用备份机测试:
调度器停止服务后(关机、网络问题等等问题),VIP会被拿掉,备份机会生成VIP,变为MASTER角色,VIP跟着MASTER走!
调度器开始服务后,由于优先级高,会接管VIP,变为MASTER角色。
在这里插入图片描述
切换过程会有一点点损失

四、代码详细演示整体过程

1.调度器安装软件、设置

server1:
清除资源
[root@server1 ~]# ip a d 192.168.56.100/24 dev eth0
[root@server1 ~]# ipvsadm -C

安装高可用软件
[root@server1 ~]# yum install -y keepalived

[root@server1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.100
    }
}

virtual_server 192.168.56.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.56.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
    real_server 192.168.56.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
}

[root@server1 ~]# systemctl enable --now keepalived


在这里插入图片描述

2.测试keepalived对后端RS的健康检测

[root@server2 ~]# systemctl  stop httpd

[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.56.100:80 rr
  -> 192.168.56.13:80             Route   1      0          0

故障的RS会自动从调度列表中被摘除

再次启动服务
[root@server2 ~]# systemctl  start httpd

恢复的RS会自动添加到调度列表

在这里插入图片描述

3.backup服务主机设置

server4:
安装高可用软件
[root@server4 ~]# yum install -y keepalived
从server1拷贝配置文件
[root@server1 ~]# scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/

[root@server4 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.100
    }
}

virtual_server 192.168.56.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.56.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
    real_server 192.168.56.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
}

[root@server4 ~]# systemctl enable --now keepalived

测试:
停止server1上服务
[root@server1 ~]# systemctl  stop keepalived.service

查看资源是否自动迁移到server4

在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值