负载均衡和tomcat

一、负载均衡

1.相关概念

nginx的反向代理<-->负载均衡

负载均衡

        将四层或者是七层的请求分配到多台后端的服务器上,从而分担整个业务的负载。提高系统的稳定性,也可以提供高可用(备灾,其中的一台后端服务器如果发生故障不影响整体业务)。

负载均衡的特点

  • 根据算法把不同的请求分发到不同的服务器
  • 客户端访问的是代理地址,相应也是代理服务器响应
  • 客户端并不了解后端服务器的情况
  • 可以提高安全性,后端服务器是隐藏的
  • 负载均衡是有缓存的,可以直接访问缓存,提高响应的速度

2.负载均衡的算法

(1)round robin 轮询

        rr: 负载均衡的默认算法,请求轮流分配给后端服务器。

        轮询算法适用于后端服务器处理能力相近(规格相同,2核4G,硬盘空间都512G等)的情况,默认的算法,可以不加。

(2)加权轮询

        weight round robin 轮询的升级版,给每个后端服务器赋予不同的权重。

        处理能力更强的服务器设置更高的权重;处理能力低的,设置低权重。

        权重用数字表示

        高峰时间可以通过这个方法进行流量的优化。

        适用于服务器处理能力差异比较大的情况。

(3)最少连接数

         配合加权轮询一块使用,最少连接数的算法可以将请求发送到当前连接比较少的服务器。

        这种算法适用于后端服务器处理任务耗时不同的情况,可以有效的避免所有的请求集中在处理能力更强的后端服务器上。

(4)ip_Hash

         当客户端访问后端服务器,根据客户端的ip地址,使用hash算法计算出ip地址的hash值,然后再把请求发送到相应的后端服务器。如果客户端访问的ip地址相同,通过hash算法,再一次的请求会被分配到上一次的服务器。保证会话的稳定。

负载均衡的会话保持------> ip_Hash

会话保持到期之后,会话中断,重新请求会重新计算hash值

A 192.168.206.60----> hash值----> B

中断

A 192.168.206.60----> hash值----> C

 (5)url_hash

        根据请求当中的URL地址来计算hash值,如果客户端请求的URL地址相同,客户端的请求会被分配到同一个服务器上。

www.baidu.com/test1 ---------> hash值  ---------> nginx1

www.baidu.com/test2 ---------> hash值  ---------> nginx2

后台服务器的数量发生变化,会影响结果。

3.负载均衡的语法架构

         配置流量分发,主要是依靠代理服务器完成,主要配置在代理服务器完成,配置算法。

使用三台虚拟机模拟情景

nginx1 192.168.206.60 代理服务器

nginx2 192.168.206.70 后端服务器1  echo 707070 > index.html

nginx3 192.168.206.80 后端服务器2  echo 808080 > index.html

客户端:谷歌浏览器

#为了更直观的感受所以把后端服务端的页面显示内容设置成不一样的,真实情况下服务端的页面应该都是一致的

(1)七层代理

  • upstream是nginx自带的。
  • upstream模块仅支持http协议,用来处理http的请求和响应。
  • upstreaem只能写在http模块中。不能在server/location/全局模块中。
  • 没有特殊情况,一般做七层代理。
 *支持轮询

编辑代理服务器的/usr/local/nginx/conf/nginx.conf 

 *支持权重轮询

*支持最少连接数 
*支持ip_hash

*支持url_hash

(2)基于域名的七层代理(轮询) 

#nignx1、 nignx2、nignx3都需要配置/etc/hosts

#配置如下

192.168.206.60 www.happy.com

192.168.206.70 www.zhangsan.com

192.168.206.80 www.lisi.com

(3)四层代理

 stream模块不支持http协议,仅支持tcp/udp协议,处理数据包的流量分发。

四层代理需要写在全局模块当中。

安装nginx的时候必须要有支持streeam模块。

 *支持轮询

 *支持加权轮询

*支持最少连接数

*不支持ip_hash和url_hash

二、Tomcat

1.介绍

        Tomcat是一个Java Web服务器,它实现了Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和Java WebSocket技术规范。它主要用于运行Java Web应用程序,提供HTTP服务。

  • java servlet: tomcat是一个servlet容器,负责管理和执行java-servlet,服务端的java程序。处理客户端的htpp的请求和响应。
  • java server 服务端的配置
  • pages 动态页面的技术 -------> java代码完成的

        tomcat既可以作为以java代码为基础的动态页面,也可以处理和转发动态请求。tomcat的并发能力很差,适合小项目。

2.Tomcat的核心组件

(1)web容器

        处理web的请求,响应,动态页面的展示

(2)jsp容器

        解析index.jsp中的java代码转换为servlet的代码,然后servlet编译执行

        jsp是一种技术模板,类似于html语言,允许在html文件当中,嵌入java的代码

(3)servlet容器

        接收web容器的请求,负责加载初始化,执行和管理。

功能组件

  • connector:接受外部的请求以及响应
  • container:包含了engine host context webapp 四个组件组成
  • service:包含了connector和container
  • engine:引擎,用来管理多个虚拟主机,一个service只能有一个engine
  • host:代表一个虚拟主机,也可以理解为站点
  • context:对应的web应用
  • webapp(wrapps):最终的封装器,容器的最底层 index.jsp

 3.Tomcat的配置

(1)Tomcat的目录结构

目录名称作用
bin存放启动和关闭的脚本文件
conftomcat的配置文件
logstomcat的日志文件
temp保存临时文件的目录
webapps保存不同项目的应用目录
work 工作目录

(2)Tomcat的配置文件 ​​​​​​​ ​​​​​​​

        主要的配置文件有server.xml(服务器配置)、web.xml(Web应用程序配置)等。

4.安装Tomcat

#安装依赖软件

apt -y install openjdk-8-jdk-headless
java -version #查看java的版本

#解压压缩包,改名并移动到/usr/local下

#进入/tomcat/bin/下,启动程序

 5.实例:访问多个JSP Page

#创建pages

cd /usr/local/tomcat/webapps/

mkdir test1 test2

cd test1

vim index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

cd test2

vim index.jsp

#修改下面一行,其余同上

<% out.println("动态页面 2,http://www.test2.com");%>

 #编辑主配置文件

cd /usr/local/tomcat/conf

vim server.xml

        #在最下面的</html>下面添加 (以什么开头以什么结尾)

        <Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" />
        </Host>

        <Host name="www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true" />

        </Host>

#Host name主机名"ww.test1.com"
#appBase="webapps" web应用程序目录
#unpackWARs="true" 是否对.war格式结尾文件进行展开,默认配置
#autoDeploy="true" tomcat在运行时会自动部署webapps里面对应的配置
#xmlValidation="false"是否验证xml文件的有效性
#xmlNamespaceAware="false”是否启动xml的命名空间
#Context docBase="/usr/local/tomcat/webapps/test1" 用来说明对应站点的工作的目录

#做域名映射

vim /etc/hosts

192.168.206.60 www.test1.com www.test2.com 

 

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

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

相关文章

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ )&#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \su…

Facebook如何避免因IP变动而封号?实用指南

随着Facebook在个人社交与商业推广中的广泛应用&#xff0c;越来越多的用户面临因“IP变动”而被封号的问题。尤其是跨境电商、广告运营者和多账号管理用户&#xff0c;这种情况可能严重影响正常使用和业务发展。那么&#xff0c;如何避免因IP变动导致的封号问题&#xff1f;本…

8.1 日志管理

本文深入解析 MySQL 中的关键日志类型&#xff0c;包括错误日志、二进制日志、查询日志和慢查询日志&#xff0c;帮助运维人员高效定位问题、分析性能并管理数据库。 1. 错误日志 1.1 概述 错误日志记录 MySQL 服务器运行过程中的重要信息&#xff0c;例如启动、关闭、错误及…

Docker 学习总结(84)—— Docker 常用运维命令

版本与信息查询 docker --version:查看安装的Docker版本。 docker info:获取Docker系统的详细配置信息。 镜像管理 docker images:列出本地所有镜像。 docker search IMAGE_NAME:搜索Docker Hub上的镜像。 docker pull IMAGE_NAME[:TAG]:从仓库下载指定镜像。 docker rmi …

【C++】判断能否被 3, 5, 7 整除问题解析与优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;老师代码实现与分析老师代码逻辑分析优点缺点 &#x1f4af;学生代码实现与分析学生代码逻辑分析优点缺点 &#x1f4af;改进与优化优化代码实现优化…

[计算机网络]IP地址推行的“书同文,车同轨”

硬件地址无法直接转换的故事 在很久很久以前&#xff0c;网络世界就像一个庞大的帝国&#xff0c;各个村落&#xff08;网络&#xff09;都有自己的语言&#xff08;硬件地址&#xff09;。每个村落都有自己的规则和习惯&#xff0c;村里的每户人家&#xff08;设备&#xff0…

Maven pom文件分析

文章目录 project子元素分类项目基础信息- parent- modelVersion- groupId- artifactId- name- version- packaging- description- url- inceptionYear 组织与许可信息- organization- licenses- developers- contributors- mailingLists 自定义属性信息- properties 模块配置-…

修改浏览器地址栏参数

Vue 修改当前页面地址栏参数 function updateUrlParameter(param: string, value: string) {const url new URL(window.location.href); // 获取当前页面的 URL// 解析哈希部分const hash url.hash ? url.hash.slice(1) : "";const [path, queryString] hash.sp…

深度优先搜索(DFS)与回溯法:从全排列到子集问题的决策树与剪枝优化

文章目录 前言&#x1f384;一、全排列✨核心思路✨实现步骤✨代码✨时间和空间复杂度&#x1f381;1. 时间复杂度&#x1f381;2. 空间复杂度 &#x1f384;二、子集✨解法一&#xff1a;逐位置决策法&#x1f381;步骤分析&#x1f381;运行示例&#x1f381;代码 ✨解法二&a…

加密算法之单向散列算法

加密算法 背景&#xff1a; 现有的序列号加密算法大都是软件开发者自行设计的&#xff0c;大部分相当简单。有些算法&#xff0c;其作者虽 然下了很大的工夫&#xff0c;却往往达不到希望达到的效果。其实&#xff0c;有很多成熟的算法可以使用&#xff0c;特别是密 码学中一些…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)

1.问题描述&#xff1a; 在AGC中&#xff0c;推送服务的消息回执新建成功后&#xff0c;有一个有效期 1&#xff0c;这个有效期是什么意思&#xff0c;过期后&#xff0c;会影响什么呢&#xff1f; 2&#xff0c;这个有效期是否可以修改成一直不过期&#xff1f; 解决方案&…

egg初始搭建

前言 egg.js 是由阿里开源的面向企业级开发的 Node.js 服务端框架&#xff0c;它的底层是由 Koa2 搭建。 Github&#xff1a;https://github.com/eggjs/egg&#xff0c;目前 14.8K Star&#xff0c;egg 很适合做中台。 安装 首先&#xff0c;你要 确保 Node 已经配置环境变量…

D96【python 接口自动化学习】- pytest进阶之fixture用法

day96 pytest的fixture详解&#xff08;三&#xff09; 学习日期&#xff1a;20241211 学习目标&#xff1a;pytest基础用法 -- pytest的fixture详解&#xff08;三&#xff09; 学习笔记&#xff1a; fixture(scop"class") (scop"class") 每一个类调…

Python中的all/any函数和操作符and/or

操作符直观易读适用简单逻辑&#xff0c;函数紧凑方便适宜多条件处理。 (笔记模板由python脚本于2024年12月12日 22:19:10创建&#xff0c;本篇笔记适合有一定编程基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff…

论文学习——多种变化环境下基于多种群进化的动态约束多目标优化

论文题目&#xff1a;Multipopulation Evolution-Based Dynamic Constrained Multiobjective Optimization Under Diverse Changing Environments 多种变化环境下基于多种群进化的动态约束多目标优化&#xff08;Qingda Chen , Member, IEEE, Jinliang Ding , Senior Member, …

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省) 任务书

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省 任务书 模块一网络平台搭建与设备安全防护任务1&#xff1a;网络平台搭建 &#xff08;50分&#xff09;任务2&#xff1a;网络安全设备配置与防护&#xff08;250分&#xff09; 模块二网络安全事件响应、数字取证…

国标GB28181-2022平台EasyGBS如何实现无插件也能让RTSP在网页端播放?

在流媒体技术日新月异的今天&#xff0c;实时流传输协议&#xff08;RTSP&#xff09;作为视频监控、在线直播等领域的重要支撑&#xff0c;正经历着前所未有的变革。曾经&#xff0c;RTSP在网页端播放面临着诸多挑战&#xff0c;如浏览器兼容性问题、安全性考量以及视频流处理…

7-5 排序

给定 n 个&#xff08;长整型范围内的&#xff09;整数&#xff0c;要求输出从小到大排序后的结果。 本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下&#xff1a; 数据1&#xff1a;只有1个元素&#xff1b;数据2&#xff1a;11个不相同的整数…

EXCEL 关于plot 折线图--频度折线图的一些细节

目录 0 折线图有很多 1 频度折线图 1.1 直接用原始数据做的频度折线图 2 将原始数据生成数据透视表 3 这样可以做出了&#xff0c;频度plot 4 做按某字段汇总&#xff0c;成为累计plot分布 5 修改上面显示效果&#xff0c;做成百分比累计plot频度分布 0 折线图有很多 这…

MATLAB四种逻辑运算

MATLAB中的四种逻辑运算包括逻辑与用&或 a n d 表示 ( 全为 1 时才为 1 &#xff0c;否则为 0 ) and表示(全为1时才为1&#xff0c;否则为0) and表示(全为1时才为1&#xff0c;否则为0)&#xff0c;逻辑或用|或 o r 表示 ( 有 1 就为 1 &#xff0c;都为 0 才为 0 ) or表示…