nginx的学习(二):负载均衡和动静分离

news2024/9/17 3:20:31

简介

nginx的负载均衡和动静分离的简单使用

负载均衡配置

外部访问linux的ip地址:80/edu/a.html地址,会轮询访问Tomcat8080和Tomcat8081服务。

Tomcat的准备

准备两个Tomcat,具体准备步骤在nginx的学习一的反向代理例子2中,在Tomcat8080中的/usr/src/tomcat8080/apache-tomcat-7.0.70/webapps目录下,创建edu文件夹,在edu文件夹中创建a.html。

<h1>8080</h1>

修改nginx的配置

修改/usr/local/nginx/conf目录下的nginx.conf文件。
在http块中添加:

 upstream myserver{
 server linux的ip地址:8080;
 server linux的ip地址:8081;
  }

在server块中的location块中添加:

 server {
          listen       80;
          server_name  linux的ip地址;  
          location / {
  proxy_pass http://myserver;
          }
          }

重启nginx

测试

外部访问linux的ip地址:80/edu/a.html
在这里插入图片描述
点击刷新,会访问8081Tomcat服务。

nginx的负载均衡策略

  • 轮询,是默认的方案,服务挂掉会自动剔除
  • 权重
  • ip hash:按访问的ip的hash结果分配,每个访客固定访问一个后端服务器,可以解决session问题
  • fair:需要第三方插件,按后端服务器的响应时间来请求分配,响应时间短的优先分配。

nginx的动静分离

把动态请求和静态请求区分开来,主要有两种:

  • 把静态文件独立成单独的域名,放在独立的服务器上(主流)
  • 把动态请求和静态请求混在一起发布,使用nginx区分。

可以调高访问的效率。

配置动静分离

把静态资源放到linux上,在外部访问linux的ip地址:80/image/linux的ip地址:80/image/的时候,可以访问到linux上的静态资源。

环境准备

在根目录下创建一个data文件,mkdir data
进入data,创建一个view和一个image文件夹mkdir view image
在view中创建一个a.html页面,内容是: < h1>static view < /h1>
在image中放一张图片,finalshell直接上传

修改nginx的配置文件

修改/usr/local/nginx/conf目录下的nginx.conf文件。
在server块中添加:

  location /view/ {
  root /data/;
  }
  location /image/ {
  root /data/;
  }  

重启nginx服务器

测试

外部访问linux的ip地址:80/view/a.html
在这里插入图片描述
外部访问linux的ip地址:80/image/
在这里插入图片描述

nginx的高可用

当nginx只有一个的时候,如果nginx挂了,那系统就不能使用了,所以需要保证nginx的高可用性。增加nginx服务器作为从nginx,主nginx负责转发请求,当主nginx宕机了后,由从nginx来转发请求。配置主从nginx需要软件keepalived.
两台服务器都下载keepalived,修改keepalived的配置文件,里面可以配置
主还是从,以及虚拟ip地址。然后还要写一个检测脚本,用来检查主nginx是否可用,不可用会自动切换。
就可以通过虚拟ip访问了。

nginx原理

master 和worker

启动nginx,会有master和worker进程。
在这里插入图片描述
master是管理监控worker的,worker可以有多个。

有请求来到nginx的时候,请求会来到master,它把任务给下面的worker,多个worker通过争抢的方式得到请求,然后完成具体的操作。

一个master,多个worker的好处

  • 利于nginx进行热部署操作
  • 每个worker都是独立的,不需要加锁,节省性能的开销
  • 其中的一些worker出异常了,也不影响整体的功能

一般设置的worker数量等同于服务器的cpu数量

连接数worker_connection
发送一个请求,占用2个或者4个worker的连接数
访问静态资源占一个,返回资源占一个
如果是动态资源,还要访问服务占一个,返回服务资源占一个

如果nginx有一个master,4个worker,每个worker支持最大连接数是1024个,支持41024/2(静态资源)或者41024/4(动态资源)的最大并发数。

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

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

相关文章

搜索引擎项目构建与解析(一)

这是源码&#xff0c;大家可以下载下来作为参考&#xff0c;一起食用效果更佳&#xff1a;SearchEngine 王宇璇/submit - 码云 - 开源中国 (gitee.com)https://gitee.com/yxuan-wang/submit/tree/master/SearchEngine搜索引擎项目总体来看内容比较简单&#xff0c;代码量也比较…

【计算机方向】五本“三区水刊”重磅推荐!几乎不拒收,国人发文友好!

本期将为您带来五本计算机SCI 妥妥毕业神刊&#xff01; AUTONOMOUS AGENTS AND MULTI-AGENT SYSTEMS International Journal on Document Analysis and Recognition COMPUTATIONAL INTELLIGENCE IET Biometrics ACM Transactions on Asian and Low-Resource L…

linux系统安装pytorch_中文地址命名实体识别案例

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 win10系统安装cuda环境参考这篇文章 搭建Pytorch的GPU环境超详细 1、下载python https://www.python.org/downloads/release/python-368/ 2、下载python包 https://pypi.org/search/?q=transformers 1、搜…

物联网主机 E6000:智慧应急领域的创新力量

在当今瞬息万变的世界中&#xff0c;突发事件和紧急情况时有发生。如何迅速、准确地应对这些挑战&#xff0c;保障人民生命财产安全&#xff0c;成为了社会发展的重要课题。而物联网主机 E6000 的出现&#xff0c;为智慧应急领域带来了全新的解决方案。 一、强大的性能与功能 物…

opencv使用KCF算法跟踪目标,给出目标中心位置

效果图 代码 import cv2class VideoTracker:def __init__(self, video_path: str):self.video_path video_pathself.cap cv2.VideoCapture(video_path)self.tracker cv2.legacy.TrackerKCF_create()self.initBB Noneself.tracker_initialized Falseself.selecting Fals…

如何进行小程序的调试

Errno错误码 在使用部分小程序 API / 组件时&#xff0c;抛出的异常&#xff08;fail 回调 / Promise reject&#xff09;Error 对象中除了带有 errMsg&#xff0c;还会带有通用错误码 errno。 代码示例 wx.openBluetoothAdapter({success (res) {console.log(res)}fail (er…

时间序列分析方法之 -- 指数平滑(Exponential Smoothing)

目录 原理 适用情况 Python 示例代码 结论 原理 指数平滑&#xff08;Exponential Smoothing&#xff09;是一种用于时间序列分析和预测的平滑技术。与简单移动平均&#xff08;SMA&#xff09;和加权移动平均&#xff08;WMA&#xff09;不同&#xff0c;指数平滑通过对最…

VS+opencv+环境配置

下载opencv库。 版本 - OpenCV 下载完了是一个exe文件&#xff0c;&#xff08;可以更换目录&#xff09;直接双击&#xff0c;也就是压缩。 vs配置&#xff1a; 调试-调试属性 点编辑&#xff0c;加入这两个&#xff0c;路径根据自己的opencv库 3、链接器 测试&#xff1a;…

《Java初阶数据结构》----8.<java对象的比较总结>

目录 前言 一、Java对象的比较 1.1基本类型的比较 1.2 对象比较的问题&#xff08;与equals&#xff09; 1.3对象的比较 &#xff08;三种常用方式&#xff09; 1.重写equals方法 2.基于Comparble接口类的比较 3.基于比较器比较&#xff08;Comparator接口&#xff09; …

如何在网站嵌入可填写的PDF表单:2024巴黎奥运会赛程

如何将可填写的 PDF 表单嵌入您的网页&#xff1f;访问者无需下载或注册即可查看并填写。 简单&#xff01;本文以2024巴黎奥运会赛程表单为例&#xff0c;演示如何将其嵌入网页中。您可以在 ONLYOFFICE 表单库免费获取该模板&#xff0c;有白色和紫色两种背景设计。 如何在网站…

uniapp中出现图片过小会与盒子偏离

结论&#xff1a;在image的父盒子中加上display: flex&#xff0c;原因不清楚 出问题的代码和图片如下&#xff1a; <template><view style" background-color: greenyellow; height: 10rpx;width: 10rpx;"><image :src"imgSrc.seatnull" …

UCOS-III 任务调度锁定/解锁接口OSSchedLock/Unlock详解

在实时操作系统中&#xff0c;任务调度是系统实现多任务并发执行的核心机制。但在某些场景下&#xff0c;我们需要临时关闭任务调度&#xff0c;以确保某段代码在执行过程中不被打断。下面将详细介绍这两个接口的应用场景及实现原理。 1. 关闭调度的应用场景 关闭任务调度的主要…

Windows环境下部署本地大模型教程

自ChatGPT在2022年爆发式出圈以来&#xff0c;大模型对人类世界产生了重大影响&#xff0c;无论是在生产、工作、写作方面还是自动驾驶领域&#xff0c;大模型发挥了非常重要的作用。 现各大厂&#xff0c;无论是国内大厂还是国外大厂&#xff0c;都纷纷推出了自己的对话大模型…

服务暴露 traefik

一。traefik 部署 前置资源 还是那个网站&#xff0c;这里复制 entryPoints&#xff0c;进入traefik的大门 可选在哪台机器上部署 traefik 部署 用 Daemonset 的方式是为了&#xff0c;加机器到集群后&#xff0c;能自动部署traefik 到目标机器 注意 8084端口 必须加…

【JVM基础06】——组成-直接内存详解

目录 1- 引言&#xff1a;直接内存概述1-1 直接内存是什么&#xff1f;直接内存的定义(What)1-2 为什么用直接内存&#xff1f;Java程序对直接内存的使用 (Why) 2- ⭐核心&#xff1a;详解直接内存(How)2-1 文件拷贝案例介绍对比常规 IO(BIO) 和 NIO常规 IO 的操作流程NIO 的操…

C++ - char*、const char*、char[]、string

const char* const char* 用来定义字符串常量。 char[ ] char型的字符数组是一种定长的数组&#xff0c;存储指定长度的字符序列&#xff0c;数组中的每个元素都是一个char类型的变量&#xff0c;如&#xff1a; char arr[] {h, a, l, l, o, \0}; char c arr[0]; // 访问…

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…

[Vulnhub] Raven2 PHPMailer-RCE+MSQP:Mysql权限提升

信息收集 IP AddressOpening Ports192.168.101.160TCP:22,80,111,46606 $ nmap -p- 192.168.101.160 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5deb8u4 (protocol 2.0) | ssh-hostkey: | 1024 26:81:c1:f…

拉提查合创5步玩转git工具协作代码开发

1 工具使用场景 开发团队使用git版本管理工具&#xff0c;进行协作代码开发过程中&#xff0c;最常用的场景为&#xff1a; &#xff08;1&#xff09;拉取代码 将git远端仓库最新代码拉取到本地。 &#xff08;2&#xff09;提交代码 将本地新增修改的代码提交至git远端仓库中…

Spring Cloud微服务项目统一封装数据响应体

在微服务架构下&#xff0c;处理服务之间的通信和数据一致性是一个重要的挑战。为了提高开发效率、保证数据的一致性及简化前端开发&#xff0c;统一封装数据响应体是一种非常有效的实践。本文博主将介绍如何在 Spring Cloud 微服务项目中统一封装数据响应体&#xff0c;并分享…