天天看点

keepalived高可用部署_单实例——rpm版

下载 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")

继续阅读