最近在做服务器的高可用性,考虑主从热备初步准备采用keepalive这个工具来完成这个需求,下面主要做了一个keepalive入门实验
?
两台centos
172.171.48.151 主
172.171.48.158 备
?
keepalive两台机器都要安装
?
?
keepalive依赖下面几个包
?rpm -qa |grep gcc
?rpm -qa |grep openssl-devel
如果没安装的就yum一下
?
下载最近的安装包?http://www.keepalived.org/
本人上传到linux机器的 /usr/local/program/ ?目录下
执行解压
tar -zxvf keepalived-1.2.19.tar.gz
执行安装
cd keepalived-1.2.19 ./configure make make instal
还有
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/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/sbin/keepalived /usr/sbin/
?
配置文件路径:/etc/keepalived/keepalived.conf
?
151上的keepalived.conf
! Configuration File for keepalived
#全局配置标识,表面下面的区域{}是全局配置
global_defs {
#里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
notification_email {
nanyoujichen@163.com
}
#notification_email_from:表示发送通知邮件时邮件源地址是谁
notification_email_from 17wifi@fnic.cn
#smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
smtp_server mail.fnic.cn
#smtp_connect_timeout:连接smtp超时时间
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
vrrp_instance VI_1 {
#本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
state MASTER
#interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
interface p4p1
#virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
virtual_router_id 100
#priority:设置本节点的优先级,优先级高的为master,不能超过255
priority 100
#advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
advert_int 1
#验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
authentication {
auth_type PASS
auth_pass 1111
}
#VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段
virtual_ipaddress {
172.171.51.152
}
}
?
158上的keepalive.conf
! Configuration File for keepalived
#全局配置标识,表面下面的区域{}是全局配置
global_defs {
#里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
notification_email {
nanyoujichen@163.com
}
#notification_email_from:表示发送通知邮件时邮件源地址是谁
notification_email_from 17wifi@fnic.cn
#smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
smtp_server mail.fnic.cn
#smtp_connect_timeout:连接smtp超时时间
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
vrrp_instance VI_1 {
#本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
state SLAVE
#interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
interface p1p1
#virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
virtual_router_id 100
#priority:设置本节点的优先级,优先级高的为master,不能超过255
priority 90
#advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
advert_int 1
#验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
authentication {
auth_type PASS
auth_pass 1111
}
#VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段
virtual_ipaddress {
172.171.51.152
}
}
?
?
/etc/init.d/keepalived start
?
?
?
?
?
?
两台机器的1199端口分别都部署了2个测试web应用,用来模拟主备的情况
访问
http://172.171.51.152:1199/TestHa/
?应该是主生效
结果如图:
?
?
?在151上执行
/etc/init.d/keepalived stop
?然后在请求url,结果:
可见keepalive虚拟出一个虚拟主机171.172.51.152,然后keepalive顺利的排除了已经挂掉的主机,让请求访问到了备机
?
?
?
?
?
?
?
思考
虽然上图很好的演示了主备情况,但是对于javaweb应用来说,通常都是tomcat挂死,而这个情况下keepalive仍然会继续运行,是否keepalive会提供监听web的功能,尚待研究
?
?
?
?
?
资料:
http://www.cnblogs.com/hdflzh/p/4057098.html
http://www.cnblogs.com/tankaixiong/p/4065080.html
?
?
?
原文:http://spjich.iteye.com/blog/2241411