微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习笔记:微服务-16 nginx+keepalived +zuul 实现高可用及负载均衡

在上节文章 https://blog.csdn.net/oLinBSoft/article/details/85418953  学习笔记:微服务-8 Nginx+zuul 实现高可用负载均衡 

实现了Nginx + zuul实现微服务高可以 ,实现原理图片如下

在这个图中,还是存在单点故障问题,就是ngnix服务只有一台,如何避免这个单点故障呢,可以采用 Nginx+keepalived的双机热备 方式实现。

原理图如下:

就是dns解析的ip,指向到一个虚拟的ip上,通过keepalived 软件,一个Master 一个slave 两台都虚拟ip192.168.41.148 但只有一个激活虚拟ip对外服务,两个keepalived会相互检测心跳,当主服务器ip宕机时,备份服务器自动激活虚拟ip,接替虚拟ip的工作。即在同一时刻只有一个192.168.41.148.

安装配置,两台服务器分别安装

1. 两台服务器都安装keepalived 和 Nginx 

安装Nginx参见前文,安装keepalived:

yum install keepalived

2.配置

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
   }
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER     #    备份服务器是SLAVE
    interface ens33      #注意这个是网卡名称
    virtual_router_id 51    # master 和 slave 要相同
    priority 100      # 优先值 master 和 slave 要不相同
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    192.168.49.148      #可以有多个虚拟ip
       }
}

3. 启动 

systemctl  start keepalived

4.启动后查看主服务器的ip

命令 ip addr

启动keepalived 在主服务器看见ip:192.168.49.148,关闭主服务器的keepalived 可以看到备份服务器上会激活ip:192.168.49.148,可以达到服务不中断

5. 可以进一步配置定时检查是否Nginx意外停止服务,这是在ip是可用的,但Nginx不可用的情况下,需要另外处理

(1)创建文件 /opt/chk_Nginx.sh

#!/bin/bash

while true
do
counter=$(ps -C Nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /sbin/Nginx
    sleep 4
    counter=$(ps -C Nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        systemctl stop keepalived
    fi
fi
sleep 4
done

该脚本检测Nginx的运行状态,并在Nginx进程不存在时尝试重新启动Nginx,如果启动失败则停止keepalived,让其它机器接管。

(2)修改为可执行:

chmod 755 /opt/chk_Nginx.sh

sh /opt/chk_Nginx.sh

(3)让 /opt/chk_Nginx.sh 开机在后台执行

这样,其中一个主机宕机或Nginx软件宕机都能触发相应处理程序,实现IP漂移。

参考:https://blog.csdn.net/xyang81/article/details/52556886/   Keepalived+Nginx实现高可用(HA)

http://blog.51cto.com/superpcm/2095395   Nginx+Keepalived高可用集群

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐