Nginx实现高可用之Keepalived双机主备原理 Keepalived+nginx实现高可用

一、Keepalived概念
1.解决单点故障
2.组件免费
3.可以实现高可用HA机制
4.基于VRRP协议,解决内网单机故障的路由协议,可以构建多个路由器
二、Keepalived的安装
虚拟ip(安装Keepalived的服务器):192.168.1.161
Nginx主服务器:192.168.1.171
Nginx备服务器:192.168.1.172

1.将Keepalived上传到服务器的指定目录然后解压
2.进入解压后的目录为Keepalived做一个配置
a步骤

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

解释:
/usr/local/为安装目录
 --sysconf为核心配置文件,路径必须在etc下,不然会在日志文件报错

b步骤:
在这里小编遇到一个错误:
** !!! OpenSSL is not properly installed on your system. !!!

!!! Can not include OpenSSL headers files. **
当遇到这个错误时执行下面命令即可:

yum -y install openssl-devel

c步骤:
输入以下命令:

make && make install

d步骤:
查看Keepalived安装在哪个位置,应该会出现两个位置ect下的是核心配置文件

whereis keepalived

三双机主备

1.配置Keepalived
a.之前安装时配置文件在etc下,找到/etc/keepalived文件夹配置keepalived.conf文件

1.vim keepalived.conf

b.在这里插入图片描述
配置以下内容即可

`global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_192
}

#这是一个计算机节点
vrrp_instance VI_1 {
    #表示的状态 当前的nginx的主节点,MASTER / BACKUP
    state MASTER
    #当前实列绑定的网卡,每一个人的不一样,一定要注意
    interface eth0
    #保证主备节点一致
    virtual_router_id 51
    #优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
    priority 100
    #主备之间同步检查的时间间隔
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   #配置虚拟ip一个就可以了
    virtual_ipaddress {
        192.168.1.61
    }
}

2.启动
a.进入之前的安装目录,安装时有两个,见第2步 a步骤,在安装目录下输入以下命令,图示为我的安装目录下
在这里插入图片描述
启动命令

./keepalived   

b.启动之后查看输入ip addr 查看ip 会多一个如图:
在这里插入图片描述
e.启动./nginx,输入主机ip或者虚拟ip都可以访问页面
f.如何停止keepalived呢

#查看进程号
ps -ef|grep keepalived 
#然后
kill -9 进程号

g.这样通过进程结束不好,通过服务来解释,步骤如下:
1.进入keepalived的安装目录,然后进入keepalived文件夹,进入etc,有两个文件init,sysconfig将他们复制当当前的系统中
在这里插入图片描述
命令:

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

cp sysconfig/keepalived  /etc/sysconfig/

然后

systemctl daemon-reload

在输入systemctl start keepalived.service即可启动 如果系统不支持,就使用上一步方法吧。

3.MASTER配置完了现在配置BACKUP

a.按照之前的步骤安装好keepalived
b.配置keepalived.conf,跟主节点MASTER配置差不多,我这的配置文件在/etc/keepalived中,我的备用配置如下:

global_defs {
   router_id keep_158

}

#这是一个计算机节点
vrrp_instance VI_1 {
    #表示的状态 当前的nginx的主节点,MASTER / BACKUP
    state BACKUP
    #当前实列绑定的网卡,每一个人的不一样,一定要注意
    interface eth0
    #保证主备节点一致
    virtual_router_id 51
    #优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
    priority 80
    #主备之间同步检查的时间间隔
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   #配置虚拟ip一个就可以了
    virtual_ipaddress {
        192.168.1.61
    }
}

与之前的主比较修改了 router_id 与 state
c.进入安装目录启动./keepalived,启动之后不会发现之前配置的静态ip,因为主节点正常的运行着,如图:
在这里插入图片描述
d.当我们把主节点的keppalived停止时,备用节点就会出现虚拟的ip
e.输入虚拟ip,即可访问页面,前提是nginx必须启动

4.如果nginx挂了,则无法访问,所以我们要检测nginx

a.增加nginx的启动脚本

vim /etc/keepalived/check_nginx_alive_or_not.sh

脚本内容

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

增加运行权限

chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

b. 配置keepalived监听nginx脚本

vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive_or_not.sh"
interval 2 # 每隔两秒运行上一行脚本
weight 10 # 如果脚本运行失败,则升级权重+10
}

c. 在 vrrp_instance 中新增监控的脚本

track_script {
check_nginx_alive # 追踪 nginx 脚本
}

d. 重启Keepalived使得配置文件生效

systemctl restart keepalived

keepalived.conf文件内容如下

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_tiantian1
  }

vrrp_script check_nginx_alive {
   script "/etc/keepalived/check_nginx_alive_or_not.sh"
   interval 2 # 每隔两秒运行上一行脚本
   weight 10 # 如果脚本运行成功,则升级权重+10
   #weight -10 #如果脚本运行失败,则降低权重-10
}
vrrp_instance VI_1 {
     #表示的状态 当前的nginx的主节点,MASTER / BACKUP
    state MASTER
    #当前实列绑定的网卡,每一个人的不一样,一定要注意
    interface ens33
    #保证主备节点一致
    virtual_router_id 51
     #优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
    priority 100
    #主备之间同步检查的时间间隔
    advert_int 1
   #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        check_nginx_alive # 追踪 nginx 脚本
    }
    #配置虚拟ip一个就可以了
    virtual_ipaddress {
        192.168.152.188
    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值