Keepalived分享

来自技术开发小组内部wiki
跳转至: 导航搜索

===== keepalived主要功能:

===== 实现ip地址飘移。比如有A和B两个节点,默认前端应用连接的是A节点的IP地址(通常也是vip),A节点出现故障的话,则将A节点的IP地址飘移到B节点,前端应用的请求就会由B节点来响应.

我的ip主为192.168.27.100, 备ip为192.168.27.101 虚拟ip为192.168.27.220(配置好keepalived以后会自动产生,之前我在这产生误区)
下面先安装keepalived

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

tar xvf keepalived-1.1.17.tar.gz

cd keepalived-1.1.17

./configure --with-kernel-dir=/usr/src/kernels/2.6.18-417.el5-i686/ --prefix=/usr/local/keepalive/

 “–with-kernel-dir”这是个很重要的参数,但这个参数并不是要把Keepalived编译进内核, 而是指定使用内核源码里面的头文件,就是include目录。需要安装kernel-headers和kernel-devel包,使用yum安装即可 

make

make install

修改配置文件 

注意keepalived的配置文件格式要求比较严格,如果是复制粘贴进来的话,可能有问题,我遇到下面一个坑: track_script{   这里的{前面少个空格,导致这个段失效。
check_run
}


vim /usr/local/keepalive/etc/keepalived/keepalived.conf

192.168.27.100上的keepalived的配置文件如下

global_defs {

   notification_email {
        #root@localhost #设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的sendmail服务。
   }
   #notification_email_from root@localhost #设置邮件的发送地址
   #smtp_server localhost #设置smtp server地址,该地址必须是可到达的,否则会出错
   #smtp_connect_timeout 30 #设置连接smtp服务器超时时间
   router_id LVS_DEVEL #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息
}

vrrp_script check_run {
   script "/root/monitor_nginx.sh"
   interval 1
   weight -10
}
vrrp_instance VI_1 {
    state MASTER #指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器
    interface eth0 #指定HA监测网络的接口
    virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,并且同一个vrrp实例使用唯一的标识,即同一个
    priority 100 #定义优先级,数字越大,优先级越高,在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。
    advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {
        auth_type PASS #设置验证类型,主要有PASS和AH两种
        auth_pass 1111 #设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {
        192.168.27.220 #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
    }
    track_script {
        check_run
    }
    track_interface {
        eth0
    }
}


192.168.27.101上的keepalived的配置文件如下

global_defs {
   notification_email {
        #root@localhost
   }
   #notification_email_from root@localhost
   #smtp_server localhost
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script check_run {
   script "/root/monitor_nginx.sh"
   interval 1
   weight 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.27.220
    }
    track_script {
        check_run
    }
    track_interface
        eth0
    }
}

检测文件monitor_nginx.sh

  1. !/bin/bash

if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
 then
 echo "ok"
 exit 1
fi
exit 0



以上配置完以后,配置文件就已完成,就可以启动keepalived了 /usr/local/keepalive/sbin/keepalived -f /usr/local/keepalive/etc/keepalived/keepalived.conf -D 这样就可以开始测试了 本地配置好192.168.27.220 www.test.com 这样会首先访问到192.168.27.100.若将100上的nginx关掉,将会自动切换到101上面,此时将100恢复正常,将会自动切换到100上

keepalived 中master和backup可以参考 http://ixdba.blog.51cto.com/2895551/1544858