当前位置: 首页 > news >正文

3.Nginx+Tomcat负载均衡和动静分离群集

文章目录

  • Nginx+Tomcat负载均衡和动静分离群集
    • Nginx作用
    • 实验
      • 七层反向代理nginx动静分离
      • 四层反向代理负载均衡

Nginx+Tomcat负载均衡和动静分离群集

  • Nginx是-款非常优秀的HTTP服务器软件
    • 支持高达50 000个并发连接数的响应
    • 拥有强大的静态资源处理能力
    • 运行稳定
    • 内存、CPU等系统资源消耗非常低

Nginx作用

  • 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

  • 正向代理:代理的是客户端,安装在客户端本机上

    • 正向代理类似一个跳板机,代理访问外部资源。
    • 正向代理的用途:
      1. 访问原来无法访问的资源,如google
      2. 可以做缓存,加速访问资源
      3. 对客户端访问授权,上网进行认证
      4. 代理记录用户访问记录(上网行为管理),也可以对外网隐藏用户信息。
        【从外网的角度,只有代理服务器获取资源的时候有一次记录,当代理告服务器不告诉网站时,外网就不知道这个请求的用户信息】
  • 反向代理:代理的是服务端,

  • 让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名),并且让服务器更好的部署上线

    • 客户端是无感知代理服务器的存在的,访问者者并不知道自己访问的是一个代理。
    • 因为客户端不需要任何配置就可以访问。
##反向代理主要参数upstream   服务池名{}       ##配置后端服务器池,以提供响应数据
proxy_pass   http://服务池名   ##配置将访问请求转发给后端服务器池的服务器处理

动静分离

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1lQGjJb-1686389663981)(E:\Typora\images\image-20230610144348121.png)]

并发量:以10分钟有5000万用户平均每人访问2次为例,并发量为每秒(5000w*2)/(60*10)=16.7万,再double下,就说每秒25万并发量吞吐量可以理解成带宽流量,以每个请求0.5KB大小,并发每秒25万,0.5/1024MB*250000=122MB*8bit=977Mbps

实验

七层反向代理nginx动静分离

名称IP
tomcat服务器1192.168.242.66:8080
tomcat服务器2192.168.242.67:8080
nginx服务器192.168.242.68
##在tomcat服务器中创建动态页面cd /usr/local/tomcat/webapps/
mkdir test
cd test/vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>      #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1");%>
</body>
</html>
##nginx服务器设置systemctl disable --now firewalld
setenforce 0##yum安装nginx
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bakvim nginx.repo[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1yum clean all && yum makecache
yum -y install nginx
cd /etc/nginx/conf.d/
vim default.conf##定义后端服务器组的名称和节点配置
upstream tomcat_server {server 192.168.242.66:8080 weight=1;server 192.168.242.67:8080 weight=1;
}在server中配置
location ~* .*\.jsp$ {proxy_pass http://tomcat_server;#设置后端的Web服务器可以获取远程客户端的真实IPproxy_set_header HOST $host;##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_passproxy_set_header X-Real-IP $remote_addr;##把$remote_addr赋值给X-Real-IP,来获取源IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来}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;
}
##创建静态界面
vim index.html<html><body><hi>静态界面1</hi></body>
</html>
##验证实现访问 nginx 服务器地址    http://192.168.242.68/index.jsp

四层反向代理负载均衡

名称IP
tomcat服务器1192.168.242.66:8080
tomcat服务器2192.168.242.67:8080
七层nginx服务器1192.168.242.68
七层nginx服务器2192.168.242.69
四次代理nginx服务器192.168.242.70
##在nginx源码编译安装时,加载模块./configure --with-streamvim /usr/local/nginx/conf/nginx.conf和http同等级:所以一般只在http上面一段设置
stream {upstream nginx_server {server 192.168.242.68:80 weight=1;server 192.168.242.69:80 weight=1;}server {listen 80;nginx_server;}
}http {server {listen 8080;
......
测试静态页面效果
浏览器访问 http://192.168.242.68/test/index.html测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.58.68/test/index.jsp

四层反向代理:基于IP+PORT实现的代理转发

四层反向代理:基于http、https、mail等七层应用协议实现的代理转发

Nginx 负载均衡模式:

  • rr 轮询 负载均衡模式:
    每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。
  • 加权轮询:
    weight值越大,被分配到的访间请求概率越高,主要用于后端服务器性能不均匀的情况。
  • least_conn 最少连接:
    优先将客户端请求调度到当前连接最少的服务器。
  • ip_hash 负载均衡模式:
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。
  • fair(第三方)负载均衡模式:
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  • url_hash(第三方)负载均衡模式:
    基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
    共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。
  • fair(第三方)负载均衡模式:
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  • url_hash(第三方)负载均衡模式:
    基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
http://www.lryc.cn/news/92646.html

相关文章:

  • 数据结构与算法之树结构
  • 【python】 用来将对象持久化的 pickle 模块
  • 【博客654】prometheus配置抓取保护以防止压力过载
  • Backtrader官方中文文档:第十三章Observers观察者
  • 算法leetcode|54. 螺旋矩阵(rust重拳出击)
  • 单容水箱建模(自衡单容水箱+无自衡单容水箱)
  • 分享Python7个爬虫小案例(附源码)
  • 我用ChatGPT写2023高考语文作文(一):全国甲卷
  • c++ modbusTCP
  • linux(信号结尾)
  • 【漏洞修复】node-exporter被检测出来pprof调试信息泄露漏洞
  • 在linux 上安装 NFS服务器软件
  • 网卡中的Ring buffer -- 解决 rx_resource_errors 丢包
  • 六月九号补题日记:Codeforces Round 877 (Div. 2)
  • python基础选择题,高中适用
  • Linux 面试题-(腾讯,百度,美团,滴滴)
  • DDD--战略设计步骤
  • Web Scoket简述
  • “Docker 技术在企业中的应用及挑战解决方案“
  • vue中开发包、生产包、全局包的区别以及安装语法
  • list的模拟实现
  • ChatGLM简介和SSE聊天接口测试效果
  • darknet yolo标注、训练详细说明
  • chatgpt赋能python:Python如何产生随机整数?
  • 大话Stable-Diffusion-Webui-客制化主题(四)
  • Excel函数VLOOKUP常用方法
  • systemV的工作原理+原理代码
  • Kubeflow--TFJob实现机制学习
  • 百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
  • CKA 01_docker部署Kubernetes 部署docker 使用kubeadm引导集群 安装Pod网络