【Linux33-3】Keepalived大型负载均衡(LVS管理软件)

1. 问题

1.1 lvs内核模块


ip_vs

在这里插入图片描述

1.2 健康问题


  1. 某台Real Server在down了怎么办?
  2. LVS本身down了怎么办?

在这里插入图片描述


2. lvs健康检测脚本


vim check_lvs.sh

#!/bin/bash
VIP=192.168.17.100
PORT=80
RS=(192.168.17.2 192.168.17.3)
LOG=check_lvs.log

addrs() {
    
    
	ipvsadm -a -t $VIP:$PORT -r $1:$PORT -g
	echo "add $1 to ipvs" >> $LOG
}

delrs() {
    
    
	ipvsadm -d -t $VIP:$PORT -r $1
        echo "del $1 to ipvs" >> $LOG
}

checkrs() {
    
    
	for i in ${RS[*]}
	do
		num=`curl  -I -s -o /dev/null -w %{
     
     http_code} http://$i`
		if [ $num -eq 200 -a $(ipvsadm -ln|grep $i|wc -l) -eq 0 ];then
			addrs $i
		elif [ $num -ne 200 -a $(ipvsadm -ln|grep $i|wc -l) -ne 0 ];then
			delrs $i
		fi
	done
}
while true
do
checkrs
sleep 5
done

3. keepalived介绍


3.1 keepalived 简介


keepalived是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:

  • hacmp是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,检测集群中的系统服务,在集群节点间转移共享ip地址所有者等,hacmp功能强大,但是部署和使用相对麻烦,同时也是商业化软件.
  • keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然他没有hacmp功能强大,但是keepalived部署使用相对简单,所有配置只需要一个配置文件即可完成.

3.2 keepalived 体系结构


keepalived的体系结构从整体上分为两层,分别是用户空间层内核空间层

  • SchedulerI/OMultiplexer是一个I/O复用分发调度器,它负载安排Keepalived所有内部的任务请求;
  • Memory Mngt是一个内存管理机制,这个框架提供了访问内存的一些通用方法;
  • Control Plane 是keepalived的控制版面,可以实现对配置文件编译和解析;
  • Core componets 这部分主要包含了5个部分;
    • Watchdog:是计算机可靠领域中极为简单又非常有效的检测工具,Keepalived正是通过它监控Checkers和VRRP进程的。
    • Checkers:这是Keepalived最基础的功能,也是最主要的功能,可以实现对服务器运行状态检测和故障隔离。
    • VRRP Stack:这是keepalived后来引用VRRP功能,可以实现HA集群中失败切换功能。负责负载均衡器之间的失败切换FailOver;
    • IPVS wrapper:这个是IPVS功能的一个实现,IPVSwarrper模块将可以设置好的IPVS规则发送的内核空间并且提供给IPVS模块,最终实现IPVS模块的负载功能。
    • Netlink Reflector:用来实现高可用集群Failover时虚拟IP(VIP)的设置和切换,

3.3 keepalived 进程


keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp

  • core:负责主进程的启动,维护和全局配置文件的加载;
  • check:负责健康检查
  • vrrp:用来实现vrrp协议(主备冗余)

4. keepalived 配置


在上一篇blog基础上修改:LVS之ipvsadm与arptables


4.1 安装keepalived


  1. 主lvs:server1:上一篇配置
  2. 备用lvs:server4:192.168.17.4(其他配置与server1相同)

  • 安装 ipvsadm、keepalived

yum install -y ipvsadm

yum install -y keepalived

  • 删除已有操作

ip addr del 192.168.17.100/24 dev eth0:删除之前添加的VIP

ipvsadm -C:删除原有的ipvsadm规则

4.2 修改配置文件


  • 主lvs配置:修改配置文件并传输到备用lvs上

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服务器地址
   smtp_connect_timeout 30#指定smtp连接超时时间
   router_id LVS_DEVEL#负载均衡标识,在局域网内应该是唯一的
   vrrp_skip_check_adv_addr
   #vrrp_strict	#严格遵守VRRP协议。(个人实验,可以不遵守)
   #下列情况将会阻止启动Keepalived:
   	#1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
   vrrp_garp_interval 0	#在一个接口发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    
    
    state MASTER	#指定该keepalived节点的初始状态
    interface ens33	#vrrp实例绑定的接口,用于发送VRRP包
    virtual_router_id 68	#指定VRRP实例ID,唯一(范围是0-255)
    priority 100	#指定优先级,优先级高的将成为MASTER
    advert_int 1	#指定发送VRRP通告的间隔。单位是秒
    authentication {
    
    
        auth_type PASS	#指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐
        auth_pass 1111	#指定认证所使用的密码。最多8位
    }
    virtual_ipaddress {
    
    	#指定VIP地址
        192.168.17.100
    }
}

virtual_server 192.168.17.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 192.168.17.2 80 {
    
    
        weight 1	#给服务器指定权重。默认是1
        TCP_CHECK {
    
    	#real_server中的健康检查
			connect_timeout 3	#连接超时时间。默认是5s
			nb_get_retry 3	#get尝试次数
			delay_before_retry 3	#在尝试之前延迟多长时间
		}
    }

    real_server 192.168.17.3 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
    }

}

systemctl restart keepalived.service:开启服务

scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/:向备用lvs传输配置文件

  • 备用lvs配置

vim /etc/keepalived/keepalived.conf:将keepalived节点的初始状态定义为BACKUP,其他配置不变

    state BACKUP

systemctl restart keepalived.service:开启服务


4.3 测试


  • 发现开启服务后,主lvs自动增加ipvsadm规则并自动绑定VIP到指定接口curl命令测试后,arp得到的物理地址也与主lvs主机物理地址相对应

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

  • 在主lvs上删除VIP或者其他影响用户访问的操作,备用lvs会自动接管RS(但此时的主LVS并不知道自己down掉了)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46069582/article/details/112604597