职位:技术总监 1、精通c++(linux平台、vc++Mfc、qt)、java、php、unity3d,略懂python 2、用c++开发过嵌入式产品,用c++开发过大型银行运维产品 3、用java开发大型银行运维产品,学校教务系统 4、用php开发进销存系统(在销售中),用php开发淘宝小程序 5、用unity3d开发衣柜设计软件,在运营中
分类: LINUX
2011-10-18 20:33:13
Keepalive是为lvs而做的,目的是为了lvs的高可用性,解决lvs的单点问题,以及真实服务器的检测功能(此功能相当于ldirectord)
1. 编译安装没有可用的rpm包,采用编译源码安装。
下载keepalived-1.2.2.tar.gz,并解包。
./configure
上面显示结果没有使用IPVS框架。这个选项必须为yes才行。原因是系统没有安装系统开发包。安装系统开发包即可,可以用yum -install kernel-dev。
由于虚拟机没设置上网,所以我直接从别的centos上把/usr/src/kernels/2.6.18-194.el5-i686这个文件夹拷了过来。然后做个链接,让keepalived能找到。
ln -s /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux
再./configure --prefix=/usr/local/keepalived
可看到结果
Make的时候出现如下错误:
/usr/include/time.h:105: 错误:与 ‘timer_t’ 类型冲突
/usr/src/linux/include/linux/types.h:31: 错误:‘timer_t’ 的上一个声明在此
查看这两个头文件下的timer_t的确实现方式不一样。查看系统版本跟内核开发包版本完全一致,让人崩溃的centos,头文件居然与内核开发包头文件不一样。
那就只能删掉一个头文件试试,将/usr/src/kernels/linux/include改名为include1,
然后ln -s /usr/inclue /usr/src/kernels/linux/include
然后重新./configure --prefix=/usr/local/keepalived
再make, 很幸运居然通过了。
2. 配置Vi /etc/keepalived/ keepalived.conf
global_defs {
notification_email {
gengpeng@gelssoft.com
}
notification_email_from gengpeng@gelssoft.com
smtp_server 127.0.0.1
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 {
state MASTER #备机上改为BACKUP
interface eth0
virtual_router_id 51
priority 100 #备机上改为99,小于100的数即可。
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.65
}
}
virtual_server 192.168.0.65 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
# persistence_timeout 2
protocol TCP
real_server 192.168.0.21 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.0.22 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
3. 启动
/usr/local/keepalived/sbin/keepalived –D
也可以:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
service keepalived start
4. 测试关闭主机的keepalived, 不断刷新这个网页,在备机上ipvsadm,会看到连接数的变化。
然后再启动主机的keepalived,不断刷新网页,在主机上ipvsadm,会看到连接数的变化,可以看出,只要主机启动,会立马接管过来。因为上面配置文件中的优先级priority 主机是100,从机是99,主机优先级大于从机。
5. 问题对真实服务器的检测却始终没有测试成功,停掉21上的httpd服务后,在11上ipvsadm,始终还是存在21的信息。应该得到的结果跟ldirectord一样。