Nginx高可用

KEEPLIVED主要功能:

  • 管理LVS负载均衡软件;
  • 实现LVS集群节点的健康检查;
  • 作为系统网络服务的高可用性(failover)。

KEEPALIED高可用架构示意图:

image-20210223120710118

192.168.244.3:nginx + keepalived master 从
192.168.244.4:nginx + keepalived backup 主
 
192.168. 244.3:tomcat_8080
192.168. 244.4:tomcat_8081

虚拟ip(VIP):192.168.244.200,对外提供服务的ip,也可称作浮动ip

Nginx解决Tomcat高可用的思路:前面加一层负载服务nginx。这种做法,总会有一个前端负载层存在宕机可能,是死循环

image-20210223120759640

keepalived来解决。

lvs 思想来解决:

image-20210223120827508

keepalived的思路,由 2台服务器软件虚拟出来一台 虚拟网关vip,

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

keepalived的安装(不能用docker,docker中无法正常工作)

A〉./configure –prefix=/data/program/keepalived –sysconf=/etc ##因为keepalive启动时候会默认读取/etc/keepalived/keepalived.conf

B〉make && make install

keepalived的配置:

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

image-20210223120921623

启动

1
sbin/keepalived
ip addr命令查看网卡

image-20210223121018276

eth0的网卡上,出现两个ip,244.3是真实ip,244.200是虚拟vip

重复c、d、e步骤,再装一台机器。主备两台机器的配置,只有两个配置差异

state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备

priority 100 # 优先级,数值越大,处理请求的优先级越高。备用数字小些

测试主备keepalived

正常情况下,vip是在主机器一端的,备用机器244.4上不会出现vip。如下图上半部分。

此时,如果我们杀掉主机器上keepalived,备用机器上会出现vip。如下图下半部分。

image-20210223121129278

主机器keepalived再启动后,备机中vip = 200消失了,如下图

image-20210223121225458

使用keepalived来监控nginx

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

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

if [ $A -eq 0 ];then

/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

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

image-20210223121327360

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

image-20210223121428669

nginx已变成不死鸟!