• nginx高可用
  1. 传统的高可用思路

tomcat的高可用的思路,是在tomcat集群前面加一层负载服务nginx。如下图

Nginx 高可用---keepalived

 

这种做法,解决了tomcat的高可用问题。但是引入了前面的负载机器的高可用问题(Nginx如果挂了,玩完)

如果nginx沿用此思路,总会有一个最前端是单机的,存在宕机玩完的风险(鸡生蛋蛋生鸡无穷尽)

  1. lvs 思想解决高可用问题
  2. Nginx 高可用---keepalived

 

如上图,由服务器集群虚拟出来一台 虚拟网关vip(不真实存在,自然不存在宕机问题),

此vip由两台机器共同协商生成。当有一台机器宕机时,另一台机器一样能维持vip。这保证了,只要两台机器不同时宕机,vip就存在

  1. keepalived配置LVS过程

前提

1.关闭selinux,打开/etc/sysconfig/selinux设置其中值  à SELINUX=disabled

Nginx 高可用---keepalived

 

2.安装必须的依赖包

yum -y install libnl libnl-devel libnfnetlink-devel

keepalived安装

下载源码包--不能使用yum方式安装(有bug) --wget https://www.keepalived.org/software/keepalived-1.3.4.tar.gz

配置(指定安装目录和配置目录,否则文件太散乱) --./configure --prefix=/usr/local/keepalived --sysconf=/etc

make && make install

keepalived主机配置

打开/etc/keepalived/keepalived.conf,只需要配置如下一段。(其它是多余配置,删除)

Nginx 高可用---keepalived

 

启动keepalived,查看机器ip地址,可发现多出一个244.200的ip

Nginx 高可用---keepalived

 

此时,使用原ip地址244.253能打开的页面,使用244.200也能打开

Nginx 高可用---keepalived

 

keepalived从机配置

从机配置与主机过程完全一样,配置文件内以下标识id与优先级稍作变化即可

Nginx 高可用---keepalived

 

 

启动从机的keepalived后,可发现其ip地址无变化

keepalived校验LVS效果

1、此时,杀掉主机上的keepalived,244.200的ip将从主机上消失。而出现的从机的ip中

2、再次启动主机的keepalived,244.200的ip将被主机重新夺回

3、此效果是单主单备方式。备机资源有一定的浪费。可以重复前面的动作,虚拟出第二个ip,将主从机优先级颠倒,从而利用起备机服务

keepalived监控服务软件

以上操作中,keepalived很好的实现了LVS功能,即集群机器共同虚拟一个vip,并实现在集群中自动漂移。

但假如物理机状况良好,并不能保障其上运行的服务软件ok,因此需要借助keepalived来监控服务软件。

a、使用keepalived来监控nginx

编辑一个sh监控脚本,sh脚本:

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`       #统计nginx进程是否存在

if [ $A -eq 0 ];then                            #为0,表明nginx停止了

      /usr/local/nginx/sbin/nginx                #尝试重启nginx

      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则keepalived自杀,进行VIP转移

              killall keepalived    #杀掉,vip就漫游到另一台机器                

      fi

fi

b、在配置文件中加入以下两处配置:

Nginx 高可用---keepalived

 

c、重启keepalived,测试监控效果,如下图操作:

Nginx 高可用---keepalived

 

nginx已变成不死鸟

 

 

备注  chk_nginx.sh 

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`    ##统计nginx进程数,若为0,表明nginx被杀
if [ $A -eq 0 ];then
        /usr/local/openresty/nginx/sbin/nginx                #重启nginx
        #nginx重启失败,则停掉keepalived服务,进行VIP转移
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
              killall keepalived    #杀掉,vip就漫游到另一台机器
        fi
fi
 

相关文章:

  • 2022-01-13
  • 2021-10-14
  • 2019-05-23
  • 2021-11-04
  • 2021-07-10
  • 2021-05-27
猜你喜欢
  • 2021-07-01
  • 2021-11-22
  • 2022-03-06
  • 2021-05-12
  • 2021-09-16
  • 2021-10-13
相关资源
相似解决方案