一、简易拓扑如下:

wKioL1RlfKnRQalZAARS8DC0BDg023.jpg

二、配置的简单说明:

Director的HA暂不使用,仅10.1.1.11上线,使用管理工具ipvsadm配置指令如下:

1、Director常规配置

   正常配置IP,检查防火墙开启相关端口,如无其他需求,推荐直接关闭

   setenforce 0 修改SElinux运行模式(非必要操作)

2、Director配置VIP

   ifconfig  eth0:1  10.1.1.100/24 up 

  (ifconfig eth0:1 10.1.1.100 broadcast 10.1.1.100 netmask 255.255.255.255 up)

   说明: 至于掩码,24或是32无所谓,其本来就是用来正常接收数据包的(基于此,尝试不使用10.1.1.11而直接在eth0上配置VIP,结果:失败,可能结论:实际的通讯不使用VIP,因而Director必须有一个其他可以正常通讯的ip)

3、Director上可能需要的其他配置

   a、配置路由

      route add -host 10.1.1.100 dev eth0:1

      说明: 此配置不是必要的(至少基于CentOS 6.4 64b OS不需要)

   b、开启转发功能

      echo 1 >/proc/sys/net/ipv4/ip_forward

      说明: 此配置不是必要的(至少基于CentOS 6.4 64b OS不需要

             DR模式的Director仅仅是修改目的MAC为某一台Real Server的MAC

             不涉及三层的转发

4、ipvsadm 添加Vserver和Rserver

ipvsadm -A -t 10.1.1.11:80 -s wlc

ipvsadm -a -t 10.1.1.11:80 -r 10.1.1.10 -g -w  1 [ -p 60 ]

ipvsadm -a -t 10.1.1.11:80 -r 10.1.1.20 -g -w  2 [ -p 60 ]

5、如果有特殊需求 可以考虑修改 tcp超时等参数

   参考指令:查看  ipvsadm  -l --timeout 依次显示TCP超时时间、FIN_WAIT、UDP超时时间

             设置: ipvsadm  --set  N1  N2 N3   建议 N2<N1

6、配置Real Server, 以10.1.1.10为例,仅LVS相关配置

    a、 linux系统作为Real Server

   (防火墙、网站搭建、SElinux等等自行检查和配置)

   ifconfig lo:1 10.1.1.100 netmask 255.255.255.255 broadcast 10.1.1.100 up

   说明:在RS上的VIP不用来做实际通讯,作用仅仅是:使RS接受目的地址是VIP的数据包。因此VIP只要不是配置在用来实际通讯的接口即可(例如tunl0等虚拟接口都可以)

   route  add -host  10.1.1.100 dev lo:1

   说明:此配置不是必须的(至少基于CentOS 6.4 64b OS不需要)。之所以添加此路由,目的是让RS从真实的物理接口发送数据包时,能够保证原地址是VIP而不是真实物理接口的IP(否则Client会拒绝接收)

   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/eth0/arp_ignore

   echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

   说明: 此操作的目的是为了让eth0和lo拒绝相应跟自己网段无关的arp请求或通告跟自己无关的arp信息,(让lo和eth0拒绝相应关于VIP的arp请求,并阻止eth0向网络中通告关于VIP的MAC信息)。为了以后防止更改使用的物理网口,可以设置:

   echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

   b、weindows系统作为Real Server, 分别以windows server 2003 和 2008R2 说明

   针对windows系统我们首相要做的就是添加一个loopback网卡,用它来配置我们的VIP。

   简单描述在windows OS中,添加loopback网卡的过程:

   2003中:控制面板->添加硬件

  2008中:见下图,选中设备管理器中的主机右键选择“添加新硬件”

wKiom1RlrN2A2aKRAAKupwRQFIw859.jpg


在配置VIP,并将其掩码设置为255.255.255.255时,2003 系统会遇到问题:

此时 可以先将掩码设置为255.255.255.0,然后修改注册表如下:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentConrolSert\Services\Tcpip\Parameters\Interfaces

其下可能会包含多个子项,可以根据右边的ipaddress键值判断哪个为loopback的配置项,确定之后

修改其netmask键值为255.255.255.255即可,重启系统后检查掩码是否生效。

(2003 OS不需要做与arp响应和通告的设置)


在2008 R2 OS中, 设置掩码为255.255.255.255的VIP没有问题,但设置完成之后需要对arp的响应和通告做配置,执行如下指令即可:

netsh interface ipv4 set interface "网卡别名" weakhostreceive=enabled

netsh interface ipv4 set interface "网卡别名" weakhostsend=enabled


例如Server 2008R2的物理网卡别名为LAN,而添加的loopback网卡就叫loopback,则执行:

netsh interface ipv4 set interface "LAN" weakhostreceive=enabled

netsh interface ipv4 set interface "LAN" weakhostsend=enabled

netsh interface ipv4 set interface "loopback" weakhostreceive=enabled

netsh interface ipv4 set interface "loopback" weakhostsend=enabled



三、常用的监控指令

    ipvsadm -ln

    ipvsadm -lnc 

    或组合watch指令

    watch  -n 1 'ipvsadm -ln'

    watch  -n 1 'ipvsadm -lnc'

四、简单说明piranha和keepalived的配置过程。

1、piranha 图形配置截图:

   全局设置:

wKiom1RlnErAizBzAAJWVV_NsmA622.jpg


添加虚拟服务器wKioL1RlnLqQQudsAALRiv2HQNM011.jpg


虚拟服务器的配置

wKiom1RlnEuwGet5AAJg_Tz8bHs002.jpg


添加Real Server

wKioL1RlnLqjdkhyAAKItW4rYv0149.jpg


其中一台Real Server的配置

wKiom1RlnEvAYu4IAAIcxwnD8jk634.jpg


Director对Real Server的健康状态检查

wKiom1RlnEvh8gtuAANeKYvu3go912.jpg


在Director开启pulse服务器之后,可以在此页面进行监控

wKioL1RlnLvC95OrAANmwy0d6Do499.jpg

可以配置BACKUP Director,如下:

wKioL1RlnzKwAR8GAAKvqF40zVQ002.jpg

2、keepalived配置文件如下:

  #cat /etc/keepalived/keepalived.conf  

! Configuration File for keepalived

global_defs {

   router_id LVS_MASTER  //此处在BACKUP Director上可以另起名字

}

vrrp_instance VI_1 {

    state MASTER     //此处在BACKUP Director上要改为BACKUP

    interface eth1

    virtual_router_id 51

    priority 200     //BACKUP的priority值一定要小于MASTER的

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.1.1.100

    }

}

virtual_server 10.1.1.100 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

    #persistence_timeout 50

    protocol TCP

# sorry_server 192.168.200.200 1358

    real_server 10.1.1.10 80 {

        weight 1

        HTTP_GET {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

    real_server 10.1.1.20 80 {

        weight 1

        HTTP_GET {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    } 

==============================================

说明:

     测试后,piranha的Director HA和 对Real Server的健康状态检测都没有问题; 在使用keepalived时, Director HA没有问题,但对Real Server的健康状态检查不能生效(当一台Web Server 宕机之后,其不能再 RS 列表中将其删除),于是写了一个简单小脚本来实现,可以让其在开启启动后自动在后台运行,脚本内容如下:

wKiom1RloG7yQu_2AAJeRHoM1ZI627.jpg





======================END=========================