高可用

机器上安装了 nginx, 没有安装的传送门

环境

  • CenntOS 7

  • Nginx-1.14.2

  • keepalived-1.4.5

VIPIP节点名称主从

10.113.2.88

10.113.2.82

node-3

master

10.113.2.88

10.113.2.83

node-4

backup

安装

以下操作每个节点都要执行

一、安装基础依赖包

yum -y install libnl libnl-devel libnfnetlink-devel psmisc

二、 安装keepalived

以下步骤可以创建一个 keepalived.sh 脚本,然后复制以下内容,执行脚本即可一键执行

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

tar -zxf keepalived-1.4.5.tar.gz

cd keepalived-1.4.5

./configure --prefix=/usr/local/keepalived

make && make install

cp keepalived/etc/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

echo "/etc/init.d/keepalived start" >> /etc/rc.local

chmod +x /etc/rc.d/init.d/keepalived

chkconfig keepalived on

三、配置

先备份配置文件

cp /etc/keepalived/keepalived.conf cp /etc/keepalived/keepalived.conf.bak

修改配置文件 keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id node-3
}

vrrp_script check_nginx
{
    script "/etc/keepalived/check_nginx.sh"
    interval 2   # 2s执行一次
}

vrrp_instance VI_1 {
    state MASTER     # 从节点改成 BACKUP
    interface ens18    # 绑定的网卡
    virtual_router_id 66   # 同一实例下virtual_router_id要相同
    priority 100     # master 的权重要高于 backup
    advert_int 1     # 主从心跳检测时间,单位s
    authentication { 
        auth_type PASS
        auth_pass 1111 
    }
    virtual_ipaddress {
        10.113.2.88    # 设置VIP,可以多个,一行一个
    }
    track_script {
         check_nginx  # vrrp_script 一定要写在前面,不然不会执行,踩过坑
    }
}

check_nginx.sh

#!/bin/bash -x

ACTIVE=`ps -C nginx --no-header | wc -l`
if [ $ACTIVE -eq 0 ]; then
     /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then
        killall keepalived
        exit 1
    else
        exit 0
    fi
else
    exit 0
fi

四、 启动服务

systemctl restart keepalived

最后更新于