LVS Keepalived 高可用群集部署

309 阅读3分钟

一、LVS Keepalived 高可用群集

  1. LVS

Linux虚拟服务器(Linux Virtual Server)

LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法

  1. Keepalived

1、支持故障自动切换(Failover)

2、支持节点健康状态检查(Health Checking)

判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

  1. Keepalived实现原理剖析

1、keepalived采用VRRP热备份协议实现Linux 服务器的多机热备功能

2、VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。

由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务

4、每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

5、若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

二、LVS+Keepalived 高可用群集部署

环境配置

主机IP地址
Director1192.168.86.20
Director2192.168.86.30
Web-Server1192.168.86.40
Web-Server2192.168.86.50
客户机(win7)192.168.86.100
  1. 配置负载调度器(2台相同)

    systemctl stop firewalld.service
    setenforce 0
    
    yum -y install ipvsadm keepalived
    modprobe ip_vs
    cat /proc/net/ip_vs
    
    vim /etc/sysctl.conf
    
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0
    
    sysctl -p
    
    ipvsadm-save > /etc/sysconfig/ipvsadm
    systemctl start ipvsadm
    
    ipvsadm -C
    ipvsadm -A -t 192.168.86.188:80 -s rr       #这里指定的虚拟IP为ens33:0网卡ip,重启keepliaved后会自动绑定虚拟网卡
    ipvsadm -a -t 192.168.86.188:80 -r 192.168.86.40:80 -g
    ipvsadm -a -t 192.168.86.188:80 -r 192.168.86.50:80 -g
    ipvsadm
    
    ipvsadm -ln
    
  2. 配置节点服务器(2台大差不差,web内容不相同方便测试)

    systemctl stop firewalld
    setenforce 0
    
    yum -y install httpd
    systemctl start httpd
    
    vim /etc/sysconfig/network-scripts/ifcfg-lo:0
    DEVICE=lo:0
    ONBOOT=yes
    IPADDR=192.168.86.188
    NETMASK=255.255.255.255
    
    service network restart 或 systemctl restart network
    ifup lo:0
    ifconfig lo:0
    
    vim /etc/sysctl.conf
    
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    
    sysctl -p
    echo 'web1' > /var/www/html/index.html(web1服务器)
    echo 'web2' > /var/www/html/index.html(web2服务器)
    
  3. 配置keeplived

    cd /etc/keepalived/
    cp keepalived.conf keepalived.conf.bak
    vim keepalived.conf
    ......
    global_defs {						#定义全局参数
    smtp_server 127.0.0.1               #邮件服务指向本地
    router_id MASTER                    #指定服务器(路由器)的名称,主备服务器名称须不同,主为MASTER,备为BACKUP
    #vrrp_strict						#加注释
    }
    vrrp_instance VI_1 {				#定义VRRP热备实例参数
    state MASTER                        #指定热备状态,主为MASTER,备为BACKUP
    interface ens33                     #指定承载vip地址的物理接口
    virtual_router_id 51                #指定虚拟路由器的ID号,每个热备组保持一致
    priority 100                     #指定优先级,数值越大优先级越高,主为100,备为99
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
    auth_type PASS				    #认证类型
    auth_pass 123123                #指定验证密码,主备服务器保持一致
    }
    virtual_ipaddress {				#指定群集vip地址
    192.168.86.188
    }
    }
    
    virtual_server 192.168.86.188 80 {
    delay_loop 10					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
    lb_kind DR                      #指定群集工作模式,直接路由(DR)
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
    real_server 192.168.86.40 80 {
    weight 1						#节点的权重
                TCP_CHECK {
                    connect_port 80			#添加检查的目标端口
                    connect_timeout 3		#添加连接超时(秒)
                    nb_get_retry 3			#添加重试次数
                    delay_before_retry 4	#添加重试间隔
            }
    }
    
    real_server 192.168.86.50 80 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
                    connect_port 80
                    connect_timeout 3
                    nb_get_retry 3
                    delay_before_retry 4
            }
    }
    }
    #删除后面多余配置
    
  4. 配置完成,进行访问测试