Keepalived双机热备配置
2011.05.24 TsengYia#126.com http://tsengyia.blog.chinaunix.net/
附注:
keepalived实现了VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),可以提供较好的热备故障恢复机制。除此以外,还可以结合Linux内核的LVS机制作为Load Balancer负载分配器,构建高可用的负载均衡群集。
#################################################################
系统环境:
RHEL 5.5 [2.6.18-194.el5]
平台结构:
热备虚拟地址VIP: 192.168.7.10
Host1: 192.168.7.11
Host2: 192.168.7.12
软件环境:
—— RHEL5光盘自带的RPM软件包
mutt-1.4.2.2-3.0.2.el5.i386.rpm
httpd-2.2.3-43.el5.i386.rpm
vsftpd-2.0.5-16.el5_4.1.i386.rpm
iputils-20020927-46.el5.i386.rpm
—— 从下载的软件包
keepalived-1.2.2.tar.gz
#################################################################
一、安装keepalived(Host1、Host2)
1. 编译安装keepalived
[root@localhost ~]# tar zxf keepalived-1.2.2.tar.gz
[root@localhost ~]# cd keepalived-1.2.2/
[root@localhost keepalived-1.2.2]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686
……
Keepalived configuration
-------------------
Keepalived version :1.2.2
Compiler :gcc
Compiler flags :-g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib :-lpopt -lssl -lcrypto
Use IPVS Framework :Yes
IPS sync daemon support :Yes
IPVS use libnl :No
Use VRRP Framework :Yes
Use Debug flags :No
[root@localhost keepalived-1.2.2]# make && make install
—— 注意1:make步骤中若出现fd_set、blkcnt_t类型冲突之类的错误,可以修改./keepalived/libipvs-2.6/ip_vs.h文件,将#include linux/types.h行移到#include sys/types.h行之后,然后重新执行make进行编译即可。
[root@localhost keepalived-1.2.2]# vi keepalived/libipvs-2.6/ip_vs.h
……
#include sys/types.h
#include linux/types.h
……
[root@localhost keepalived-1.2.2]# make && make install
2. 确认安装情况
(1) 添加keepalived服务
[root@localhost ~]# ls /etc/init.d/keepalived
/etc/init.d/keepalived
[root@localhost ~]# chkconfig --add keepalived
[root@localhost ~]# chkconfig keepalived on
(2) 确认keepalived的配置文件
在samples/目录下默认提供了很多样例配置文件,实际应用时可以作为参考。
[root@localhost ~]# ls -F /etc/keepalived/
keepalived.conf samples/
二、配置针对VIP地址的双机热备(Host1、Host2)
实际的应用服务通过虚拟IP地址(VIP)提供。
配置keepalived,将Host1作为MASTER,Host2、Host3等作为BACKUP,针对VIP地址进行热备。
1. 编写发送状态告警的邮件脚本(Host1、Host2)
若所用的SMTP服务器要求认证,建议使用mutt、msmtp进行,编写相应的脚本来定制邮件内容。mutt+msmtp的配置过程参见另篇另篇《使用mutt+msmtp通过外部邮箱发送邮件》:http://blogold.chinaunix.net/u1/40349/showart_2543437.html。
[root@localhost ~]# vi /usr/sbin/kalert.sh
#!/bin/bash
HOST=$(/bin/uname -n)
TIME=$(/bin/date +"%F %R")
CONTENT="$TIME $HOST transited to $1 state."
SUBJECT="Keepalived Alert!"
MAILADD="kadmin@tsengyia.com"
echo "$CONTENT" | /usr/bin/mutt -s "$SUBJECT" $MAILADD
[root@localhost ~]# chmod +x /usr/sbin/kalert.sh
2. Host1(MASTER)的配置
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_TEST_R1
}
vrrp_instance VI_1 {
state MASTER #//主结点为MASTER,其他作为BACKUP
interface eth0 #//承载VIP地址的物理接口
virtual_router_id 1 #//虚拟路由器的ID号,每个热备组保持相同
priority 100 #//竞选优先级,数字越大优先级越高
advert_int 3 #//通告间隔秒数(心跳频率)
authentication { #//本VRRP组的认证信息
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #//热备所针对的虚拟地址(VIP),可以有多行
192.168.7.10
}
notify_master "/usr/sbin/kalert.sh master" #//状态变为MASTER时的操作
notify_backup "/usr/sbin/kalert.sh backup" #//状态变为BACKUP时的操作
notify_fault "/usr/sbin/kalert.sh fault" #//状态变为FAULT时的操作
}
[root@localhost ~]# /etc/init.d/keepalived start
3. Host2、Host3、……(BACKUP)的配置
与Host1中的配置文件基本相同,只需将state改为BACKUP、将priority改为较小的数值(如99)即可。
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_TEST_R2
}
vrrp_instance VI_1 {
state BACKUP #//作为备份节点BACKUP
interface eth0
virtual_router_id 1
priority 99 #//优先级应低于MASTER主机
advert_int 3
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.7.10
}
notify_master "/usr/sbin/kalert.sh master"
notify_backup "/usr/sbin/kalert.sh backup"
notify_fault "/usr/sbin/kalert.sh fault"
}
[root@localhost ~]# /etc/init.d/keepalived start
三、热备测试(ping、FTP、HTTP)
在整个热备组中,接管MASTER的主机将会启用VIP地址,负责响应针对此虚拟地址的访问。
需通过ip命令才能看到VIP接口地址,用ifconfig命令看不到。
[root@localhost ~]# ip addr show dev eth0
2:eth0 mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:85:e4:49 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.11/24 brd 192.168.7.255 scope global eth0
inet 192.168.7.10/32 scope global eth0
valid_lft forever preferred_lft forever
1. 连通性测试
在其他主机持续ping虚拟IP地址192.168.7.10。
--> 禁用Host1的eth0网卡,发现只丢了1、2个包后即恢复正常,表示已有其他主机接管VIP地址。
--> 跟踪Host1、Host2主机的/var/log/messages日志文件可以看到Host1转为BACKUP、Host2转为MASTER的状态变化。
--> 重新启用Host1的eth0网卡,由于Host1的优先级高,因此会抢占VIP的控制权,转为MASTER状态,而其他主机退让为BACKUP状态。
2. FTP服务测试
Host1、Host2均启用匿名FTP服务,各自FTP目录下存放不同的测试文件。
--> 使用FlashFXP等客户端软件访问ftp://192.168.7.10,可以看到Host1中的FTP文档。
--> 禁用Host1的eth0网卡,然后刷新FTP客户端的浏览列表,发现看到的FTP文档已变为Host2的。
--> 重新启用Host1的eth0网卡,再次刷新FTP客户端的浏览列表,看到的FTP文档又变回Host1的。
3. HTTP服务测试
Host1、Host2均启用HTTP服务,各自网站目录下存放不同的测试网页。
--> 使用浏览器访问,可以看到Host1中的网页文档。
--> 禁用Host1的eth0网卡,然后刷新浏览器,发现网页内容已变为Host2的。
--> 重新启用Host1的eth0网卡,再次刷新浏览器,网页内容又变回Host1的。
#################################################################
阅读(2215) | 评论(0) | 转发(1) |