搭建LVS(DR模式)+Keepalived高可用群集,可跟做!!!

Keepalived的设计目标就是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在,对LVS负载调度器实现热备切换、提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

在基于LVS(DR模式)+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本次实验以DR模式的LVS群集为基础,增加一台负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站群集平台,实验拓补如图:
搭建LVS(DR模式)+Keepalived高可用群集,可跟做!!!
由于实验环境,所以就搭建两台Web站点服务器,NFS共享存储跟调度器、Web节点在同一网段上,简化实验步骤。实际生产环境中,正常情况下,共享存储不能跟调度器、Web节点在同一网段上,需要用交换机隔离出来,以增加对共享存储的读写操作。实际环境中,调度器、Web节点都至少需要两个网卡,便于跟共享存储通信。实验环境,简化了一下,大家多多体谅!

使用Keepalived构建LVS群集时,也需要用到ipvsadm管理工具(查看负载调度效果时使用),大部分工作由Keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集外)。关于如何搭建NFS共享存储,搭建NFS共享存储特别简单!本次实验就不做了,对NFS群集不清楚的朋友可以参考博文:LVS负载均衡群集之构建NAT模式,可跟做!!!

实验步骤:

一、配置主调度器

1.全局配置、热备配置

首先为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址。

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//关闭防火墙和SELinux
[root@localhost ~]# yum -y install keepalived ipvsadm
//安装相应的服务、工具
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
//编辑Keepalived服务的配置文件
  //配置文件少了许多没必要的东西,比如关于邮件的内容,为了更加简便的理解其配置文件内容
global_defs {                                              
   router_id LVS_DEVEL1                     //主调度器名称
}

vrrp_instance VI_1 {
    state MASTER                               //主调度器的热备状态
    interface ens33
    virtual_router_id 1
    priority 100                                     //主调度器的优先级
    advert_int 1
    authentication {                              //主、从热备认证信息
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                        //指定群集VIP地址(可以有多个)
        192.168.1.254
    }
}

关于Keepalived服务的配置文件详细介绍可以参考博文:利用Keepalived实现双机热备详解

2.Keepalived配置文件中Web服务池配置

在Keepalived的热备配置基础上添加“Virtual_server VIP 端口 {...}”区域来配置虚拟服务器,主要包括对负载调度器算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。

[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
                                           ……………………………………
//省略Keepalived配置文件的全局配置、热备配置
virtual_server 192.168.1.254 80 {                                 //虚拟服务器地址(VIP)、端口
    delay_loop 15                                                           //健康检查的间隔时间(秒)
    lb_algo rr                                                                  //轮询(rr)调度算法
    lb_kind DR                                                               //直接路由(DR)群集工作模式
    !  persistence_timeout 50                                        
        //连接保持时间(秒),“!”表示不启用的意思,为了验证效果,建议禁用。
    protocol TCP                                                            //应用服务采用的是TCP协议

    real_server 192.168.1.3 80 {                                  //第一个Web节点的地址
        weight 1                                                             //节点的权重
        TCP_CHECK {                                                  //健康检查方式
            connect_port 80                                            //检查的目标端口
            connect_timeout 3                                        //连接超时(秒)
            nb_get_retry 3                                              //重试次数
            delay_before_retry 4                                    //重试间隔
        }
    }

    real_server 192.168.1.4 80 {                              //第二个Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }
    }
        //如果有多个Web节点服务器,依次添加即可!
}
//注意配置文件的“{}”,较多,小心修改
[root@localhost ~]# systemctl start keepalived
//启动Keepalived服务

二、配置从调度器

从调度器的配置与主调度器基本相同,包括全局配置、热备配置、服务器池配置,只需修改全局配置中:路由器名称(router_id)、热备状态(state)、优先级(priority)。

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//关闭防火墙和SELinux
[root@localhost ~]# yum -y install keepalived ipvsadm
//安装相应服务、工具
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
//编辑Keepalived服务的配置文件
global_defs {
   router_id LVS_DEVEL2                        //从调度器名称
}

vrrp_instance VI_1 {
    state BACKUP                                    //热备状态(备用)
    interface ens33
    virtual_router_id 1
    priority 99                                           //从调度器的优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254
    }
}

virtual_server 192.168.1.254 80 {
    delay_loop 15
    lb_algo rr 
    lb_kind DR 
    !  persistence_timeout 50
    protocol TCP

    real_server 192.168.1.3 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }   
    }   

    real_server 192.168.1.4 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }   
    }   
}   

除了上述标记的地方,剩下的地方跟主调度器一样(必须一样)!
[root@localhost ~]# systemctl start keepalived
//启动Keepalived服务

三、配置Web节点服务器


根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有所差异。本次实验以DR模式为例,除了需要调整/proc系统的ARP响应参数外,还需要为虚拟接口(lo:0)配置VIP地址,并添加一条到VIP的本地路由。关于DR模式如何搭建Web节点服务器可以参考博文:LVS负载均衡群集之构建DR模式,可跟做!!!

大致步骤如下:

[root@localhost ~]# systemctl stop firewalld
s[root@localhost ~]# setenforce 0
//关闭防火墙与SELinux
[root@localhost ~]# yum -y install httpd
//安装http服务
[root@localhost ~]# echo qqqqq > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
//修改Web节点服务器的主页内容,并启动http服务
[root@localhost ~]# vim /etc/sysctl.conf
//修改内核参数,添加以下内容
net.ipv4.conf.all.arp_ignore  =  1
net.ipv4.conf.all.arp_announce  =  2
net.ipv4.conf.default.arp_ignore  =  1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore  =  1
net.ipv4.conf.lo.arp_announce  = 2
[root@localhost ~]# sysctl -p
//加载内核参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
[root@localhost network-scripts]# ifup lo
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.254  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
//为本机(lo)网卡添加虚拟IP
[root@localhost ~]# route add -host 192.168.1.254 dev lo:0
//添加一条到VIP的本地路由

不管几台Web节点服务器,都是同样的配置!
建议,两台Web节点服务器的主页不要一样,用于测试!在实际生产环境中,会搭建NFS共享存储(关于如何搭建NFS共享存储在博文开头已经提到)来自动同步Web节点服务器的主页内容!

四、测试LVS(DR模式)+Keepalived高可用群集

在客户机的浏览器中,能够通过LVS(DR模式)+Keepalived群集的VIP地址(192.168.1.254)正常访问Web页面内容,当主、从调度器任何一个失效时,Web站点依然可以访问(可能需要刷新几次或者重新打开浏览器);只要服务器池有两台或两台以上的真实Web节点服务器可用,就可以实现访问量的负载均衡(而且负载均衡效果比LVS负载均衡效果要明显)!自行验证!

在主、从调度器上可以根据/var/log/messages日志文件,跟踪故障切换过程。若要查看负载分配情况,可以在主调度器上,执行以下命令:

[root@localhost ~]# 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.1.254:80 rr
  -> 192.168.1.3:80               Route   1      1          0         
  -> 192.168.1.4:80               Route   1      1          0   

这就是为什么要安装ipvsadm工具。
最终可以验证LVS(DR模式)+Keepalived高可用负载均衡群集的健壮性!

建议搭建NFS共享存储,来保证Web节点服务内容一致(实际环境中肯定是这样做的)!

———————— 本文至此结束,感谢阅读 ————————

猜你喜欢

转载自blog.51cto.com/14157628/2439181