keepalived 安装

软件介绍

什么是负载均衡高可用

nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。
为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;
当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

什么是keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

 

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

 

注意

keepalived需要一个虚拟IP(vip),这个虚拟ip是需要服务器提供商支持的,在安装前要确保服务器是支持该项服务的。
(lsmod|grep ip_vs)查看这个是否存在;不存在则需要先加载到内核然。

 

 

安装

第一种安装方式:可以查看saltstack 的文章进行查看。

第二种方式:(编译安装)

环境准备:

yum install kernel-devel* openssl openssl-devel popt-devel libnl libnl-devel  popt  gcc  gcc-c++ glibc make autoconf

 

安装:

tar xf keepalived-1.3.5.tar.gz && cd keepalived-1.3.5 &&./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install

 

配置文件以及启动文件:

启动脚本:
cp  ../keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived     #要修改脚本中 keepalive的安装路径
chmod +x /etc/init.d/keepalived

将keepalived文件拷贝到etc下,加入网卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

创建keepalived文件夹
mkdir -p /etc/keepalived

将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

chkconfig --add keepalived 
配置日志文件:
1.将keepalived日志输出到local0:
    vi /etc/sysconfig/keepalived
    KEEPALIVED_OPTIONS="-D -d -S 0"

2.在/etc/rsyslog.conf里添加:
    local0.*  /var/log/keepalived.log

启动keepalived和rsyslog日志服务
keepalived

    启动:service keepalived start
    停止:service keepalived stop
    重启:service keepalived restart

rsyslog

    service rsyslog start
    service rsyslog restart

 

主备conf文件的配置

主服务器:

IP:192.168.20.212

[root@js-212 sbin]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
   11066986@qq.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.20.212
   #smtp_connect_timeout 30
   router_id LVS_212                    #keepalive的机器标识(唯一)
}

vrrp_instance VI_1 {
    state MASTER                       #主MASTER 备 BACKUP
    interface eth0
    virtual_router_id 55               #主备必须相同,同一实例下面的IP号
    priority 150                       #权重,MASTER要大于BACKUP的权重
    advert_int 1                       #MASTER与BACKUP负载均衡之间同步检查的时间间隔,单位是秒
    authentication {
        auth_type PASS                 #主服务器验证方式
        auth_pass 1111                 
    }
    virtual_ipaddress {
        192.168.20.12/24               #可以对个虚拟IP,换行即可
    }
}

 

备份服务器:

IP:192.168.20.172

[root@openfire2 /]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   11066986@qq.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.20.212
   #smtp_connect_timeout 30
   router_id LVS_172
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.20.12/24
    }
}

 

 

查看配置的VIP信息,以及验证

查看主的eth0的信息:

[root@js-212 sbin]# /sbin/ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 10:bf:48:4f:63:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.212/21 brd 192.168.23.255 scope global eth0
    inet 192.168.20.12/24 scope global eth0
    inet6 fe80::12bf:48ff:fe4f:632a/64 scope link 
       valid_lft forever preferred_lft forever

 

此时,VIP在MASTER上面,BACKUP上面没有VIP信息:

[root@openfire2 /]# /sbin/ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ed:a9:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.172/21 brd 192.168.23.255 scope global eth0
    inet6 fe80::20c:29ff:feed:a914/64 scope link 
       valid_lft forever preferred_lft forever

 

 

模拟服务器宕机:(把主的keepalived服务停掉)

[root@openfire2 /]# /sbin/ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ed:a9:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.172/21 brd 192.168.23.255 scope global eth0
    inet 192.168.20.12/24 scope global eth0
    inet6 fe80::20c:29ff:feed:a914/64 scope link 
       valid_lft forever preferred_lft forever

 

停掉MASTER的keepalived以后,VIP自动漂移到BACKUP服务器

当重新启动MASTER的keepalived以后,VIP又漂移带MASTER。

 

from:http://blog.csdn.net/kingboyworld/article/details/52299689

KeepAlived双主模式高可用集群

http://www.tiejiang.org/12922.html

posted @ 2017-06-12 11:33  Nice_keep-going  阅读(157)  评论(0)    收藏  举报