前言:本文档用keepalived实现高可用性,对于负载均衡采用nginx处理.
系统环境:CentOS 5.2 ,需要安装有gcc openssl-devel kernel-devel包
二. 安装LVS和Keepalvied软件包
1. 下载相关软件包
#mkdir /usr/local/src/lvs
#cd /usr/local/src/lvs
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
#安装 kernel-devel 包.
#yum install kernel-devel.x86_64
(查看uname –r 的输出. 或使用 yum search kernel-devel 确定内核开发工具版本.)
2. 安装LVS和Keepalived
#lsmod |grep ip_vs
#uname -r
2.6.18-128.el5
#ln -s /usr/src/kernels/2.6.18-128.el5-x86_64/ /usr/src/linux
#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure && make && make install
把keepalived做成系统启动服务方便管理
#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/
#service keepalived start|stop #启动或关闭keepalived ,
#chkconfig keepalived –add
#chkconfig keepalived on #加入系统自动启动.
配置:
# mkdir /etc/keepalived
#cd /etc/keepalived
#touch keepalived.conf
###首先清除 /etc/hosts 里面的MASTER,BACKUP 之类IP解析设定.
####将以下内容复制到 /etc/keepalived/keepalived.conf 中.
对于MASTER 机器
global_defs {
notification_email {
admin@webgame.com.cn
}
notification_email_from bj_m05@aaa.com ##以下3行可以任意写.
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL_M05 ##同组MASTER 与 BACKUP 机器必须保证此项完全一致.
}
vrrp_script chk_nginx {
script "killall -0 nginx" ##探测本机的nginx进程是否存活,若存活,则权值+2 .
interval 2 ##每2秒检测一次.可改成1 .
weight 2 ##权值.
}
vrrp_instance VI_1 { ##同组MASTER 与 BACKUP 机器必须保证此项完全一致.
state MASTER ##初始化后的身份, 然后以权值进行同组竞争.
interface eth0
virtual_router_id 251
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
115.182.50.198 ###VIP ,对外的虚拟IP .
}
track_script {
chk_nginx
}
}
对于 BACKUP 机器:::
global_defs {
notification_email {
admin@webgame.com.cn
}
notification_email_from bj_m05@aaa.com ##以下3行可以任意写.
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL_M05 ##同组MASTER 与 BACKUP 机器必须保证此项完全一致.
}
vrrp_script chk_nginx {
script "killall -0 nginx" ##探测本机的nginx进程是否存活,若存活,则权值+2 .
interval 2 ##每2秒检测一次.可改成1 .
weight 2 ##权值.
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 251
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
115.182.50.198
}
track_script {
chk_nginx #需要额外执行的脚本.
}
}
在以上的配置文件中,我没有使用以下两个选项.
lvs_sync_daemon_interface eth1
##心跳检测接口. 一般在使用keepalive的DR功能中需要设置.
mcast_src_ip xxx.xxx.xxx.xxx
###xxx.xxx.xxx.xx 为对方的IP .即广播vrrp的ip地址.
理由:
1, 我们的环境中不需要使用keepalive作为转发,仅仅只使用了它的HA功能.
2, keepalive默认会使用绑定VIP的接口来广播vrrp ,声明自己的权值.以便竞争