Nginx+Tomcat+keepalived动静分离高可用负载均衡集群

Nginx+Tomcat

1.Nginx介绍

支持高达50000个并发连接数的响应
拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

2.Nginx动静分离原理

通过location字段进行匹配
如果是.html结尾的文件会被发往本地处理
如果是.jsp结尾的会被发往tomcat

3.tomcat重要目录

目录 作用
bin 存放启动和关闭Tomcat脚本
conf 存放Tomcat不同的配置文件
doc 存放Tomcat文档
lib 存放Tomcat运行需要的库文件
logs 存放Tomcat执行时的log文件
src 存放Tomcat的源代码
webapps Tomcat的主要web发布目录
work 存放jsp编译后产生的class文件

NFS存储服务器部署

1.安装nfs-utils、rpcbind软件包

yum -y install nfs-utils rpcbind

2.创建共享目录

mkdir /opt/tomcat1
mkdir /opt/tomcat2

编辑一个javascript的测试网页,并上传图片

vim /opt/tomcat1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP web1 test</title>
</head>
<body>
<% out.println("Welcome to test site");%>
<div>动态页面</div><br/><img src="web1.jpg" />
</body>
</html>
vim /opt/tomcat2/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP web2 test</title>
</head>
<body>
<% out.println("Welcome to test2 site");%>
<div>动态页面</div><br/><img src="web2.jpg" />
</body>
</html>

3.共享目录

vi /etc/exports
/opt/tomcat1 192.168.2.16(ro)
/opt/tomcat2 192.168.2.17(ro)

查看挂载

showmount -e

在这里插入图片描述

web集群

配置Java环境变量

1.xftp上传两个文件
在这里插入图片描述
解压,移动

tar xf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java

2.配置环境变量

vi /etc/profile

添加

export JAVA_HOME=/usr/local/java
export JAVA_JRE=/usr/local/java/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib

执行,并查看

source /etc/profile
echo $PATH

在这里插入图片描述
在这里插入图片描述

测试

查看版本

java -version

在这里插入图片描述
在这里插入图片描述

编辑一个.java文件测试

vim HelloWorld.java
public class HelloWorld {
    
    
        public static void main (String[] args) {
    
    
                System.out.println("helloworld!");
        }
}
javac HelloWorld.java
java HelloWorld

在这里插入图片描述
在这里插入图片描述

部署Tomcat

1.解压、移动

tar xf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat8

2.建立软连接

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
ln -s /usr/local/tomcat8/conf/server.xml /etc/tomcat.xml

链接后

tomcatup:开启tomcat
tomcatdown:关闭tomcat
/etc/tomcat.xml:配置文件

开启tomcat

tomcatup

在这里插入图片描述
在这里插入图片描述

检查是否开启

netstat -anpt | grep java

在这里插入图片描述
在这里插入图片描述

测试tomcat

1.创建web目录

mkdir -p /tomcat/web

2.将nfs挂载到本地目录

tomcat1

mount 192.168.2.18:/opt/tomcat1 /tomcat/web

tomcat2

mount 192.168.2.18:/opt/tomcat2 /tomcat/web

查看挂载情况
在这里插入图片描述
在这里插入图片描述

3.设置网站根目录

编辑配置文件

vi /etc/tomcat.xml
   <Context docBase="/tomcat/web" path="" reloadable="false">
      </Context>

在这里插入图片描述

4.访问测试

重启

curl http://localhost:8080

在这里插入图片描述

在这里插入图片描述

调度器

上传nginx-1.12.2.tar.gz、keepalived-2.0.13.tar.gz

编译安装nginx

yum 安装依赖包

yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

创建一个不可登陆账户给ngxin使用

useradd -M -s /sbin/nologin nginx

解压

tar xf nginx-1.12.2.tar.gz
cd nginx-1.12.2/

配置内容

 ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

编译安装

make && make install -j 8

建立nginx软连接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx配置文件软连接

ln -s /usr/local/nginx/conf/nginx.conf /etc/

检查nginx是都可以正常运行

nginx -t

在这里插入图片描述

在这里插入图片描述

查看nginx状态

netstat -anpt | grep nginx

在这里插入图片描述

没有任何提示就是没启动

启动nginx

nginx

重启nginx

killall -1 nginx

关闭nginx

killall -3 nginx

添加

upstream服务池
upstream tomcat_server {
            server 192.168.2.16:8080 weight=1;
             节点      ip地址  端口号  权重
            server 192.168.2.17:8080 weight=1;
}

       location ~ \.jsp$ {
            proxy_pass http://tomcat_server;  
}                                          服务地址池名

jsp里面链接的图片要上传到nginx根目录,如果不上传图片会出现加载不出来的情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装keepalived

xftp上传keepalived文件,解压

tar xf keepalived-2.0.13.tar.gz

安装编译工具与插件

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

切换目录、编译安装

cd keepalived-2.0.13/
./configure --prefix=/
make && make install

加入系统管理服务、设为开机自启

cp keepalived/etc/init.d/keepalived /etc/init.d/
systemctl enable keepalived.service

编辑主调度器配置文件

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id Nginx_01
   }

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}
}

编辑备用调度器配置文件

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id Nginx_02
   }

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}

重启

测试

ip addr 测试
在这里插入图片描述
在这里插入图片描述
主路调度器故障测试,禁用网卡,或者是禁用keepalived
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新启动keepalived

在这里插入图片描述
在这里插入图片描述

nginx监控脚本

脚本的作用就是在nginx服务出问题的时候,关闭keepalived
假设主调度器仅仅是Nginx服务出现问题,其它(keepalived)一切正常,那么VIP就不会跳到备用调度器上,备用调度器就无法启用,就会出现下面情况

在这里插入图片描述
在这里插入图片描述
编辑keepalived配置文件,添加如下内容

! Configuration File for keepalived

global_defs {
   router_id Nginx_01
   }

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    chk_nginx
    }

    virtual_ipaddress {
        192.168.2.100
    }
}

编辑脚本

vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
killall -3 nginx
nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi

脚本的作用就是检测nginx的状态,假如关闭,会重新开启,再次检测,如果不行就关闭keepalived

猜你喜欢

转载自blog.csdn.net/weixin_50345511/article/details/111029144