一、 体系架构:

前端两台服务器作 LVS 负载均衡,两台是为了作双机热备使用(可以为多台)。后端两台服务器(可以为多台),作业务使用,客户端通过负载均衡后,将连接 ( 以 TCP 连接为例 ) 路由到业务服务器。

二、            硬件环境:Dell PowerEdge R710

三、           

LVS 两台机器安装:RHEL 4.8 (Red Hat Enterprise Linux 4.8) 64 位。注意安装系统时按F10

分别命名为:LVS1,LVS2, 默认LVS1 作主机,LVS2

后端两台服务器安装:Windows server 2003, 需安装虚拟网卡Windows loopback Adapter 。分别命名为Server1,Server2

IP

默认网关地址:192.168.10.1

子网掩码:255.255.255.0

虚拟服务器地址(Virtual Server IP) :192.168.10.15

LVS1 地址:192.168.10.16

LVS2 地址:192.168.10.17

Server1: 192.168.10.18

Server2: 192.168.10.19

四、            LVS 软件安装:下载ipvsadm 、keepalived.(ipvsadm-1.24.tar.gz 、keepalived-1.1.19.tar.gz ,这两个版本比较小巧稳定,其它版本也可以,但是keepalived-1.1.20.tar.gz 在CentOS-5.5 上编译是乎有点问题), 在有的系统上ipvsadm 是默认安装的,但有的系统没有安装,如FC4,CentOS-5.5 都已安装。,运行ipvsadm – ln 看看有没有错误提示即可知道。这两个软件具体功能介绍参看说明文档,此处只做配置说明, 以root

1.    安装ipvsadm:

首先要建立到内核的连接,运行cat /proc/version 查看内核版本, RHEL 4.8 内核2.6.9 -89.EL-smp-x86_64

建立到内核的连接:ln – s /usr/src/kernels/2.6.9-89.EL-smp-x86_64  /usr/src/linux

tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make

make install

无需作另外配置即可使用

Ipvsamd – ln

2.    安装keepalived

由于系统的原因,在安装keepalived-1.1.19 之前要修改一个地方,如果已经在第一步安装ipvsadm

vi /usr/src/linux/include/linux/types.h

注释到以下两行

/*

   typedef __u16 __bitwise  __sum16

   typedef __u32 __bitwise  __wsum

*/

不过要注意,这样做是否会引起其它程序不能编译未可知。

如果不这样做会报类似这样的错误:

/usr/src/linux/include/linux/types.h:158: error: syntax error before "__sum16"

/usr/src/linux/include/linux/types.h:159: error: syntax error before "__wsum"

 

tar zxvf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19

 

首先建立到内核的链接

ln – s /usr/src/kernels/2.6.9-89.EL-smp-x86_64  /usr/src/linux

./configure

或者

./configure – with-kernel-dir = /usr/src/kernels/2.6.9-89.EL-smp-x86_64

 

检查后看检查结果是否配置正确,是不是支持ipvsadm

make

make install

 

查看keepalived

find / -name keepalived

将keepalived

cp /usr/local/etc/rc.d/init.d/keepalived     /etc/rc.d/init.d

cp /usr/local/etc/sysconfig/keepalived       /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/sbin/keepalived         /usr/sbin/

 

至此,keepalived 除了配置已安装完毕。要让keepalived 正确运行,还需做好配置,首先开启linux

开启路由功能:

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1     # 为1

sysctl – p                   #

 

关闭防火墙

service iptables stop

 

复制一个keepalived.conf

cd /etc/keepalived/

vi keepalived.conf

 

LVS1 环境配置如下( 作主机)

 

! Configuration File for keepalived
 
global_defs {
    notification_email {
      acassen@firewall.loc
       failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
     state BACKUP        #
     nopreempt           #
     interface eth0
     virtual_router_id 51
     #mcast_src_ip 192.168.10.17
     priority 100       #
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.10.15        #
     }
}
virtual_server 192.168.10.15 8001 {     #
     delay_loop 6
     lb_algo wrr 
     lb_kind DR
     persistence_timeout 50
     protocol TCP
 
     real_server 192.168.10.18 8001 {     #
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 10
             delay_before_retry 10
          connect_port 8001              #
         }
     }
 
     real_server 192.168.10.19 8001 { #
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 10
             delay_before_retry 10
             connect_port 8001
         }
     }
}

其中global_defs

LVS2

! Configuration File for keepalived
 
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
     state BACKUP      # 作备分机,由priority
     interface eth0
     virtual_router_id 51
     #mcast_src_ip 192.168.10.16
     priority 99
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
     192.168.10.15
     }
}
 
virtual_server 192.168.10.15 8001 {
     delay_loop 6
     lb_algo wrr 
     lb_kind DR
     persistence_timeout 50
     protocol TCP
     real_server 192.168.10.18 8001 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 10
             delay_before_retry 10
             connect_port 8001
         }
     }
 
     real_server 192.168.10.19 8001 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 10
             delay_before_retry 10
             connect_port 8001
         }
     }
}

以上配置的各个详细项参见文档,需注意几个地方:

vrrp_instance VI_1 {

    state BACKUP     # 作备分机,由priority

    interface eth0

    virtual_router_id 51

    #mcast_src_ip 192.168.10.16

    priority 99

    advert_int 1

     authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

    192.168.10.15

    }

}

此处配置双机热备的调度,有两种方式:

(1)

主机:state MASTER

      priority 100 #

       nopreempt #

      advert_int 1    #

备机:state BACKUP

      priority 99 #

      nopreempt #

      advert_int 1    #

 

(2)

主机:state BACKUP

      priority 100 #

      nopreempt #

      advert_int 1    #

备机:state BACKUP

      priority 99 #

      #nopreempt

      advert_int 1    #

 

LVS 配置即好,开启LVS

service keepalived start

ipvsadm – ln

 

五、           

主要是安装Microsoft loopback Adapter 虚拟网卡:

控制面板-> 添加硬件-> 硬件已连接-> 添加新硬件-> 安装我手动从列表选择的硬件-> 网络适配器->Microsoft->Microsoft loopback Adapter

 

设置IP 地址:设成虚拟IP 地址,192.168.10.15 和keepalived.conf 配置的虚拟IP 一样,默认网关不设置,子网先填写一个255.255.255.0, 确定后停止网卡,再到注册表中找到该地址对应的子网掩码,改成255.255.255.255,

 

配置好之后,启动此两台后端服务器上的服务程序,客户端即可通过LVS 按算法分配连接到服务器上来。如果服务器是linux

 

 

六、           

Keepalived 被证明是一个具有高可用性的集群调度软件,但是在不同的硬件和操作系统版本上可能有一些差异,第一次配置或许不那么顺利,或多或少会遇到一些问题,正所谓知道不难,不知道甚难。曾经在R710 上安装CentOS-5.3 部署keepalived ,当客户端连接超过1500 时,LVS 机器网络中断,ping 出去或者ping 进来都ping 不通,只有ping 自己能ping

当运动service network restart 后,又能跑一下,连接达到1500 时又是同样的问题。情绪是对连接数有限制,查看ulimit – n 显示是1024 。当改了这个限制还是一样的问,ping 机器是显示的是无法找到路由。百思不得其角,于是换装操作系统,RHEL 4.8 ,一切如keepalived

 

另外还有一个类似的软件keartbeat ,和keepalived 是两套不同的模式,是不相关的系统不要混肴,heartbeat 比keepalived

lvs + keepalived

lvs + ldirectord + heartbeat

Keepalived