C'est La Vie

    人生无彩排,每一天都是现场直播!

    CentOS 上配置 LVS + keepalived 用作高可用负载均衡服务器

    在Linux环境下,我们可以使用LVS来作为Web服务的负载均衡。由于LVS基于IP协议,所以LVS又被叫做i […]

    在Linux环境下,我们可以使用LVS来作为Web服务的负载均衡。由于LVS基于IP协议,所以LVS又被叫做ipvs。

    在本文中,LVS服务运行与IP地址为172.16.24.139的服务器,两台Web服务器的IP地址分别为172.16.24.134、172.16.24.136。

    假设你的Linux服务器中已经安装好了ipvsadm和keepalived。

    如果没有安装,可以通过yum源来进行安装。

    # yum install ipvsadm keepalived

    下面直接说ipvsadm和keepalived的配置。

    1、LVS + keepalived 的配置

    由于keepalived与ipvsadm的深度整合,可以由keepalived来对ipvsadm的虚IP以及实体服务器IP进行托管。所以我们这里在安装好ipvsadm和keepalived之后,只需要修改keepalived的配置,并且启动keepalived服务,即可实现对ipvsadm的配置与管理。

    修改keepalived的配置文件

    # vim /etc/keepalived/keepalived.conf

    配置文件内容如下:

    global_defs {
        router_id LVS_DEVEL
    }
    
    vrrp_instance LVS_WEB {
        state MASTER    # 注意:如果Keepalived的备机,这里是SLAVE 
        interface eth0
        virtual_router_id 51
        priority 100    # 注意:这里是主备的权重,备一般权重低于主
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.16.24.140    # 虚IP
        }
    }
    
    # 定义虚拟服务器
    virtual_server 172.16.24.140 80 {
        delay_loop 3
        lb_algo rr    # 负载均衡算法
        lb_kind DR    # LVS工作模式
        persistence_timeout 0    # 会话保存时长(秒),0表示不使用stickyness会话
        protocol TCP
    
        # 定义实体服务器
        real_server 172.16.24.134 80 {
            weight 1    # 权重
            HTTP_GET {
                url {
                    path /testurl/test.jsp    # 验证实体服务器状态地址
                    digest 640205b7b0fc66c1ea91c463fac6334d    # 验证地址内容的md5摘要
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        # 定义实体服务器
        real_server 172.16.24.136 80 {
            weight 1
            HTTP_GET {
                url {
                    path /testurl/test.jsp
                    digest 640205b7b0fc66c1ea91c463fac6334d
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    

    修改系统网络设置:

    # vim /etc/sysctl.conf

    在文件中修改下面内容:

    net.ipv4.ip_forward = 1

    以上命令逐一执行完毕,并且无系统报错后,设置keepalived开机自启动,并立即启动keepalived服务:

    # chkconfig keepalived on
    # service keepalived start

    可以通过ipvsadm命令来查看负载均衡器的配置。

    # ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.16.24.140:http rr
      -> 172.16.24.134:http           Route   1      0          0
      -> 172.16.24.136:http           Route   1      0          0

    如看到上面信息,说明负载均衡器配置成功。

    2、实体服务器配置

    假设在你的实体服务器中,已经安装并且配置好了Web服务。

    两台实体Web服务器的配置如下,分别在两台Web服务器上依次执行下面的命令:

    # ifconfig lo:0 172.16.24.140 netmask 255.255.255.255 broadcast 172.16.24.140
    # route add default gw 172.16.24.140
    # 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
    # sysctl -p

    上面是临时修改配置的方法,如果需要做永久性修改的话,按照下面的说明来。

    添加一个虚拟IP地址:

    # vim /etc/sysconfig/network-scripts/ifcfg-lo:0

    向文件中写入下面内容:

    DEVICE=lo:0
    IPADDR=172.16.24.140
    NETMASK=255.255.255.255
    BROADCAST=172.16.24.140
    ONBOOT=yes
    NAME=loopbackvip

    修改系统网络设置:

    # 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

    OK,你可以reboot你的实体服务器了。

    3、配置完成,看效果

    打开浏览器,在浏览器中输入虚拟IP地址(172.16.24.140),有可能分别看到两台Web服务器上的内容哦~~

    另外,基于这种模式做负载均衡必须要求负载均衡服务器有双网卡,一个对内网,另一个对外网,并且还需要和后面的真实服务器是在同一个局域内。

    发表回复

    您的电子邮箱地址不会被公开。