Nginx+keepalived

主从模式,failover failback

1、环境准备

服务

软件

地址

反向代理+负载均衡

Nginx+keepalived

22.233.23.128

反向代理+负载均衡

Nginx+keepalived

22.233.23.130

Web

Tomcat

22.233.23.129

 

Keepalived vip配置为22.233.23.131

 

2、在22.233.23.129上配置tomcat

2.1、安装tomcat

https://www.cnblogs.com/jeancheng/p/13037613.html

2.2、准备web页面

在webapps下创建test目录,test下新建index.html,写入本机ip

2.3、启动tomcat

[root@node1 bin]# pwd

/usr/local/src/apache-tomcat-7.0.104/bin

[root@node1 bin]# ./startup.sh

Using CATALINA_BASE: /usr/local/src/apache-tomcat-7.0.104

Using CATALINA_HOME: /usr/local/src/apache-tomcat-7.0.104

Using CATALINA_TMPDIR: /usr/local/src/apache-tomcat-7.0.104/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/src/apache-tomcat-7.0.104/bin/bootstrap.jar:/usr/local/src/apache-tomcat-7.0.104/bin/tomcat-juli.jar

Tomcat started.

2.4、测试

3、在22.233.23.128/130上配置nginx

3.1、安装nginx和keepalive

https://www.cnblogs.com/jeancheng/p/13034027.html

3.2、配置nginx反向代理+负载均衡(只有一个web)

3.3、测试

 

 

4、在22.233.23.128/130上配置keepalived

4.1、安装keepalived

[root@localhost ~]# yum install -y keepalived

4.2、配置keepalived

/etc/keepalived/keepalived.conf

22.233.23.128配置为master

22.233.23.130配置为backup

 

4.3、启动keepalived,加入开机启动

 

service keepalived start

chkconfig keepalived on

4.4、确认keepalived

22.233.23.129(master)

Ifconfig看不到

Ip a 可以看到

22.233.23.130(BACKUP)备节点没有vip

5、测试

在windows物理机hosts文件中添加如下解析:

22.233.23.131            www.test.com

将22.233.23.128上的keepalived服务停掉或者关机

vip飘到备节点上

查看日志/var/log/messages

刷新页面,可以继续访问

将22.233.23.128开机或启动keepalived,vip飘回主节点

Backup

查看日志/var/log/messages

如果之前的操作是关机,此时主节点没有启动nginx服务,网站不可访问

如果之前的操作是停掉keepalived,此时启动了keepalived,nginx也是启动的,可以访问

主从模式,failover

两端keepalived配置文件,state都设置为BACKUP,参数加上nopreempt启动不抢占模式

将22.233.23.128上keepalived服务停止,130会变为master

再次启动128上的keepalived,不会抢占vip

Vip仍然在130上

添加nginx检查脚本

如果master上的nginx挂掉了,keepalived不会切换,服务会终止,需要在keepalived中添加nginx服务的检查脚本

编辑keepalived配置文件,/etc/keepalived/keepalived.conf

创建/etc/keepalived/nginx_check.sh,写入如下内容,并加上可执行权限

#!/bin/bash

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

if [ $A -eq 0 ];then

    /usr/local/nginx/sbin/nginx

    sleep 2

    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

        killall keepalived

    fi

fi

1、ps 检测到nginx在运行

2、停掉nginx,ps检测到没有nginx服务在运行了

3、重启keepalived

4、可以看到keepalived加载了脚本,将nginx拉起来了

 

原文地址:https://www.cnblogs.com/jeancheng/p/13044424.html