Keepalived高可用集群+LVS

介绍

  • Keepalived软件起初是专门为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。

  • Keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写.VRRP出现的目的就是为了解决静态路由单点故障问题的.

VRRP原理

  1. master在工作状态会不断群发一个广播包(内涵优先参数)
  2. 其他路由收到收到广播后会和自己的优先参数作对比,如果优先参数小于自己则什么都不执行,如果优先参数大于自己则开启争抢机制
  3. 如果启动了争抢机制,他就会群发自己的优先参数,最终优先参数最小的称为master路由.
  • keepalived的三个核心模块
  1. core核心模块
  2. chech健康监测
  3. vrrp虚拟路由冗余协议

Keepalived服务的三个重要功能

  1. 管理LVS
  2. 对LVS集群节点检查
  3. 作为系统网络服务的高可用功能

Keepalived高可用故障切换转移原理

  • Keepalived高可用故障切换,是通过VRRP虚拟路由器冗余协议来实现的。

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

  • 主路由器(MASTER):虚拟路由器通过虚拟IP对外提供服务,而在虚拟路由器内部同一时间只有一台物理路由器对外提供服务,这台提供服务的物理路由器被称为主路由器。一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP数据转发等。

  • 备份路由器(BACKUP):虚拟路由器中的其他物理路由器不拥有对外的虚拟IP,也不对外提供网络功能,仅接受MASTER的VRRP状态通告信息,这些路由器被称为备份路由器。当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。

keepalived搭建

#安装keepalived
yum -y install keepalived                
#修改keepalived配置文件
vim /etc/keepalived/keepalived.conf  
        
  • 配置文件说明
! Configuration File for keepalived              

global_defs {                        #全局定义部分
   notification_email {              #设置警报邮箱
     acassen@firewall.loc            #邮箱
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc      #设置发件人地址
   smtp_server 192.168.50.1        #设置smtp server地址
   smtp_connect_timeout 30          #设置smtp超时连接时间 以上参数可以不配置
   router_id LVS_DEVEL #是Keepalived服务器的路由标识在一个局域网内,这个标识(router_id)是唯一的
}

vrrp_instance VI_1 {      #VRRP实例定义区块名字是VI_1
    state MASTER          #表示当前实例VI_1的角色状态这个状态只能有MASTER和BACKUP两种状态,并且需要大写这些字符ASTER为正式工作的状态,BACKUP为备用的状态
    interface eth0       
    virtual_router_id 51 #虚拟路由ID标识,这个标识最好是一个数字,在一个keepalived.conf配置中是唯一的, MASTER和BACKUP配置中相同实例的virtual_router_id必须是一致的.
    priority 100     #priority为优先级 越大越优先
    advert_int 1               #为同步通知间隔。MASTER与BACKUP之间通信检查的时间间隔,单位为秒,默认为1.
    authentication {   #authentication为权限认证配置不要改动,同一vrrp实例的MASTER与BACKUP使用相同的密码才能正常通信。
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  #设置虚拟IP地址
        192.168.50.16   #此格式ip a显示 ifconfig不显示
        192.168.50.17/24 dev eth0 label eth0:1    #绑定接口为eth0,别名为eth0:1
   }
#至此为止以上为实现高可用配置,如只需使用高可用功能下边配置可删除
#以下为虚拟服务器定义部分
virtual_server 192.168.50.16 80 {      #设置虚拟服务器,指定虚拟IP和端口
    delay_loop 6                           #健康检查时间为6秒
    lb_algo rr                               #设置负载调度算法 rr算法
    lb_kind DR                            #设置负载均衡机制 #有NAT,TUN和DR三种模式可选
    nat_mask 255.255.255.0         #非NAT模式注释掉此行  注释用!号
    persistence_timeout 50           #连接保留时间,50秒无响应则重新分配节点
    protocol TCP                           #指定转发协议为TCP 
    real_server 192.168.5.150 80 {      #RS节点1
        weight 1                #权重
        TCP_CHECK {             #节点健康检查
        connect_timeout 8       #延迟超时时间
        nb_get_retry 3          #重试次数
        delay_before_retry 3    #延迟重试次数
        connect_port 80         #利用80端口检查
    }
    }
    real_server 192.168.50.149 80 {      #RS节点2
        weight 1
        TCP_CHECK {
        connect_timeout 8
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80 
    }
    }
}

lvs+keepalived集群架构服务

  • LVS负载均衡高可用防止单点故障

  • keepalived负责管理lvs,检查lvs节点,实现高可用

  • 实验环境

  • 四台虚拟机:rhel7.6(我在VMware下完成)
    hostname;IPADDR
    server1 192.168.43.1
    server2 192.168.43.2
    server3 192.168.43.3
    server4 192.168.43.4

  • 关闭 firewalld selinux ,配置好yum源,disable NetworkManager

  • server1和server2充当DS(Director Server)

  • server1为主路由器,server2为备路由器

  • server3和server4充当RS (Real Server)

  • DS负载均衡器端(server1和server2)中:

- yum -y install ipvsadm 
- 添加绑定VIP
- ip addr add 192.168.0.89/24 dev ens33 label eth0:1
- 配置LVS-DR模式
- ipvsadm -A -t 192.168.43.100:80 -s rr #创建一个DR,并指定调度算法采用rr。
- ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.3 -g  #添加RS
- ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.3 -g  #添加RS
  • RS配置(server3和server4)

yum install -y  httpd
- systemctl enable --now httpd
- ip addr add 192.168.43.100/24 dev ens33
- yum install -y arptables
- arptables -A INPUT -d 192.168.43.100 -j DROP
- arptables -A OUTPUT -s 192.168.43.100 -j mangle --mangle-ip-s 192.168.43.3(这里修改为RS的实际地址)
  • LVS负载均衡器主的keepalived配置文件(server1中)
! 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
}
#IP漂移协议
vrrp_instance VI_1 {
    state MASTER#角色是master
    interface ens33 #vip 绑定端口
    virtual_router_id 51#让master 和backup在同一个虚拟路由里,id 号必须相同;
    priority 100#优先级,谁的优先级高谁就是master 
    advert_int 1 #心跳间隔时间
    authentication {
        auth_type PASS#认证
        auth_pass 1111#密码 
    }
    virtual_ipaddress {
        192.168.43.100#虚拟ip 绑定VIP
    }
}
#只接收80端口过来的请求
virtual_server 192.168.43.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
#RS服务器1
##健康检查
    real_server 192.168.43.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3#连接超时时间
            nb_get_retry 3#重连次数
            delay_before_retry 3#重连间隔
        }
    }
#RS服务器2
##健康检查
    real_server 192.168.43.4 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
  • LVS负载均衡器备的keepalived配置文件(server2中)
! 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 ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
 192.168.43.100
    }
}

virtual_server 192.168.43.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

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

    real_server 192.168.43.4 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
} 
  • 上面配置的keepalived可以实现两个功能,健康检查和冗余检测
  • 即当server3和server4(RS)其中挂掉一台时,就不进行轮询,直接访问痛的那一台后端服务器
  • 当server1和server2(调度器)挂掉一台时,当master挂掉,backup会及时跟上,当master恢复,backup又自动退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值