请选择 进入手机版 | 继续访问电脑版

石家庄老站长

点击联系客服
客服QQ:509006671 客服微信:mengfeiseo
 找回密码
 立即注册
查看: 8|回复: 0

Headline: Nginx Tomcat负载平衡、静态和动态分离群集

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-4-30 15:11:37 | 显示全部楼层 |阅读模式
Nginx+Tomcat实现负载均衡、动静分离集群

一、Nginx负载平衡原理1)Nginx静态处理优势2、Nginx静态和动态分离原理2、Nginx配置反向代理主要参数3、实验(图形详细说明)1。编译安装Nginx2。部署2台Tomcat应用程序服务器3。静态分离配置1) Tomcat

一、Nginx负载均衡原理





Nginx服务器定向到前端,Tomcat服务器定向到后端,网页请求由Nginx服务转发。

但是,它不是转发所有web请求,而是处理静态页面请求Nginx服务器本身,并将动态页面请求转发到后端Tomcat服务器进行处理。

Tomcat是轻量级应用程序服务器,可能缺乏可接受的访问,因此需要多个Tomcat服务器。然后,可以通过Nginx配置权重选择Tomcat服务器进行处理。负载平衡策略。

Nginx服务器

1、使用完全匹配的主页

2、静态页面使用常规匹配自行处理。

3、动态页使用以常规匹配JSP结尾的请求,并通过proxy_pass传递给Tomcat服务器

1)Nginx静态处理优势

Nginx的静态页面处理效率远远高于Tomcat的处理能力。如果Tomcat的请求量为1000次,则Nginx的请求量为6000次。Tomcat的每秒吞吐量为0.6米,Nginx的每秒吞吐量为3.6米。nginx的静态资源处理能力是Tomcat处理的6倍二、Nginx动静分离原理





服务器端从将静态资源和动态资源、静态资源提供Nginx服务、动态资源Nginx作为后端传递的客户端接收请求。

二、Nginx配置反向代理主要参数

配置后端服务器池以提供响应数据

Upstream服务器名称
uation">{}

配置将访问请求转发给后端服务器池名

proxy_pass http://服务器名

三、实验(图文详解)
1、Nginx+Tomcat负载均衡、动静分离
2、Nginx作为负载均衡器,Tomcat作为应用服务器
3、所需安装包:nginx-1.12.0.tar.gz / apache-tomcat-9.0.16.tar.gz / jdk-8u201-linux-x64.rpm

环境配置

主机操作系统IP地址所需软件
Nginx ServerCentOS7192.168.190.11nginx-1.12.0.tar.gz
TomcatServer1CentOS7192.168.190.12apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm
TomcatServer2CentOS7192.168.190.13apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm

1.编译安装Nginx
写一个shell脚本将代码复制进去,然后使用source或者. 执行脚本,等待一键安装即可

#!/bin/bash
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



2.部署2台Tomcat 应用服务器
理论部分请看Tomcat服务部署(图文详解)

vim tomcat.sh
#!/bin/bash
#关闭防火墙
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

chmod +x tomcat.sh
./tomcat.sh
netstat -natp | grep 8080
java -version  



3.动静分离配置
1)Tomcat Server1 配置
mkdir /usr/local/tomcat/webapps/accp
vim /usr/local/tomcat/webapps/accp/index.jsp
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
html>
head>
title>JSP test2 page/title>
/head>
body>
% out.println("动态页面:this is server1");%>
/body>
/html>
vim /usr/local/tomcat/conf/server.xml
Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        Context docBase="/usr/local/tomcat/webapps/accp" path="" reloadable="true" />
/Host>
#重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh



2)Tomcat Server2 配置
mkdir /usr/local/tomcat/webapps/accp
vim /usr/local/tomcat/webapps/accp/index.jsp
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
html>
head>
title>JSP test2 page/title>
/head>
body>
% out.println("动态页面:this is server2");%>
/body>
/html>
vim /usr/local/tomcat/conf/server.xml
Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        Context docBase="/usr/local/tomcat/webapps/accp" path="" reloadable="true" />
/Host>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh



4.Nginx server 配置
#准备静态页面和静态图片
echo '这是默认目录静态页面' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/accp #图片的存放目录



#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
#gzip on;
upstream tomcat_server {                         #反向代理模块,定义后端服务器http模块内,server模块外添加
        server 192.168.190.12:8080 weight=1;
        server 192.168.190.13:8080 weight=1;
}
server {
        listen 80;
        server_name www.accp.com;
        charset utf-8;
        #access_log logs/host.access.log main;
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
        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;  
        }
       
        #配置Nginx处理静态图片请求
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
                root /usr/local/nginx/html/accp;
                expires 10d;
        }
       
        location / {
                root html;
                index index.html index.htm;
        }
systemctl restart nginx.service



5.验证


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|石家庄@IT精英团

GMT+8, 2021-5-16 05:24 , Processed in 0.114037 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表