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

nginx-负载均衡

nginx-负载均衡

  • 前言
  • 一、负载均衡的分类
  • 二、配置负载均衡
  • 三、负载均衡算法
    • 1. 轮询
    • 2. 加权轮询
    • 3. 最小连接数
    • 4. ip hash
    • 5. 基于url的hash算法
    • 6. least_time
    • 7. random
  • 四、服务器状态配置
    • 1. bakcup配置
    • 2. down配置
    • 3. Health checks 健康检查
      • Passive Health Checks
      • Active Health Checks


前言

反向代理:nginx 作为客户端和后端服务器之间的中间层,客户端直接访问 nginx,Nginx 再将请求转发给后端服务器(客户端不知道实际处理请求的服务器)。
负载均衡池:由多台后端服务器组成的集群,nginx 按规则将请求分配到这些服务器

nginx通过将客户端请求分发到后端多台服务器,将流量 “均匀分配” 到多台服务器,避免单台服务器过载,实现流量均衡、提高系统可用性和扩展性


一、负载均衡的分类

三层负载均衡 在路由器上做负载均衡,到达某个ip地址有多条路由可以走,一般在机房的路由器上实现。 路由器里配置ospf协议支持,等价路由

四层负载均衡 传输层实现,根据ip地址和端口号做转发,支持tcp和udp协议(nginx支持)

七层负载均衡 应用层实现,基于http协议实现 (nginx支持)

从解封装和建立连接角度出发,3层效率 --》4层 --》7层


二、配置负载均衡

在负载均衡器上加载upstream配置

# http块中添加
http {upstream myweb1 {#ip_hash;#least_conn;#server 192.168.168.136 weight=3;server 192.168.168.136;	server 192.168.168.137;}server {# server块中添加location / {#root   html;#index  index.html index.htm;# 转发给负载均衡器proxy_pass http://myweb1;}}
}

验证:刷新nginx配置后到浏览器中访问会有轮转效果


三、负载均衡算法

nginx商业网站:HTTP Load Balancing | NGINX Documentation
nginx开源网站:Using nginx as HTTP load balancer

Load balancing methods
http块中添加

1. 轮询

round-robin :默认 —>简称 rr

upstream myweb1 {server 192.168.168.136;server 192.168.168.137;
}

2. 加权轮询

默认权重值为weight=1,数值越大获得的流量越多

upstream myweb1 {server 192.168.168.136 weight=3;server 192.168.168.137;
}

3. 最小连接数

least-connected: 基于7层的http协议或者4层,先3次握手,建立连接

upstream myweb1 {least_conn;server 192.168.168.136;server 192.168.168.137;
}

4. ip hash

基于客户机的ip地址,计算一个hash值,如果hash值一样就一直转发到固定的后端的web服务器。 适合于需要保持session会话信息持久性的场景,购物网站等

upstream myweb1 {ip_hash;server 192.168.168.136;server 192.168.168.137;
}

5. 基于url的hash算法

根据请求 URL 的哈希值分配服务器(同一 URL 始终由同一服务器处理)。适合缓存静态资源(需安装第三方模块 ngx_http_upstream_hash_module)

upstream backend {hash $request_uri consistent;server backend1.example.com;server backend2.example.com;
}

6. least_time

在这里插入图片描述

7. random

在这里插入图片描述


四、服务器状态配置

1. bakcup配置

http {upstream backend {server backend1.example.com weight=5;server backend2.example.com;server 192.0.0.1 backup;  # 处于备份状态,前面的服务器挂了,不能用了,才能获得流量。}
}

2. down配置

upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.com down;  # 直接表示这台服务器挂了,不分配流量
}

3. Health checks 健康检查

问题:
1.谁检查谁?
负载均衡器检查后端的真实的web服务器是否在运行网站
2.检查什么?
检查后端的web服务器的网站是否运行

3.如何进行监控检查的呢?

Passive Health Checks

被动检测 --》默认支持
在这里插入图片描述

LB向web服务器发起请求报文,但是web服务器没有响应,因此LB才知道web服务器出问题。

fail_timeout 设置必须多次尝试失败才能将服务器标记为不可用的时间,以及将服务器标记为不可用的时间(默认为10秒)
max_fails 设置在fail_timeout服务器标记为不可用的时间内必须发生的失败尝试次数(默认为1次尝试)
backup 备份:当其他的服务器都不提供服务的时候,再启用这台服务器提供服务 --》备胎
slow_start 慢启动 down 将上游的服务器标识为不可用,不会再发送任何的请求给这台服务器

在这里插入图片描述

Active Health Checks

主动检查:
LB服务器不管有没有web请求,定期去检查web服务器里的网站是否运行,主动去了解情况。

NGINX Plus 是nginx的商业插件(软件),需要购买的

在这里插入图片描述

http://www.dtcms.com/a/351438.html

相关文章:

  • GeoServer与GISBox:地理数据服务器对比解析
  • 【STM32】CubeMX(十三):RT-THREAD
  • 脑电分析——学习笔记
  • 常用测试有哪些
  • Spring Boot 集成 Docker 构建与发版完整指南
  • [docker]Failed to initialize NVML: Unknown Error
  • 【C++】用哈希表封装实现unordered_set和unordered_map
  • 深入剖析悲观锁、乐观锁与分布式锁
  • 如何才能使RISC V架构成为机器学习的核心
  • U-Net图像语义分割中梯度下降的直观解释
  • 动态规划:为什么暴力算法会有重复子问题
  • 深度学习自动驾驶BEV【专业名词解释汇总】
  • VS中创建Linux项目
  • Tomcat的VM options
  • 我在TSX开发中的实用指南:从基础到实战
  • Java大厂面试实战:从Spring Boot到微服务架构的全链路技术解析
  • swift 开发抠图工具实现思路,与代码详解
  • Java全栈开发面试实录:从基础到实战的深度解析
  • Nginx如何实现反向代理和负载均衡器等功能的
  • 要闻集锦|阿里官网调整为四大业务板块;华为云重组多个事业部涉及上千人;群核科技在港交所更新招股书
  • Swift高阶函数-contains、allSatisfy、reversed、lexicographicallyPrecedes
  • 【大前端】实现一个前端埋点SDK,并封装成NPM包
  • 如何避免频繁切换npm源
  • Redis相关命令详解及其原理
  • AI在提升阅读效率的同时,如何加强理解深度?
  • 嵌入式(day34) http协议
  • 使用Java对接印度股票市场API开发指南
  • Markdown学习笔记(4)
  • 计算神经科学数学建模编程深度前沿方向研究(上)
  • 新手向:pip安装指南