社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Nginx+Tomcat实现负载均衡、动静分离(脚本方法)

Python开发 • 2 年前 • 303 次点击  
👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇


一、Nginx 负载均衡实现原理

1、Nginx 实现负载均衡是通过反向代理实现

反向代理(Reverse Proxy) 是指以 代理服务器(例:Nginx) 来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器(例:Tomcat),并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器(例:Nginx)对外就表现为一个反向代理服务器。

我们从客户端的视野来看,实际上客户端并不知道真实的服务提供者是哪台服务器,它只知道它请求了反向代理服务器。因此反向代理这种方式又对外隐藏了真实服务器的地址,从一定程度上降低了安全隐患。

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

1)upstream 服务池名 {}

作用:配置后端服务器池,以提供响应数据

2)proxy_pass http:// 服务池名

作用:配置将访问请求转发给后端服务器池的服务器处理

二、Nginx 动静分离实现原理

1、动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 Nginx 提供服务,动态资源由 Nginx 转发至后端。

2、Nginx 静态处理优势

  • Nginx 处理静态页面的效率远高于 Tomcat 的处理能力
  • 若 Tomcat 的请求量为1000次,则 Nginx 的请求量为6000次
  • Tomcat 每秒的吞吐量为0.6M,Nginx 的每秒吞吐量为3.6M
  • Nginx 处理静态资源的能力是 Tomcat 处理的6倍

三、Nginx + Tomcat 动静分离、负载均衡配置步骤

环境准备

注意:脚本不太完美,请勿执行第二次

1、部署 Nginx 负载均衡服务器

安装Nginx服务详情请看:web服务之Nginx网站服务

https://blog.csdn.net/weixin_51326240/article/details/112439374

下面是Nginx服务一键脚本,使用source或者. 执行脚本即可

#!/bin/bash
#脚本说明:编译安装nginx服务
#注意:使用前请将nginx-1.12.0.tar.gz放入/opt目录下

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

#安装所需开发包和编译环境、编译器
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/

#编译安装nginx;指定安装路径、指定用户名、组名、启用模块以支持统计状态
cd /opt/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 restart nginx.service
systemctl enable nginx.service

2、部署两台 Tomcat 应用服务器

安装Tomcat服务详情请看:web服务之Tomcat

https://blog.csdn.net/weixin_51326240/article/details/112755809

下面是Tomcat服务一键脚本,使用source或者. 执行脚本即可

#!/bin/bash
#安装Tomcat服务

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

#安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm

#设置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

3、动静分离配置

Tomcat服务详情请看:web服务之Tomcat

https://blog.csdn.net/weixin_51326240/article/details/112755809

1)Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/index.jsp

"java" import="java.util.*" pageEncoding="UTF-8"%>


JSP test1 page


"动态页面 1:www.test1.com");%>



#修改配置文件
vim /usr/local/tomcat/conf/server.xml
"localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 "/usr/local/tomcat/webapps/test" path="" reloadable="true" />


/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
2)Tomcat2 server 配置
mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/index.jsp

"java" import="java.util.*" pageEncoding="UTF-8"%>


JSP test2 page


"动态页面 1:www.test2.com");%>



#修改配置文件
vim /usr/local/tomcat/conf/server.xml
"localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 "/usr/local/tomcat/webapps/test" path="" reloadable="true" />


/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
3)Nginx server 配置
#准备静态页面和静态图片
echo '

this is static

'
 > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cd /usr/local/nginx/html/img



    
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
#gzip on;

upstream tomcat_server {
    server 192.168.163.11:8080 weight=1;
    server 192.168.163.12:8080 weight=1;
}

server {
 listen 80;
 server_name localhost;

    #charset koi8-r;

 #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/img/;
  expires 10d;
 }
        location / {
            root html;
            index  index.html index.htm;
        }


systemctl restart nginx.service

4、访问测试

测试静态页面效果

  • 浏览器访问 http://192.168.163.10/
  • 浏览器访问 http://192.168.163.10/pika.jpg

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

  • 浏览器访问 http://192.168.163.10/test/index.jsp
来源:blog.csdn.net/weixin_51326240/article/
details/112756464

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【 面试题】即可获取

在看点这里好文分享给更多人↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/148610
 
303 次点击