keepalived

 

一、简单介绍

 

keepalived 是集群中防止某个节点出现单点故障的一个开源软件,配合 Nginx 可以实现 web 前端服务的高可用。

keepalived 是以 vrrp 协议为实现基础,将多台相同功能的服务器绑定成一个服务组,并对外提供一个虚拟 ip(vip)。服务组由一个主节点 master 和多台备用节点 backup 组成,master 的优先级高于 backup。

当 master 处于健康运行状态的时候,独自占用 vip,并发送心跳信息给 backup,告知自己仍处于工作状态。而当 master宕机后,backup 收不到来自 master 的心跳信息,这时候在服务器组内部开始重新选举,优先级高的 backup 上位成为 master,并抢占 vip 开始工作。vip 的漂移,通过 "ip a" 可查看。

下面利用 keepalived 实现 nginx 的高可用;

 


 

二、安装

 

keepalived的安装很简单,yum安装即可;

 


 

三、keepalived配置

MASTER:

[root@dockerone keepalived]# ls
keepalived.conf  nginx_check.sh
[root@dockerone keepalived]# cat keepalived.conf 
! Configuration File for keepalived

global_defs {
#   notification_email {
#        syztoo@syz.com    
#   }
#   notification_email_from syztoo@too.com
#   smtp_server 127.0.0.1
#   smtp_connect_timeout 30
   router_id keepalived_dockerone
}

vrrp_script chk_nginx {
	script "/etc/keepalived/nginx_check.sh"
	interval 2
	weight -20
}

vrrp_instance nginx {
    state MASTER
    interface ens33
    virtual_router_id 33
    mcast_src_ip 192.168.3.30
    priority 100
#    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.130
    }
    track_script {
	chk_nginx
    }
}

BACKUP:

[root@dockerone keepalived]# ls
keepalived.conf  nginx_check.sh
[root@dockertwo keepalived]# cat keepalived.conf 
! Configuration File for keepalived

global_defs {
#   notification_email {
#     syztoo@syz.com
#   }
#   notification_email_from syztoo@too.com
#   smtp_server 127.0.0.1
#   smtp_connect_timeout 30
   router_id keepalived_dockertwo
}

vrrp_script chk_nginx {
	script "/etc/keepalived/nginx_check.sh"
	interval 2
	weight -20
}

vrrp_instance nginx {
    state BACKUP
    interface ens33
    virtual_router_id 33
    mcast_src_ip 192.168.3.29
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.130
    }
    track_script {
	chk_nginx
    }

}

 注:keepalived工作模式默认为抢占模式;

 


 

四、健康检查脚本

 

[root@dockertwo keepalived]# cat nginx_check.sh 
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then 
killall keepalived
fi

注1:健康检查脚本要有执行权限;

注2:centos7最小安装的系统默认没有killall命令;

    查看killall命令由哪个安装包提供:

      [root@dockerone keepalived]# yum provides "*/killall"
      ...
      psmisc-22.20-15.el7.x86_64 : Utilities for managing processes on your system
      源    :aliyun
      匹配来源:
      文件名    :/usr/bin/killall
      [root@dockerone keepalived]# yum install psmisc -y

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值