企业级负载均衡集群LVS—DR模式之调度器高可用

1. 什么是keepalived

keepalived:保持存活,在网络里面即为保持在线。也就是所谓的高可用或热备,用来防止单点故障的发生(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)

keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。如果某个服务器节点出现异常,或者工作出现故障,keepalived将监测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

特点:

  • 主要提供 loadbalancing(负载均衡)和 high-availability(高可用)功能
  • 负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)
  • 高可用是通过VRRP协议实现多台机器之间的故障转移服务
  • 采用多进程的设计模式,每个进程负责不同的功能

2. keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全程Virtual Router Redundancy Protocal,即虚拟路由冗余协议。

VRRP 协议:

  • 用于实现路由器冗余的协议
  • 解决静态路由单点故障问题
  • 通过一种竞选(election)协议来实现虚拟路由器的功能

虚拟路由冗余协议,可以认为是实现高路由高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup受不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master这样就可以保证路由器的高可用了

3. keepalived高可用故障切换转移原理

在keepalived服务正常工作时,主master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备backup节点自己还活着,当主master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主master节点的心跳了,于是调用自身的接管程序,接管主master节点的IP资源及服务。而主master节点恢复时,备backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

4. 安装keepalived

此实验需要4台虚拟机,相对于之前的实验多出一台server4作为backup节点

在server1和server4中安装编译keepalived:

tar zxf keepalived-2.0.20.tar.gz 
ls
cd keepalived-2.0.20
ls
yum install gcc openssl-devel -y		#解决依赖性
./configure --prefix=/usr/local/keepalived --with-init=systemd	#编译keepalived的源码包
make && make install

在这里插入图片描述

制作软连接方便keepalived的管理与设置:

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived/ /sbin/

在这里插入图片描述

5. 还原之前实验部分内容

在server1中删除VIP并关闭ldirectord服务:

systemctl stop ldirectord.service
systemctl disable ldirectord.service
ip addr del 172.25.254.100/32 dev eth0
ip addr show

在这里插入图片描述

6. keepalived的配置文件

在server1中:

cd /etc/keepalived/
ls
vim keepalived.conf
[root@server1 sbin]# cd /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf  samples
[root@server1 keepalived]# vim keepalived.conf 

! Configuration File for keepalived
## 全局配置
global_defs {        		  ##全局定义块
   notification_email {     ##邮件通知
   root@localhost   
}
   #设置邮件的发送地址
   notification_email_from keepalived@localhost 
   smtp_server 127.0.01           #设置 smtp server 地址
   smtp_connect_timeout 30        #设置连接 smtp 服务器超时时间
   router_id LVS_DEVEL           #load balancer 的标识 ID,用于 email 警报
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

## VRRPD配置
vrrp_instance VI_1 {
    state MASTER    #备机改为 BACKUP,此状态是由 priority 的值来决定的,
                    #当前priority 的值小于备机的值,那么将会失去 MASTER 状态
    interface eth0            #HA 监测网络接口
    virtual_router_id 51      #主、备机的 virtual_router_id 必须相同,取值 0-255
	    priority 100           	#主机的优先级,备份机改为 50,主机优先级一定要大于备机
    advert_int 1            	#主备之间的通告间隔秒数
    authentication {
        auth_type PASS       #设置验证类型,主要有 PASS 和 AH 两种
        auth_pass 1111      
    }
    ##指定VIP,即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),
    ##所以每台服务器可以不用绑定任何的虚拟地址。
    virtual_ipaddress {
    	172.25.254.100      
    }
}

## 虚拟服务配置
virtual_server 172.25.64.100 80 {   #定义虚拟服务器
    delay_loop 3       #定义虚拟服务器
    lb_algo rr        #lvs 调度算法,这里使用轮叫
    lb_kind DR        #LVS 是用 DR 模式
    #persistence_timeout 50         #注释掉
    protocol TCP     #指定转发协议类型,有 tcp 和 udp 两种

    real_server 172.25.254.2 80 {    #配置服务节点
		TCP_CHECK{      ##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒
        weight 1      	##默认为1,0为失效
            connect_timeout 3     #10 秒无响应超时
            retry 3               #重试次数
            delay_before_retry 3    #重试间隔
        }
    }
    
    real_server 172.25.254.3 80 {
		TCP_CHECK {
		weight 1
		connect_port 80
		connect_timeout 3
        }
    }
}

在这里插入图片描述

在这里插入图片描述

配置文件发给备机server4并修改:

scp keepalived.conf [email protected]:/etc/keepalived/

只需要修改两处:
在这里插入图片描述

在server1和server4中开启服务:

systemctl start keepalived

7. 测试

开启服务后在server1中可以看到VIP(自动分配vip地址)和写好的策略(server4中也会有策略):

ip addr show
ipvsadm -ln

在这里插入图片描述

在这里插入图片描述

server1正常工作时:

curl 172.25.254.100

在这里插入图片描述

server1关掉时:

systemctl stop keepalived
curl 172.25.254.100		#不会有影响

在这里插入图片描述

在server4中查看到VIP(vip地址漂移到server4):

ip addr show

在这里插入图片描述

server1开启:

systemctl start keepalived
ip addr show		#VIP又重新配置在server1上了

在这里插入图片描述

在这里插入图片描述

由测试可以看出:keepalived的作用就是保证节点正常工作,如果主节点宕掉,备节点就立刻上场代替主节点工作。当主节点重新正常工作时,立即将备节点替换下去。不会影响客户的使用

发布了175 篇原创文章 · 获赞 11 · 访问量 6071

猜你喜欢

转载自blog.csdn.net/weixin_45775963/article/details/104460998