keepalived+nginx实现高可用+tomcat

1、keepalived的yum安装

安装依赖包
[root@localhost ~]# yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
[root@localhost ~]# yum install -y keepalived

2、nginx安装(省略)

3、tomcat部署(省略)

4、nginx配置文件:每个nginx的配置都是一样的。

5:主keepalived的配置

6:备keepalived的配置

编写 Nginx 心跳检测脚本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程, keepalied将虚拟 ip 绑定到 BACKUP 机器上。 内容如下:

# vi /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


保存后,给脚本赋执行权限:
# chmod +x /etc/keepalived/nginx_check.sh(赋完权后sh文件会变绿色)

7、要使nopreempt生效,需要做如下操作

inux下设置允许keepalived组播(主备都要执行如下命令)

centos防火墙默认是不允许keepalived使用 vrrp的组播,如果不开启组播ip,keepalived双机不能实现热备的效果,只能实现负载的效果,即虚拟ip不能实现漂移。

热备:当主keepalived挂掉时,虚拟Ip会漂移到备用的keepalived上。当主的keepalived启用是,虚拟ip再次回到主的keepalived上。

防火墙开启keepalived使用组播ip执行一下命令:

centos7使用一下命令:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eno16777736 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload

红色标记eno16777736是指的服务器的网卡名称,INPUT代表接收224.0.0.18的报文,使用 ip a 命令查看.

8、访问vip(虚拟ip)

注意:我的nginx访问为www.njm1.com

比如我的vip为192.168.177.200。nginx的ip为192.168.177.136。

通过nginx访问我的tomcat:192.168.177.136/njm1/test1/index_html(访问不到),因为我绑定了域名:www.njm1.com/njm1/test1/index_html(这样就可以访问)

记得在你的windows配置域名解析:

通过vip访问我的tomcat:

 因为nginx绑定了域名www.njm1.com。所以如果我们要通过vip访问,就要将此域名解析到vip这个ip地址(192.168.177.200)

9、通过如上设置,就可以让vip在nginx之间漂移了~~~可以测试:例如同时开启主备keepalived,访问www.njm1.com。访问到的肯定是主keep。然后stop主keep,停掉后,vip就会飘去备keep~~。再访问www.njm1.com。就是备keep了。

当我们再启动主keep,因为配置了nopreempt属性。备keep会让vip飘回主keep~~

原文地址:https://www.cnblogs.com/NJM-F/p/10066160.html