下载 keepalived——rpm包地址:
http://www.rpm-find.net/linux/RPM/ftp.scientificlinux.org/linux/scientific/6.4/x86_64/os/Packages/keepalived-1.2.7-3.el6.x86_64.html
配好yum仓库解决
yum -y install keepalived-1.2.7-3.el6.x86_64.rpm
#安装keepalived包
[[email protected] data]# rpm -aq keepalived
keepalived-1.2.7-3.el6.x86_64
[[email protected] data]# /etc/init.d/keepalived start
正在启动 keepalived: [确定]
[[email protected] data]# ps -el | grep keep
1 S root 4153 1 0 80 0 - 27526 poll_s 23:38 ? 00:00:00 /usr/sbin/keepalived -D
1 S root 4155 4153 0 80 0 - 28052 poll_s 23:38 ? 00:00:00 /usr/sbin/keepalived -D
5 S root 4156 4153 0 80 0 - 28052 poll_s 23:38 ? 00:00:00 /usr/sbin/keepalived -D
启动后有3个keepalived进程表示安装正确
[[email protected] data]# ip add | grep 192.168
inet 192.168.227.11/24 brd 192.168.227.255 scope global eth0
inet 192.168.200.16/32 scope global eth0
inet 192.168.200.17/32 scope global eth0
inet 192.168.200.18/32 scope global eth0
默认有三个vip地址
主配置文件
vim /etc/keepalived/keepalived.conf
修改主配置文件
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email {
5 [email protected]
6 [email protected]
7 [email protected]
8 }
9 notification_email_from [email protected]
10 smtp_server 192.168.200.1
11 smtp_connect_timeout 30 #11行以前是keepalive的邮件报警设置,默认即可
12 router_id ningx01 #唯一标识符,主节点与备节点的router_id不能相同
13 }
14
15 vrrp_script chk_nginx { #定义vrrp脚本,名称chk_nginx
16 script "/data/chk_nginx.py" #脚本的路径,脚本内容见后方
17
18 interval 2 #间隔2秒
19 weight 2 #权重2次
20 }
21
22 vrrp_instance VI_1 { #vrrp实例,实例名为VI_1,主备节点的名称应该相同
23 state MASTER #身份master
24 interface eth0 #通信接口eth0
25 virtual_router_id 55 #虚拟路由ID,在配置文件中应该唯一
26 priority 150 #优先级,数值越大优先级越高,间隔建议相差50
27 advert_int 1 #通信间隔默1秒
28 authentication { #权限配置
29 auth_type PASS #使用PASS认证,主备节点相同
30 auth_pass 1111 #认证密码,主备相同
31 }
32 virtual_ipaddress { #虚拟IP地址
33 192.168.227.10/24 dev eth0 label eth0:1#vip192.168.227.10,子网掩码24位,绑定接口eth0,别名eth0:1 ,主备相同
34 }
35 track_script { #触发检测
36 chk_nginx #检测的脚本名为chk_nginx,前面定义的名称
37 }
38 }
前11行为设置报警邮件的设置,默认即可,报警邮件可用zabbix
[[email protected] data]# /etc/init.d/keepalived restart
停止 keepalived: [确定]
正在启动 keepalived: [确定]
重启服务
[[email protected] data]# ip add | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.227.11/24 brd 192.168.227.255 scope global eth0
inet 192.168.227.10/24 scope global secondary eth0:1
检查192.168.227.10的VIP已经出现
backup的配置文件和master的一样,除下表的内容外
Keepalived配置参数 Master节点Backup节点
Router_id(唯一标识) router_id lb01router_id lb02
State(角色状态) state MASTERstate BACKUP
Priority(优先级) priority 150priority 100
nginx服务挂了,自动关闭keepalived,
自动关闭keepalived服务脚本
[[email protected] data]# cat chk_nginx.py
#!/usr/bin/env python
import commands
state,valu = commands.getstatusoutput("netstat -atupn | grep nginx | grep LISTEN| wc -l")
if valu == "0":
print "ooo"
commands.getstatusoutput("service keepalived stop")