通过keepalived搭建LVS高可用行集群系统
网络拓扑图结构:
各服务器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 {
}
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 进行查看。