Linux高可用LVS负载均衡集群的搭建(Keepalived+LVS/DR)

1.实例环境

2.首先安装keepalived和ipvsadm软件包

3.Keepalived配置

3.1 Master配置(主负载均衡器)

3.2 Backup配置(从负载均衡器)

4.配置真实服务器节点

5.测试Keepalived+LVS/DR负载均衡集群

5.1 负载均衡测试

5.2 高可用性功能测试

5.3 故障切换测试



 

在这种模式下,虚拟IP在某一时刻只能属于某一个节点,另一个节点作为备用节点存在。当主节点不可用是,备用节点接管虚拟IP,提供正常服务。

1.实例环境

VIP(虚拟IP)

192.168.73.111

Master(主负载均衡器)

192.168.73.159

Backup(从负载均衡器)

192.168.73.133

Server1(服务器1)

192.168.73.156

Server2(服务器2)

192.168.73.154

注:所有设备均关闭防火墙和SELinux,否则实验可能不会成功。

[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0

2.首先安装keepalived和ipvsadm软件包

在主和从负载均衡器上均安装

[root@master ~]# yum -y install ipvsadm keepalived
[root@backup ~]# yum -y install ipvsadm keepalived

3.Keepalived配置

3.1 Master配置(主负载均衡器)

[root@CentOS7 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {                  #全局定义部分
   notification_email {        #设置报警邮件地址,可以有多个
     root@loaclhost.localdomain
   }
   notification_email_from root@localhost.localdomain
   smtp_server 192.168.200.1   #设置SMTP服务器地址
   smtp_connect_timeout 30     #设置连接SMTP服务器的超时时间
   router_id master            #标识运行keepalived服务器的一个标识
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_instance VI_1 {           #VRRP实例定义部分   
    state MASTER               #指定该节点为主节点(需大写),备用节点为BACKUP
    interface ens33            #绑定虚拟IP的网络接口
    virtual_router_id 51       #VRRP组名,两个节点需设置一样,以指明各个节点属于同一VRRP组
    priority 100               #主节点的优先级(1-254),默认100,注意从节点优先级需低于主节点
    advert_int 1               #设定两个节点之间同步检查的时间间隔,两个节点需一致
    authentication {           #设置验证信息,两个节点需一致
        auth_type PASS         #设置验证类型,主要有PASS和AH两种
        auth_pass 1111         #设置验证密码,在一个vrrp_instance下,两个节点必须使用相同的密        
                                码才能正常通信
    }
    virtual_ipaddress {        #指定虚拟IP,两个节点需设置一样,可以有多个,每行一个
        192.168.73.111
    }
}

virtual_server 192.168.73.111 80 {  #虚拟IP服务
    delay_loop 6                    #设定检查实际服务器的间隔
    lb_algo rr                      #指定LVS调度算法
    lb_kind DR                      #指定LVS模式,主要有NAT、TUN、DR三种
#    persistence_timeout 50         #会话保持时间
    protocol TCP                    #转发协议为TCP

    real_server 192.168.73.154 80 { #后端真实服务器配置
        weight 1                    #设置服务器节点的权重值
        TCP_CHECK {                 #真实服务器的状态检测设置部分,单位秒
            connect_timeout 3       #连接超时时间
            nb_get_retry 3          #重试次数
            delay_before_retry 3    #重试间隔
            connect_port 80         #连接端口
        }
    }

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

启动keepalived服务

[root@master ~]# systemctl start keepalived

3.2 Backup配置(从负载均衡器)

[root@backup ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
     root@loaclhost.localdomain
   }
   notification_email_from root@localhost.localdomain
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id backup
#   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 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.73.111
    }
}

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

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

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

启动keepalived服务

[root@backup ~]# systemctl start keepalived

4.配置真实服务器节点

[root@Server1 ~]# vim /etcinit.d/lvsrsdr

#!/bin/bash
#description:Start Real Server
VIP=192.168.73.111
source /etc/init.d/functions
case "$1" in
    start)
        echo "start LVS of Realserver DR"
        /sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
#!/bin/bash
#description:start Realserver
VIP=192.168.73.111
source /etc/init.d/functions
case $1 in
    start)
        echo "start LVS of Realserver DR"
        /sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev lo:1
        echo '1' > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo '2' > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    stop)
        /sbin/ifconfig lo:1 down
        echo "Close LVS of Realserver DR"
        echo '0' > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo '0' > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo '0' > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo '0' > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
*)
        echo "Usage: $0 {start|stop}"
        exit 1
esac


 

在Server1和server2节点上执行如下操作
[root@Server1 init.d]# chmod +x lvsrzdr
[root@Server1 init.d]# ./lvsrzdr start
start LVS of Realserver DR
[root@Server1 ~]# echo 192.168.73.156 > /var/www/html/index.html 
[root@Server1 ~]# systemctl start httpd


[root@Server2 init.d]# chmod +x lvsrzdr
[root@Server2 init.d]# ./lvsrzdr start
start LVS of Realserver DR
[root@Server2 ~]# echo 192.168.73.154 > /var/www/html/index.html 
[root@Server2 ~]# systemctl start httpd

5.测试Keepalived+LVS/DR负载均衡集群

5.1 负载均衡测试

5.2 高可用性功能测试

高可用性是通过LVS的两个负载均衡器完成的。为了模拟故障,先将主负载均衡器上面的Keepalived服务停止,然后观察备用负载均衡器上Keepalived的运行日志,信息如下。从日志中可以看出,主机出现故障后,备用机立刻检测到,此时备用机变为 MASTER角色,并且接管主机的虚拟IP资源,最后将虚拟IP绑定在ens33设备上。

 

5.3 故障切换测试

故障切换是测试在某个节点出现故障后,Keepalived 监控模块是否能及时发现,然后屏蔽故障节点,同时将服务转移到正常节点上执行。这里将Real Server 1节点的服务停掉,假定这个节点出现故障,然后查看主、备机日志信息,相关日志如下。

通过日志可以看出,Keepalived 监控模块检测到 192.168.73.156这台主机出现故障后,将此节点从集群系统中剔除。

此时访问http://192.168.73.111这个地址,应该只能看到“192.168.73.156”了,这是因为Server1出现故障,而Keepalived监控模块将Server1从集群系统中剔除了。

下面重新启动real server 1节点的服务,可以看到Keepalived的日志信息如下。

从日志可知,Keepalived 监控模块检测到 192.168.73.156 这台主机恢复正常后,又将此节点加入到集群系统中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值