主从模式,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拉起来了