原理说明
Keepalived的作用是检测服务器的状态,如果有一台节点的Nginx出现故障,Keepalived将检测到,杀死自身进程,这样客户端访问虚拟IP时就会走备节点,不会访问出故障的机器
安装流程
1: 下载最新的源码包
http://www.keepalived.org/download.html
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
2:安装编译时依赖
yum install openssl-devel
3: 安装流程
tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure
#--prefix=/usr/local/keepalived --sysconf=/etc
make && make install
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir –pv /etc/keepalived
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
启动keepalived ,service keepalived start/stop/stauts
或cd /etc/init.d ,./keepalived start/stop/status
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalilved
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/#
cp /usr/local/sbin/keepalived /usr/sbin/#
service keepalived start
ps -ef | grep keepalived
说明:1. Linux目录/etc/init.d 与 /etc/rc.d/init.d
在Linux中,/etc/init.d 和 /etc/rc.d/init.d这两个目录,都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。
在制作服务脚本的过程中,使用了Linux的两个版本,CentOS和Ubuntu,需要在两个版本中都可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个目录,所以,为了保持同一种服务在CentOS和Ubuntu使用的统一性,将服务脚本(注:服务脚本在两个不同版本中是不同的)都放在 /etc/init.d 目录下,最终达到的效果是相同的。
需要说明的是:在CentOS和Ubuntu两个版本中,除了服务脚本放置的目录是相同的,服务脚本的编写及服务配置都是不同的。比如CentOS使用Chkconfig进行配置,而Ubuntu使用sysv-rc-conf进行配置。
2. /etc/sysconfig/,存放的都是系统配置文件,想使keepalived开机启动,相关的配置要放进来。
配置流程
配置/etc/keepalived/keepalived.conf
Master节点配置:
! Configuration File for keepalived
global_defs {
notification_email {
}#失败发送邮件配置
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script Monitor_Nginx {#监听
script "/etc/keepalived/trace.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER #主节点
interface bond0 #监听的网卡
virtual_router_id 51 #主备此处一致
mcast_src_ip 172.19.189.53 #主nginx地址
priority 100 #优先级,主高于备
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {#虚拟ip
172.19.189.90
}
track_script {#配置监听脚本
Monitor_Nginx
}
}
BACKUP节点配置:
!Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script Monitor_Nginx {
script "/etc/keepalived/trace.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state SLAVER #备用节点
interface bond0
virtual_router_id 51
mcast_src_ip 172.19.189.51#备用nginx地址
priority 90 #优先级要低于主的
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {#对外提供的服务ip地址
172.19.189.90
}
track_script {
Monitor_Nginx
}
}
检测脚本trace.sh 放在/etc/keepalived下面
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
killall keepalived
fi