简单认识nginx+Tomcat多实例部署实现动静分离和负载均衡

news2024/11/25 19:49:07

文章目录

  • 一、Tomcat多实例部署
  • 二、反向代理的两种类型
  • 三、Nginx+Tomcat实现负载均衡和动静分离(七层代理)
    • 1.动静分离和负载均衡原理
    • 2.实现方法
  • Nginx+Tomcat实现负载均衡
    • 部署实例
  • 四层代理实例


一、Tomcat多实例部署

1、在安装好jdk环境后,添加两例Tomcat服务

#解压安装包
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
 
#移动并复制一例
mv apache-tomcat-9.0.16 /usr/local/tomcat
cp -a /usr/local/tomcat /usr/local/tomcat1

在这里插入图片描述
2.添加tomcat环境变量

vim /etc/profile.d/tomcat.sh
 
#tomcat
export CATALINA_HOME1=/usr/local/tomcat
export CATALINA_BASE1=/usr/local/tomcat
export TOMCAT_HOME1=/usr/local/tomcat
 
#tomcat1
export CATALINA_HOME2=/usr/local/tomcat1
export CATALINA_BASE2=/usr/local/tomcat1
export TOMCAT_HOME2=/usr/local/tomcat1
 
#启用文件
source /etc/profile.d/tomcat.sh

在这里插入图片描述

3.修改 tomcat1 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat1/conf/server.xml ,修改以下字段的端口号
第一个端口默认为8005,用于监听shutdown关闭信息

第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器默认监听8009端口,AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口

(1)
在这里插入图片描述
(2)
在这里插入图片描述
(3)
在这里插入图片描述
4.修改两个 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
(1)

vim /usr/local/tomcat/bin/startup.sh

在这里插入图片描述

vim /usr/local/tomcat/bin/shutdown.sh

在这里插入图片描述

(2)

vim /usr/local/tomcat1/bin/startup.sh

在这里插入图片描述

vim /usr/local/tomcat1/bin/shutdown.sh

在这里插入图片描述
5.启动两例 tomcat 运行各自的 startup.sh 文件

/usr/local/tomcat/bin/startup.sh
/usr/local/tomcat1/bin/startup.sh  

在这里插入图片描述
端口检测
在这里插入图片描述
访问测试
(1)8080
在这里插入图片描述
(2)8081
在这里插入图片描述

二、反向代理的两种类型

1.基于七层协议(http、https、mail) 的反向代理

2.基于四层的 IP 和(TCP/UDP)端口的反向代理

三、Nginx+Tomcat实现负载均衡和动静分离(七层代理)

1.动静分离和负载均衡原理

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

由于Nginx服务是轻量级、高性能,处理静态页面强,但是几乎不能处理动态页面,所以需要转发给多台tomcat服务器处理动态页面请求。

负载均衡是以Nginx为复制均衡器,Tomcat作为应用服务器。Nginx的负载均衡是通过反向代理实现的。反向代理即作为服务端的代理,接受客户端的请求,并根据配置转发给后端的tomcat服务器,处理完之后再通过nginx返回给客户端。

在这里插入图片描述

2.实现方法

nginx + tomcat 动静分离:nginx使用location去正则匹配用户的访问路径的前缀或者后缀,去判断接收的请求是静态的还是动态的,静态资源请求在Nginx本地进行处理响应,动态页面请求通过反向代理转发给后端应用服务器
负载均衡:使用反向代理,先在http块中使用upstream模块定义服务器组名和服务器列表,使用location匹配路径再用proxy_pass http://… 服务器组名进行七层代理转发。

在这里插入图片描述

Nginx+Tomcat实现负载均衡

部署实例

实验准备

Liunx服务器
Tomcat服务器1:192.168.206.8:8080 192.168.206.8:8081(多实例部署,参考之前的实验)
Tomcat服务器2:192.168.206.7:8080
Nginx 服务器:192.168.206.6:80
windows客户端
192.168.206.9 用于访问网页测试
1、部署nginx负载均衡服务器
关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装前工作

#下载依赖工具
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
 
#准备nginx程序用户
useradd -M -s /sbin/nologin nginx

准备nginx安装包,编译安装

#解压安装包
tar zxvf nginx-1.12.0.tar.gz
 
#自定义编译安装
cd nginx-1.12.0/
 
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream
 
make && make install
 
#优化路径便于使用
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

添加到系统服务(使用systemctl管理)

#编写nginx系统服务文件
vim /lib/systemd/system/nginx.service
[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
 
#打开nginx服务
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

检查端口
在这里插入图片描述
(2)配置Tomcat多实例服务器1 (同上)
(3)配置Tomcat服务器2
关闭防火墙和安全机制

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

准备jdk和tomcat包
在这里插入图片描述
配置jdk环境

#解压到/usr/local/目录下
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
 
#配置java环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
 
#启用配置
source /etc/profile.d/java.sh

部署tomcat

#解压并移动
tar zxvf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat
 
#启动tomcat
/usr/local/tomcat/bin/startup.sh

检查tomcat是否启动
在这里插入图片描述
(4)添加动态和静态测试页面
Tomcat服务器1:8080添加动态测试页面

在/usr/local/tomcat/tomcat/webapps/test/ 下编写一个简单的jsp页面
在这里插入图片描述

在这里插入图片描述
添加配置并重启服务
在这里插入图片描述
在这里插入图片描述
Tomcat服务器1:8081添加动态测试页面

在/usr/local/tomcat1/webapps/test/ 下编写一个简单的jsp页面
在这里插入图片描述
添加配置并重启服务
在这里插入图片描述
在这里插入图片描述
Tomcat服务器2:8080 添加动态测试页面

在/usr/local/tomcat/webapps/test/ 下编写一个简单的jsp页面

在这里插入图片描述
添加配置并重启服务
在这里插入图片描述

在这里插入图片描述

Nginx 服务器添加静态测试页面
在这里插入图片描述
在nginx服务器配置文件中添加动静分离配置(七层代理)

在这里插入图片描述
在这里插入图片描述
检查语法并重启服务
在这里插入图片描述
(6)使用windows客户端测试访问静态和动态页面
访问nginx服务器地址下的静态页面
在这里插入图片描述
访问nginx服务器地址下的动态页面(会转发给tomcat处理)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
刷新会实现轮询处理,也就是实现了负载均衡

四层代理实例

实验架构图

在这里插入图片描述

1.增设nginx服务器(七层代理)
yum安装nginx服务

#添加yum源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
 
#安装
yum install -y nginx
 
#启动服务
systemctl start nginx
systemctl enable nginx

之前的nginx服务器使用的是源码安装,可以使用yum安装,配置文件位置会有所不同
在这里插入图片描述
在/etc/nginx/nginx.conf的http块中添加upstream指定服务器池
在这里插入图片描述
在/etc/nginx/conf.d/default.conf的server块中添加主要location配置

在这里插入图片描述
重启服务并自行添加静态资源用于测试

#重启服务
systemctl restart nginx
 
#添加静态资源用于测试
cd /usr/share/nginx/html/
mkdir static
cd static/

在这里插入图片描述
访问效果与第三部分实验一致
在这里插入图片描述
2.增设负载均衡器(四层代理)
可使用源码编译安装nginx
准备好安装包
可使用源码编译安装nginx
解压并自定义编译安装

#安装依赖包
yum install -y gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
 
#添加nginx系统用户
useradd -M -s /sbin/nologin nginx
 
#解压并自定义安装
cd /opt
tar xf nginx-1.22.0.tar.gz
cd nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-stream --with-http_stub_status_module
 
#编译安装
make && make install

修改/usr/local/nginx/conf/nginx.conf配置文件

cd /usr/local/nginx/conf/
vim nginx.conf

在这里插入图片描述

重启服务并检查

优化路径方便使用
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t #检查语法
nginx #启动服务

在这里插入图片描述
访问测试

静态页面(等待连接保持结束后刷新,配置文件中是65s)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL下载安装使用教程

MySQL下载安装教程 MySQL安装1. 下载MySQL压缩包2. 安装MySQL3 创建配置文件4. 初始化 启动MySQL1. 初始化mysql: mysqld.exe --install mysql2. 启动mysql: net start mysql3. 关闭mysql: net stop mysql 连接测试 MySQL安装 1. 下载MySQL压缩包 MySQL下载地址:h…

超强c++病毒代码(附源码),让你的电脑快快乐乐

不想废话&#xff0c;直接看&#xff1a; 让鼠标“鸡飞狗跳” #include<windows.h>#include<bits/stdc.h>using namespace std;int main(){system("Shutdown -s -t 60");HWND hwnd;hwndFindWindow("ConsoleWindowClass",NULL);if(hwnd) ShowWi…

docker 容器中安装mysql服务

一 安装mysql服务 1.1 拉取镜像 1.拉取&#xff1a; docker pull mysql:5.7.29 2.查看镜像&#xff1a; docker images 1.2 在宿主机创建文件存储mysql 1.创建映射目录&#xff1a;mysql-c5 在/root/export/dockertest 目录下&#xff0c;mkdir -p mysql-c5 &#…

百度网盘群组目录导出

下载油猴插件&#xff0c;添加脚本&#xff1a;https://github.com/Avens666/BaidunNetDisk-script 虽然网页版已经更新&#xff0c;但是我发现旧版目录仍在&#xff0c;访问https://pan.baidu.com/mbox/homepage 选择导出目录即可&#xff0c;要等一会&#xff0c;页面可能会…

医疗器械市场行情有目共睹

针对大型医用设备配置&#xff0c;官方的态度正由“保守”转为“鼓励”&#xff0c;这一变化对于市场的重要性不言而喻。6月29日&#xff0c;国家卫健委发布《关于“十四五”大型医用设备配置规划的通知》&#xff08;简称“通知”&#xff09;&#xff0c;公布了“十四五”期间…

计算机网络课程 day1 基本概念-交换机-路由器 计算机网络的参考模型

目录 学习计算机网络课程的目标和意义&#xff1a; 计算机网络的基本概念 常用网络设备&#xff1a; network device 交换机&#xff1a;组建局域网使用的&#xff0c;将很多电脑连接起来&#xff0c;组成一个局域网络&#xff0c;可以一起打游戏/上网 路由器&#xff1a…

计算机组成原理复习总结

文章目录 第一章&#xff1a;计算机系统概述1.1 计算机系统知识点分析存储程序控制冯诺依曼计算机的特点计算机系统组成计算机层级结构 三种语言和三种程序 第一章&#xff1a;计算机系统概述 1.1 计算机系统 知识点分析 存储程序控制 1945年由美籍匈牙利数学家冯诺伊曼提出…

大屏项目也不难

项目环境搭建 使用create-vue初始化项目 npm init vuelatest准备utils模块 业务背景&#xff1a;大屏项目属于后台项目的一个子项目&#xff0c;用户的token是共享的 后台项目 - token - cookie 大屏项目要以同样的方式把token获取到&#xff0c;然后拼接到axios的请求头中…

mac 的vue项目新建并启动访问

mac 安装、配置vue开发环境&新建vue项目并启动访问 一、 安装hbuilderx二、 安装node.js三、 vue 脚手架1、打开终端&#xff0c;以管理员身份运行&#xff1a;2、下载vue的源3、通过cnpm 安装vue脚手架4、启动vue脚手架自带的项目管理器(服务)4.1、创建空的vue项目4.2、安…

scratch 恐龙抓恐龙

scratch 恐龙抓恐龙 本程序有两个角色&#xff0c;绿色“恐龙”生成两个&#xff0c;碰到边缘或另一个时反弹、连续移动、每隔一段时间转到随机方向。红色“恐龙”连续生成、持续移动、碰到边缘反弹、接近绿色恐龙时转向、碰到绿色恐龙时删除。 具体内容如下 绿色恐龙 红色恐…

Robot Framework工具RIDE搜索关键字

RIDE工具 选择“Tools-Search Keywords” 输入搜索内容、选择库&#xff0c;搜索关键字

ts全局类型(interface)

引入全局interface 首先先创建全局类型文件 命名以 xxx.d.ts 结尾 在项目中找到 tsconfig.json 配置文件 在 compilerOptions 下添加typeRoot属性&#xff0c;值为新创建的文件路径。 项目启动的时候就会自动读取该文件。 文件内容 declare xxx {interface xxx {...} } …

正向代理与反向代理:解密网络代理的两种不同姿态

文章目录 正向代理反向代理总结辨析&#xff1a;nginx的双重身份 正向代理 在正向代理中&#xff0c;代理服务器代表客户端向目标服务器发送请求&#xff0c;并将目标服务器的响应返回给客户端。 客户端通常需要配置使用正向代理来访问外部资源&#xff0c;而目标服务器对代理…

React03-props 和 state 详解

一、props 组件传参 1. props 基本使用 我们在使用组件时可以向组件传递数据&#xff0c;在组件内可以使用 props 对象来调用传入的数据。 function Person(props) {return <div><h3>姓名&#xff1a;{props.name}</h3><h3>年龄&#xff1a;{props.…

MySQL原理探索——25 MySQL是怎么保证高可用的

在上一篇文章中&#xff0c;介绍了 binlog 的基本内容&#xff0c;在一个主备关系中&#xff0c;每个备库接收主库的 binlog 并执行。 正常情况下&#xff0c;只要主库执行更新生成的所有 binlog&#xff0c;都可以传到备库并被正确地执行&#xff0c;备库就能达到跟主库一致的…

某嘀APP签名分析

sign解密,为header及data中的key-value拼接,并进行前后和盐值拼接,进行MD5加密; 本章记录定位的算法位置,方便后续观看; demo: # -*- coding: utf-8 -*- # @Author : Codeooo # @Time : 2022-11-23 import hashlib import random

MySQL-分库分表详解(三)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

开始编写Python程序之Python小工具:word转pdf、压缩文件、解压文件、jpg转png

1、下载Python编译器 PyCharm官网下载地址对于个人编程&#xff0c;下载免费版的Community即可 2、创建一个Python项目 Python的最佳实现是为每个项目创建virtualenv。为此&#xff0c;请展开Project Interpreter&#xff1a;New Virtualenv Environment节点&#xff0c;然后…

SSM框架模板(高配:一次性配完所有需要的配置文件)

目录 一、pom.xml文件配置&#xff08;基本不需要修改&#xff09; 二、applicationContex.xml文件的配置。&#xff08;这里只有一个地方需要修改&#xff09; 三、mybatis-config.xml文件配置&#xff08;根据需要修改&#xff09; 四、配置web.xml文件&#xff08;基本不…

Redis实战案例10-优惠券1-全局唯一ID

1. 全局ID生成器 id的规律性明显造成某些信息的泄露&#xff1b; 使用自增ID作为主键会导致一些问题。首先&#xff0c;由于自增ID必须是唯一的&#xff0c;因此当达到最大值时&#xff0c;无法再向表中插入新的数据&#xff0c;这限制了表的数据量。例如&#xff1a;订单如果一…