keepalived+nginx 两台主机实现高可用部署

1、两台主机都需要安装nginx+keepalived

2、安装nginx,参考nginx安装文档:

Nginx离线安装-优快云博客

两台主机安装nginx并启动,监听相应端口。

3、keepalived安装

(1)安装依赖,如果没有yum源,自行下载依赖包安装。

yum -y install openssl-devel  ipvsadm popt-devel make

(2)解压安装软件包,需root用户安装

tar -zxvf keepalived-2.3.2.tar.gz

cd keepalived-2.3.2

./configure --prefix=/data/keepalived

make

makeinstall

(3)建立软链接,便于系统管理

ln -s /data/keepalived/sbin/keepalived /sbin/

ln -s /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

ln -s /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

(4)编辑主备配置文件

vi /data/keepalived/etc/keepalived/keepalived.conf
global_defs

{

   script_user sellion      # 检测脚本运行的用户

   enable_script_security

}

vrrp_script check_nginx {

    script "/data/keepalived/etc/keepalived/script/chk_nginx_pid.sh" # 检测本机nginx进程是否开启

    interval 5      #检测间隔5秒

    fall 2 # 检测两次失败将实例定义为故障,移除vip

    rise 1 # 检测一次成功后将状态改为正常(设置不抢占后不会抢占vip)

    #weight 10

}

vrrp_instance NGINX {

    state BACKUP    #主节点为MASTER,备节点BACKUP

    interface bond1  #需要绑定的网卡,通常该主机的通信网卡

    virtual_router_id 42 # 同一个网络不能和其它vip重复,同一组vip必须相同,可自定义数值

    priority 90                #数值越大优先级越高,

    #nopreempt # 设置不抢占模式

    advert_int 1

    authentication {

        auth_type PASS    #通过密码授权

        auth_pass sellion

    }

    track_script {

        check_nginx

    }

    virtual_ipaddress {

        1.1.1.1                   #VIP

    }

}

(5)编辑chk_nginx_pid.sh脚本文件

vi /data/keepalived/etc/keepalived/scirpt/chk_nginx_pid.sh
#!/bin/bash

#判断 Nginx 是否存活

countng=`ps -C nginx --no-header | wc -l`

if [ $countng -eq 0 ]; then

#如果不存活则尝试启动 Nginx

/data/nginx/sbin/nginx -c  /data/nginx/conf/nginx.conf

sleep 3

#等待 3 秒后再次获取一次 Nginx 状态

counter=`ps -C nginx --no-header | wc -l`

#再次进行判断,如 Nginx 还不存活则停止 Keepalived,让地址进行漂移

if [ $counter -eq 0 ]; then

systemctl stop keepalived  #停用keepalived服务

fi

fi
chmod +x /data/keepalived/chk_nginx_pid.sh

4、开启keepalived

systemctl start keepalived

5、验证高可用状态

(1)手动关闭任一台主机nginx进程,查看nginx进程会自动拉起

kill -9 <nginx_pid>

ps -ef | grep nginx

(2)修改check_nginx_pid.sh脚本,将脚本内启动nginx一行注释掉,再kiil掉nginx进程。

查看nginx状态(不会重新拉起),查看keepalived状态(本机状态关闭),查看VIP(切换到另一台主机)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值