Java教程

集群之Nginx+Tomcat实现负载均衡、动静分离

本文主要是介绍集群之Nginx+Tomcat实现负载均衡、动静分离,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

Nginx 负载均衡实现原理

Nginx 动静分离实现原理

搭建过程:

部署 Nginx 负载均衡服务器

部署两台 Tomcat 应用服务器

 ​

动静分离配置 

Tomcat Server 1  IP:192.168.159.102

 配置服务

Tomcat Server 2  IP:192.168.159.103

配置服务 

 Nginx server配置

静态页面配置

测试

测试静态页面效果

测试负载均衡效果,不断刷新浏览器测试

Nginx 负载均衡实现原理

1、Nginx 实现负载均衡是通过反向代理实现
2、Nginx 配置反向代理的主要参数



Nginx 动静分离实现原理

1、动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 Nginx 提供服务,动态资源由 Nginx 转发至后端。
2、Nginx 静态处理优势
——Nginx 处理静态页面的效率远高于 Tomcat 的处理能力
——若 Tomcat 的请求量为1000次,则 Nginx 的请求量为6000次
——Tomcat 每秒的吞吐量为0.6M,Nginx 的每秒吞吐量为3.6M
——Nginx 处理静态资源的能力是 Tomcat 处理的6倍

搭建过程:

Nginx 服务器:192.168.159.101
Tomcat 服务器1:192.168.159.102
Tomcat 服务器2:192.168.159.103

 三台服务器 环境准备

[root@localhost ~]# systemctl stop firewalld
#关闭防火墙
[root@localhost ~]# systemctl disable firewalld
#开机不自启
[root@localhost ~]# setenforce 0
#关闭保护

部署 Nginx 负载均衡服务器

编译安装nginx服务

#安装所需开发包和编译环境、编译器
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

#创建程序用户,便于准确控制访问
useradd -M -s /sbin/nologin nginx




cd /opt

tar zxvf nginx-1.12.0.tar.gz -C /opt/ #解压安装包


cd nginx-1.12.0/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with
-file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module
#指定安装路径、指定用户名、组名、启用模块以支持统计状态

#编译及安装
make && make install

#软链接便于系统识别nginx操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/



#添加nginx系统服务
echo '[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service

#赋权及开启服务、开启开机自启
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

部署两台 Tomcat 应用服务器

 

#scp apache-tomcat-9.0.16.tar.gz root@192.168.159.103:/opt    #将所需的压缩包在Tomcat1上传给Tomcat2 server,也可以自己直接将压缩包拉到/opt目录下



#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
 
#安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm 
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version
 
#设置JDK环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar                                     
          export PATH=$JAVA_HOME/bin:$PATH' > /etc/profile.d/java.sh
 
 
source /etc/profile
 
#安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
# 启动
/usr/local/tomcat/bin/startup.sh 
 

 

动静分离配置 

Tomcat Server 1  IP:192.168.159.102

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/lic
[root@localhost ~]# vim /usr/local/tomcat/webapps/lic/index.jsp
 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("动态页面:ciao");%>
</body>
</html>

 配置服务

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
 
 <Host name="tomcat1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" />
 </Host>
 
 
#配置详解
Host name :主机名
appBase : Tomcat程序工作目录,相对路径为webapps,绝对路为/usr/local/tomcat/webapps
unpackWARs :tomcat在webapps文件夹中发现war包文件时,是否自动将其解压
autoDeploy :设为true,则web.xml发生变化时,tomcat自动重新部署程序。实现这个功能必需允许后台处理xmlvalidation :是否开启对XML文件的验证
xmlNamespaceAware :是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
docBase : wEB应用的目录(本地路径)
path:设置访问的URI为WEB应用的根目录(URL路径),""表示默认,加载系统中自带的类(class文件)
reloadable :是否在程序有改动时重新载入

Tomcat Server 2  IP:192.168.159.103

 

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/lic
[root@localhost ~]# vim /usr/local/tomcat/webapps/lic/index.jsp
 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("动态页面:hello");%>
</body>
</html>

配置服务 

165行 插入

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
 
    <Host name="tomcat2" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" />
</Host>
 

#重启服务
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh

 Nginx server配置

静态页面配置

[root@localhost ~]# echo '<html><body><h1>这是默认目录静态页面</h1></body></html>' > /usr/local/nginx/html/index.html
[root@localhost ~]# cat /usr/local/nginx/html/index.html
   <html><body><h1>这是默认目录静态页面</h1></body></html>
[root@localhost ~]# mkdir /usr/local/nginx/html/tupian
#新建存放图片的目录,拖入图片
[root@localhost ~]# cd /usr/local/nginx/html/tupian
[root@localhost tupian]# rz -E
rz waiting to receive.



配置Nginx服务
[root@localhost tupian]# vim /usr/local/nginx/conf/nginx.conf
 #gzip  on;
         upstream tomcat_server {
           server 192.168.159.102:8080 weight=1;
           server 192.168.159.103:8080 weight=1;
 #配置负载均衡服务器列表,weight参数表示权重,权重越高,被分配到的概率越大 
         }
  
      server {
          listen       80;
          server_name  www.accp.com;
          
          charset utf-8;
          
          #access_log  logs/host.access.log  main;
          
          location ~ .*.jsp$ {
                  proxy_pass http://tomcat_server;
                  proxy_set_header HOST $host;
                     
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
          
          
                  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
                          root /usr/local/nginx/html/tupian;
                          expires 10d;
        }
          
          location / { 
             root   html;
              index  index.html index.htm;   
        }

[root@localhost ~]# systemctl restart nginx

测试

测试静态页面效果


                 浏览器访问http://192.168.159.101/
                 浏览器访问http://192.168.159.101/gougou.jpg

 

测试负载均衡效果,不断刷新浏览器测试


  浏览器访问http://192.168.159.101/lic/index.jsp 

 

 

这篇关于集群之Nginx+Tomcat实现负载均衡、动静分离的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!