LVS+Nginx高可用集群---Nginx进阶与实战

1.Nginx中解决跨域问题

两个站点的域名不一样,就会有一个跨域问题。

跨域问题:了解同源策略:协议,域名,端口号都相同,只要有一个不相同那么就是非同源。
CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问就会遇到跨域问题。

跨域指的是浏览器不能执行其它网站的脚本。是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安全限制。
在这里插入图片描述
前端有跨域吗?有。请求资源跨域就有。记住同源策略问题。

Nginx跨域配置:
#允许跨域请求的域,*代表所有
add_header ‘Access-Control-Allow-Origin’ *;
#允许带上cookie请求
add_header ‘Access-Control-Allow-Credentials’ ‘true’;
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header ‘Access-Control-Allow-Methods’ *;
#允许请求的header
add_header ‘Access-Control-Allow-Headers’ *;
在这里插入图片描述

2.nginx中配置静态资源防盗链

Nginx配置信息:

#对源站点验证
valid_referers *.nly.com; 
#非法引入会进入下方判断
if ($invalid_referer) {return 404;
} 

解析:匹配上面的验证规则(域名为.nly.com)
匹配的话会继续往下加载location配置。
没有匹配的话,就会返回404

3.nginx的模块化设计解析

在这里插入图片描述
Nginx core:实现了底层的通信协议。也为其他的一些模块和nginx的进程内容提供一个运行时的环境(类似于JVM),协调其他模块。
Event module:epoll.操作操作系统层面的事件处理机制。
Phase handler:处理客户端一些请求,以及一些相应内容的响应,
Output filter:过滤器。过滤内容返回浏览器。类比gzip(压缩模块)
Upstream:反向代理模块
Load balancer:负载均衡器。实现集群,实现负载均衡的配置。
Extend module:第三方模块。
nginx-1.22.0安装包目录下的内容。
在这里插入图片描述

4.四层,七层DNS负载均衡

四层负载均衡:主要是基于ip和端口的负载均衡。原理是转发请求到后台的服务器。它是负责转发,并且会记录连接是由那个服务器处理的,后续这个连接的请求会由同一台去处理。 (相当于常连接)
F5硬件负载均衡:成本高,稳定不错。商业级别的负载均衡。
LVS四层负载均衡:linux内核负载均衡。主要是用来转发请求的。
Hapooxy四层负载均衡:灵活性高。
Nginx四层负载均衡。

七层负载均衡:是基于url和ip的负载均衡。基于应用层,针对于http协议的负载均衡。
Nginx七层负载均衡:
Haproxy七层负载均衡:灵活性高
Apache七层负载均衡:并发不如nginx。
四层多用LVS,七层多用nginx.
七层主要是针对http协议,适用于web服务器,比如tomcat,Apache,nginx。七层会处理请求,比如:压缩css,js等
四层主要是针对tcp/udp协议。主要运用于转发请求而不是处理。
DNS地域负载均衡:
在这里插入图片描述
在这里插入图片描述

5.JMet测试单节点与集群的并发异常率

Jmeter工具:测试网站性能,apache.

使用jmeter工具。注意点:如何使用jmeter?配置环境变量。安装时候需要修改哪些变量(注册表的信息,添加注册表对应位置的权限,创造对应的文件,然后修改了#server.rmi.ssl.disable=false 去掉注释 修改末尾的false–>true Jmeter)

测试单个tomcat运行:(用户即线程)
1.50个用户,100次请求–无异常
2.200个用户,100次请求–异常率高达18.51%。

集群测试:
测试结果对比:
在这里插入图片描述
区别在于平均值,异常率,以及吞吐量。
正常情况下,公司异常率有临界点。超过临界点,并发就认为已经封顶了。然后就需要做一些处理,例如,硬件配置的升级,扩容。

6.负载均衡

负载均衡值轮巡
Nginx访问多台服务器时,采用的是轮询的方式。
负载均衡之权重:
根据机械性能配置权重。数值越小,访问的频率越低。
在这里插入图片描述

7.upstream 指令

upstream 指令参数值-maxconns
在这里插入图片描述
max_conns:限制每台server的连接数,用于保护避免过载,可起到限流的作用
配置模板:设置为1,避免使用到共享内存

worker进程设置1个,便于测试观察成功的连接数

worker_processes  1;upstream tomcats {server 192.168.1.173:8080 max_conns=2;server 192.168.1.174:8080 max_conns=2;server 192.168.1.175:8080 max_conns=2;
}

测试:jmeter配置间隔时间为0.
当配置的连接数达到最大连接数(3*2=6),就无法处理请求了。

slow_start:将不健康的服务器变成健康的服务器
在这里插入图片描述
配置参考如下:
upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60s;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=2;server 192.168.1.175:8080 weight=2;

}
down:用于标记服务结点不可用
配置模板:
upstream tomcats {
server 192.168.1.173:8080 down;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;

}

Backup:表示当前服务器节点是备用机,只有在其他服务器都宕机以后,自己才会加入集群中,被用户访问到。
配置模板:
upstream tomcats {
server 192.168.1.173:8080 backup;

server 192.168.1.190:8080;

    server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;

}

max_fails:表示失败几次,则标记server已经宕机,剔除上游服务。
fail_timeout:表示失败的重试时间。
在这里插入图片描述
在这里插入图片描述
max_fails=2 fail_timeout=15s
则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。

8.使用keepalived提高吞吐量

配置信息:
Keepalive:表示的是要保持的连接数(将一些链接作为常链接)
keepalived: 设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header 信息
官方模版:
在这里插入图片描述
自定义模板:
在这里插入图片描述
提升了吞吐量,以及接受跟传输的量(kb)

9.负载均衡原理-ip_hash;url hash 与least_conn
Ip_hash:可以保证用户访问可以请求到上游服务中固定的服务器,前提是用户ip没有发生改变(本质上是根据用户ip hash了以后,根据hash值再分配到一台特定的服务器里)

hash算法:
在这里插入图片描述
配置模板:

upstream tomcats {ip_hash;server 192.168.1.173:8080;server 192.168.1.174:8080 down;server 192.168.1.175:8080;
}

具体算法:
可以在/home/software/nginx-1.22.0/src/http/modules目录下看到算法。

当需要临时将一台服务器进行移除时,需要标记该台服务器为down.不能直接移除
当使用hash算法时,算法中使用的是ip地址的前三部分。举例:192.168.56.102 hash算法中使用的是192.168.56来进行计算的
一致性hash算法
hash算法带来的问题:后台服务器的节点的增多或者减少,缓存等问题可以会降低效率

在这里插入图片描述
一致性hash算法的高明之处在于:保证绝大多数的请求能访问到原来的计算机节点,仅仅只有一部分的请求会发生变化
(降低节点宕机或者新增节点时,对于用户的影响或者可以说缓存的影响)
负载均衡之url_hash:
原理:hash处理url,然后求模,计算index.(根据index去访问)
在这里插入图片描述
配置模板:
upstream tomcats {
# url hash
hash $request_uri;
# 最少连接数
# least_conn

server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;

}
server {
listen 80;
server_name www.tomcats.com;

location / {proxy_pass  http://tomcats;
}

}
Url:使用www.nly.com/nginx-url-hash/account跟使用www.nly.com/nginx-url-hash/account/的结果不同
负载均衡:Least_conn:根据哪台服务器的连接数最少就请求哪一台。

10.Nginx 控制浏览器缓存

缓存:
在这里插入图片描述
浏览器缓存加速单个用户的访问。Nginx缓存,优化在内网的传输(提升所有访问到nginx端的用户;提升访问上游(upstream)服务器的速度;用户访问仍然会产生流量)。(内网请求到不同的服务器,会有带宽的损耗,所以会有请求以及响应的时间)
浏览器缓存,当status显示为304时,表示的是缓存.Expire限制的是过期时间。
通过设置expire定义过期时间。看cache-control选项:
在这里插入图片描述
expire设置模板:

location /files {alias /home/imooc;# expires 10s;设置过期时间# expires @22h30m;设置持续多久# expires -1h;距离现在时间的前一个小时已经失效了# expires epoch;表示no-cache# expires off;默认nginx中的expire处于关闭状态。浏览器端还是有默认的机制的expires max;最大时间,即永不过期
}

11.Nginx 反向代理缓存

配置模板:

# proxy_cache_path 设置缓存目录
#       keys_zone 设置共享内存以及占用空间大小
#       max_size 设置缓存大小
#       inactive 超过此时间则被清理
#       use_temp_path 临时目录,使用后会影响nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;location / {proxy_pass  http://tomcats;# 启用缓存,和keys_zone一致proxy_cache mycache;# 针对200304状态码缓存时间为8小时proxy_cache_valid   200 304 8h;
}

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

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

相关文章

挑战杯 opencv python 深度学习垃圾图像分类系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 opencv python 深度学习垃圾分类系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 这是一个较为新颖的竞…

昇思25天学习打卡营第13天|应用实践之ResNet50迁移学习

基本介绍 今日的应用实践的模型是计算机实践领域中十分出名的模型----ResNet模型。ResNet是一种残差网络结构,它通过引入“残差学习”的概念来解决随着网络深度增加时训练困难的问题,从而能够训练更深的网络结构。现很多网络极深的模型或多或少都受此影响…

数据链路层(超详细)

引言 数据链路层是计算机网络协议栈中的第二层,位于物理层之上,负责在相邻节点之间的可靠数据传输。数据链路层使用的信道主要有两种类型:点对点信道和广播信道。点对点信道是指一对一的通信方式,而广播信道则是一对多的通信方式…

风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

grafana数据展示

目录 一、安装步骤 二、如何添加喜欢的界面 三、自动添加注册客户端主机 一、安装步骤 启动成功后 可以查看端口3000是否启动 如果启动了就在浏览器输入IP地址:3000 账号密码默认是admin 然后点击 log in 第一次会让你修改密码 根据自定义密码然后就能登录到界面…

高职物联网实训室

一、高职物联网实训室建设背景 随着《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》的发布,中国正式步入加速数字化转型的新时代。在数字化浪潮中,物联网技术作为连接物理世界与数字世界的桥梁,其重要性日益凸显…

Golang | Leetcode Golang题解之第224题基本计算器

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {ops : []int{1}sign : 1n : len(s)for i : 0; i < n; {switch s[i] {case :icase :sign ops[len(ops)-1]icase -:sign -ops[len(ops)-1]icase (:ops append(ops, sign)icase ):ops ops[:len(o…

2024年有多少程序员转行了?

疫情后大环境下行&#xff0c;各行各业的就业情况都是一言难尽。互联网行业更是极不稳定&#xff0c;频频爆出裁员的消息。大家都说2024年程序员的就业很难&#xff0c;都很焦虑。 在许多人眼里&#xff0c;程序员可能是一群背着电脑、进入高大上写字楼的职业&#xff0c;他们…

Datawhale AI 夏令营 机器学习挑战赛

一、赛事背景 在当今科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的深度和广度渗透到科研领域&#xff0c;特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例&#x…

Hi3861 OpenHarmony嵌入式应用入门--MQTT

MQTT 是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输 协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用&#xff0c;是专为受限设备和低带宽、 高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器…

AutoMQ 生态集成 Kafdrop-ui

Kafdrop [1] 是一个为 Kafka 设计的简洁、直观且功能强大的Web UI 工具。它允许开发者和管理员轻松地查看和管理 Kafka 集群的关键元数据&#xff0c;包括主题、分区、消费者组以及他们的偏移量等。通过提供一个用户友好的界面&#xff0c;Kafdrop 大大简化了 Kafka 集群的监控…

量产工具一一UI系统(四)

目录 前言 一、按钮数据结构抽象 1.ui.h 二、按键处理 1.button.c 2.disp_manager.c 3.disp_manager.h 三、单元测试 1.ui_test.c 2.上机测试 前言 前面我们实现了显示系统框架&#xff0c;输入系统框架和文字系统框架&#xff0c;链接&#xff1a; 量产工具一一显…

集控中心操作台材质选择如何选择

作为集控中心的核心组成部分&#xff0c;操作台不仅承载着各种设备和工具&#xff0c;更是工作人员进行监控、操作和管理的重要平台。因此&#xff0c;选择适合的集控中心操作台材质显得尤为重要。 一、材质选择的考量因素 在选择集控中心操作台材质时&#xff0c;我们需要综合…

SpringCloud跨微服务的远程调用,如何发起网络请求,RestTemplate

在我们的业务流程之中不一定都会是自己模块查询自己模块的信息&#xff0c;有些时候就需要去结合其他模块的信息来进行一些查询完成相应的业务流程&#xff0c;但是在SpringCloud每个模块都相对独立&#xff0c;数据库也有数据隔离。所以当我们需要其他微服务模块的信息的时候&…

前端javascript中的排序算法之选择排序

选择排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 是一种原址排序法&#xff1b; 将数组分为两个区间&#xff1a;左侧为已排序区间&#xff0c;右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素&#xff0c;放到已排序区间的末尾&#xff0c;从…

小米采取措施禁止国行版设备安装国际版系统 刷机后将报错无法进入系统

据知名官改版系统 Xiaomi.EU 测试者 Kacper Skrzypek 发布的消息&#xff0c;小米目前已经在开机引导中新增区域检测机制&#xff0c;该机制将识别硬件所属的市场版本&#xff0c;例如中国大陆市场销售的小米即将在安装国际版系统后将无法正常启动。 测试显示该检测机制是在开…

1.DDR3 SO-DIMM 内存条硬件总结

最近在使用fpga读写DDR3&#xff0c;板子上的DDR3有两种形式与fpga相连&#xff0c;一种是直接用ddr3内存颗粒&#xff0c;另一种是通过内存条的形式与fpga相连。这里我们正好记录下和ddr3相关的知识&#xff0c;先从DDR3 SO-DIMM 内存条开始。 1.先看内存条的版本 从JEDEC下载…

《算法笔记》总结No.5——递归

一.分而治之 将原问题划分为若干个规模较小而结构与原问题相同或相似的子问题&#xff0c;然后分别解决这些子问题&#xff0c;最后合并子问题的解&#xff0c;即可得到原问题的解&#xff0c;步骤抽象如下&#xff1a; 分解&#xff1a;将原问题分解为若干子问题解决&#x…

用VLM训练实时计算机视觉模型

经过数十亿个参数训练的 AI 模型非常强大&#xff0c;但并不总是适合实时使用。但是&#xff0c;它们可以通过自动监督快速专用模型的标注来减少人力投入。 ‍ 如果你曾经构建过计算机视觉模型&#xff0c;就就会知道监督需要大量工作——人类花时间&#xff08;数小时或数天&a…