通过keepalived搭建LVS高可用行集群系统
 
网络拓扑图结构:
 

通过keepalived搭建LVS高可用行集群系统_第1张图片

 
 
各服务器IP地址规划:

节点类型
IP 地址规划
主机名
类型
Master Director Server
eth0 :192.168.4.131/24
eth1 :10.10.10.1/24
mdr.example.com
Public IP
Private IP
Backup Director Server
eth0 :192.168.4.132/24
eth1 :10.10.10.2/24
bdr.example.com
Public IP
Private IP
Real Server 1
eth0 :192.168.4.141/24
lo:0 :192.168.200/24
rsapp1.example.com
Public IP
Virtual IP
Real Server 2
eth0 :192.168.4.142/24
lo:0 :192.168.200/24
rsapp2.example.com
Public IP
Virtual IP

 
1. 安装keepalived
keepalived 起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断、稳定的运行。所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster功能。
Keepalived 的官方站点是http://www.keepalived.org可以在这里下载到各种版本,我们这里下载的是keepalived-1.2.7.tar.gz。
在主、备用服务器上做以下操作,安装步骤如下:
[root@mdr ~]# tar -zxf keepalived-1.2.7.tar.gz
[root@mdr ~]# cd keepalived-1.2.7
[root@mdr keepalived-1.2.7]# ./configure \
> --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686
[root@mdr keepalived-1.2.7]# make && make install
[root@mdr keepalived-1.2.7]# ln -s /usr/local/sbin/keepalived /sbin/
在编译选项中,“--sysconf”指定了keepalived配置文件的安装路径,即路径为/etc/keepalived/keepalived.conf,“--with-kernel-dir”这是个很重要的参数,但这个参数并不是要把Keepalived编译进内核,而是指定使用内核源码里面的头文件,即include目录。如果要使用LVS时,才需要用到此参数,否则是不需要的.
安装完成后。执行如下操作。若有keepalived使用的方法,则证明keepalived已经安装成功。
[root@mdr ~]# keepalived –help
2. 安装LVS软件
在主、备用服务器上做以下操作,检查kernel是否已经支持LVS的IPVS模块。
[root@mdr ~]# modprobe -l | grep ipvs
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
IPVS 提供的软件包有源码方式的也有rpm方式的,这里介绍源码方式安装IPVS,从http://www.linuxvirtualserver.org/software/ipvs.html下载对应版本的ipvs源码包。
[root@mdr ~]# tar zxf ipvsadm-1.24.tar.gz
[root@mdr ipvsadm-1.24]# cd ipvsadm-1.24
[root@mdr ipvsadm-1.24]# make && make install
注意:在make时有可能会出现错误编译信息,这是由于编译程序找不到对应内核的原因,按照如下操作就可以正常编译:
[root@mdr ~]# ln -s /usr/src/kernels/2.6.18-194.el5-i686 /usr/src/linux
[root@mdr ~]# ipvsadm --help
3. 配置keepalived
keepalived 的配置非常简单,仅仅需要一个配置文件即可完成HA cluster和lvs服务节点监控功能,keepalived的安装已经在上面章节进行了介绍,在通过keepalived搭建高可用的LVS集群实例中,主、备Director Server都需要安装keepalived软件,安装成功后,默认的配置文件路径为/etc/keepalived/keepalived.conf。一个完整的keepalived配置文件,有三个部分组成,分别是全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分。
[root@mdr ~]# cp /etc/keepalived/keepalived.conf \
> /etc/keepalived/keepalived.conf.default
[root@mdr ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   notification_email {
   }
   notification_email_from [email protected]
   smtp_server 192.168.4.254
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
                       ##vrrp 实例定义部分
vrrp_instance VI_1 {
state MASTER       ## 指定keepalived的角色,MASTER表示本地主机是主服务器,
                   ##BACKUP 表示本地主机是备用服务器
    interface eth0     ## 指定HA监测网络的接口
    virtual_router_id 51
    priority 100       ## 定义优先级,数字越大,优先级越高。在一个vrrp_instance
## 下,MASTER的优先级必须大于BACKUP的优先级
    advert_int 1       ## 设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔(s)
    authentication {   ## 设定验证类型和密码
        auth_type PASS ## 设置验证类型。主要有PASS和HA两种
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.4.100 ## 设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
    }
}
                        ## 虚拟服务器定义部分
virtual_server 192.168.4.100 80 {
    delay_loop 6        ## 设置运行情况检查时间(s)
    lb_algo rr          ## 设置负载调度算法,rr表示轮询算法
    lb_kind DR          ## 设置LVS实现负载均衡的机制,有NAT、TUN和DR三种模式
#    nat_mask 255.255.255.0
    persistence_timeout 50 ## 会话保持时间(s)
    protocol TCP
 
real_server 192.168.4.141 80 {
                   ## 配置服务节点1,需要指点real server的真是IP地址和端口
        weight 3       ## 配置服务节点的权值,权值大小用数字表示。数字越大,权值##越大,被访问的几率越高。
        TCP_CHECK {
            connect_timeout 3    ## 表示3秒无响应超时
            nb_get_retry 3       ## 表示重试次数
            delay_before_retry 3 ## 表示重试间隔
        }
    }
 
    real_server 192.168.4.142 80 {
        weight 1         ## 配置服务节点2
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
 
在配置keepalived.conf时,需要特别注意配置文件的语法格式,因为keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,keepalived也照样能启动起来,因而配置文件一定要正确。
在默认情况下,keepalived在启动时会查找/etc/keepalived/keepalived.conf配置文件,如果你的配置文件放在了其它路径下,可以通过“keepalived -f”参数指定你所在的配置文件路径即可。
keepalived.conf 配置完毕后,将此文件拷贝到备用Director Server对应的路径下,然后做两个简单的修改即可:
将“state MASTER”更改为“state BACKUP”
将priority 100更改为一个较小的值,这里改为“priority 90”
以上配置也可以通过命令来实现,但只能作为临时配置使用,重启keepalived服务后会自动加载配置文件里的配置信息。脚本配置信息如下。
[root@mdr ~]# cat /etc/init.d/lvsdr.sh
#!/bin/sh
# Description: Start LVS of Director Server.
VIP=192.168.4.100
RIP1=192.168.4.141
RIP2=192.168.4.142
VIP_COM=/sbin/ipvsadm
. /etc/rc.d/init.d/functions
case "$1" in
 start)
 echo "Start LVS of Director Server..."
# Set the Virtual  IP Address and sysctl parameter.
 /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
 echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table.
 $VIP_COM -C
#Set LVS.
 $VIP_COM -A -t $VIP:80 -s rr -p 600
 $VIP_COM -a -t $VIP:80 -r $RIP1:80 -g
 $VIP_COM -a -t $VIP:80 -r $RIP2:80 -g
#Run LVS.
 $VIP_COM
 ;;
 stop)
 echo "Close LVS Director Server..."
 echo "0" >/proc/sys/net/ipv4/ip_forward
 $VIP_COM -C
 /sbin/ifconfig eth0:0 down
 $VIP_COM -L
 ;;
 *)
 echo "Usage: $0 {start|stop}"
 exit 1
esac
[root@mdr ~]# chmod 755 /etc/init.d/lvsdr.sh
 
4. 配置Real Server节点
在LVS的DR和TUN模式下,用户的访问请求到达Real Server后,是直接返回给用户的,不再经过前端的Director Server。因此,需在每一个Real Server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。增加VIP的地址的操作可以通过创建脚本的方式来实现。创建文件/etc/init.d/lvsrs.sh,脚本内容如下:
[root@rsapp1 ~]# vim /etc/init.d/lvsrs.sh
#!/bin/bash
# Description: Start Real Server
VIP=192.168.4.100
. /etc/rc.d/init.d/functions
case "$1" in
 start)
 echo "Start LVS of Real Server..."
 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
 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)
 echo "Close LVS Real Server..."
 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
[root@rsapp1 ~]# chmod 755 /etc/init.d/lvsrs.sh
5. 启动keepalived+LVS集群系统
在主、备Director Server上分别启动keepalived服务,可以执行如下操作:
[root@mdr ~]# /etc/init.d/keepalived start
接着在Real Server上执行LVSRS脚本:
[root@rsapp1 ~]# /etc/init.d/lvsrs start
做到这里时keepalived+LVS高可用的LVS集群系统已经配置好在正常运行了。可查看/var/log/messages文件里面有详细信息输出情况。
可通过ipvsadm –L查看
[root@mdr ~]# ipvsadm –L
然后,在浏览器里输入:http://192.168.4.100 进行查看。