nginx实现负载均衡load balance
目录
- nginx实现负载均衡load balance
- 相关算法
- 负载均衡https的访问
- 后端的real server是否知道真正访问的用户的IP地址
- 健康检查
- 提升负载均衡的并发数量
- 七层负载均衡和四层负载均衡
- 七层负载均衡
- 四层负载均衡
- 四层和七层的区别
- 502错误
nginx实现负载均衡load balance
准备:3台服务器,一台做负载均衡器,另外两台做web服务器,建议编译安装nginx
| 服务器 | IP |
|---|---|
| LB | 192.168.232.161 |
| web1 | 192.168.232.162 |
| web2 | 192.168.232.163 |
1、修改LB的配置文件
用于cpu的核心是两个,所以可以修改配置文件中的进程数为2,并将应该worker的并发数修改为2048
worker_processes 2;events {worker_connections 2048;
}
2、负载均衡器的配置
http {upstream chenapp1 {server 192.168.232.162;server 192.168.232.163;}server {listen 80;server_name localhost;location / {proxy_pass http://chenapp1;}
}
修改web1和web2的页面显示,然后在浏览器中输入LB服务器的网址,反复刷新可以看见不同的页面。
这个时候web服务器的日志access.log中记录的IP就是负载均衡服务器的 IP
相关算法
upstream chenapp1 {ip_hash; # 用户访问了某一个服务器的页面,就会一直访问那个页面least_conn; # 最小链接数(轮询),每次刷新会将web服务器的页面轮流展示# 加上权重值,权重值大的那个就会访问的更多server 192.168.232.162 weight=5;server 192.168.232.163 weight=2;}
负载均衡https的访问
server {listen 443 ssl;server_name www.sanchuangedu.com;ssl_certificate 8905404_sanchuangedu.cn.pem ; # pem文件和key文件都需要下载证书ssl_certificate_key 8905404_sanchuangedu.cn.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on; location / { #root html;#index index.html index.htm;proxy_pass http://chenapp1;} }
后端的real server是否知道真正访问的用户的IP地址
web服务器的日志access.log中记录的IP是负载均衡服务器的 IP,不知道用户的IP地址
解决方法
-
后端real server不使用realip模块
-
在负载均衡器上修改http请求报头部字段,添加一个X-Real-IP字段
server {listen 80;server_name localhost;location / {proxy_pass http://chenapp1;proxy_set_header X-Real-IP $remote_addr;} -
在后端real server上使用这个X-Real-IP字段
http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $http_x_real_ip - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;现在就可以在
/usr/local/scnginx99/logs/access.log文件中看到client的IP了
-
-
后端real server使用realip模块
前提条件:在后端backend server上编译安装nginx的时候,
--with http_realip_module开启相关功能
backend server是如何知道前端client的IP地址的
负载均衡器在应用层把要发送给bakend server的http协议添加新的IP存储字段x_real_ip
健康检查
查看web服务器是否还存活
-
主动检查。负载均衡服务器主动检查web服务器,需要安装nginx plus
-
被动检查。当client发请求给LB,然后LB再去转发请求给后端的real server,这个时候如果后端的服务器出现问题,LB就发现了。
upstream backend {server 192.168.232.162server 192.168.232.163 max_files=3 fail_timeout=30s }fial_timeout:设置必须多次尝试失败才能将服务器标记为不可用时间,以及将服务器标记为不可用时间(默认10s)
max_fails:设置在fail_timeout服务器标记为不可用的时间内必须发生的失败尝试次数(默认1次)
backup:备份当其他的服务器都不提供服务的时候,再启用这台服务器提供服务
slow_start:慢启动
down:将上游的服务器标识为不可用,不会再发送任何请求给这台服务器
提升负载均衡的并发数量
-
增加服务器数量
-
参数优化
worker_processes 2; worker_connections 2048;在命令行允许一个进程可以打开的连接数量 ulimit -n 1000000
七层负载均衡和四层负载均衡
七层负载均衡
nginx是根据http协议来做负载均衡的,http协议工作在应用层,是web服务的一部分,按照OSI七层网络模型来封装和解封装,属于第七层
四层负载均衡
在传输层完成所有的工作,根据端口号来区分不同的业务
实现四层负载均衡:
修改LB的nginx.conf
stream {upstream dns_servers {least_conn;server 192.168.136.130:53;server 192.168.136.131:53;server 192.168.136.132:53;}upstream web_servers {server 192.168.232.162:80;server 192.168.232.163:80;}server {listen 53udp;proxy_pass dns_servers;}server {listen 80;procy_pass web_servers;}
}
events {worker_connections 1024;
}
四层和七层的区别
七层负载均衡:
1、基于应用层
2、支持HTTP协议
3、效率低
4、可以实施应用层安全策略
四层负载均衡:
1、基于传输层,关注IP地址和端口号
2、支持http、MySQL、DNS、ftp等协议
3、效率高
4、无法执行高级内容处理,如HTTP请求的URL路由或请求头修改
502错误
原因:所有的backend server都挂掉了
相关文章:
nginx实现负载均衡load balance
目录 nginx实现负载均衡load balance相关算法负载均衡https的访问后端的real server是否知道真正访问的用户的IP地址健康检查提升负载均衡的并发数量七层负载均衡和四层负载均衡七层负载均衡四层负载均衡四层和七层的区别502错误 nginx实现负载均衡load balance 准备ÿ…...
淘宝订单接口:连接消费者与商家的桥梁
当我们谈论淘宝订单接口时,我们谈论的是淘宝网为卖家和买家提供的一个用于处理订单的核心系统。通过这个接口,卖家可以接收订单、处理订单状态,并更新买家和平台的状态信息;买家则可以实时追踪自己的订单状态,更好地掌…...
数据结构-第一期——数组(Python)
目录 00、前言: 01、一维数组 一维数组的定义和初始化 一维变长数组 一维正向遍历 一维反向遍历 一维数组的区间操作 竞赛小技巧:不用从a[0]开始,从a[1]开始 蓝桥杯真题练习1 读入一维数组 例题一 例题二 例题三 实战训…...
八 动手学深度学习v2 ——卷积神经网络之卷积+填充步幅+池化+LeNet
目录 1. 图像卷积总结2. 填充和步幅 padding和stride3. 多输入多输出通道4. 池化层5. LeNet 1. 图像卷积总结 二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。核矩阵和偏移是可学习的参…...
SparkCore
第1章 RDD概述 1.1 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD类比工厂生产。 …...
配置 Windows 系统环境变量
直接按键盘上面的 WINS 打开 Windows 搜索 搜索“编辑系统环境变量” 也可以右键此电脑->属性->高级系统设置打开相同的界面 点击环境变量 一般添加就是添加在框出的 Path 里面,双击可以看到现有的环境变量并进行编辑 例如我在博客中写把 Java 的 jdk 解压好…...
【计算机视觉】图片文件格式的讲解
文章目录 一、图片的压缩二、计算机表示颜色三、JPG和PNG3.1 JPG3.2 PNG 一、图片的压缩 图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。 有损压缩。指在压缩文件大小的过程中,损失了一部分图片的信…...
2023最全的性能测试种类介绍,这6个种类特别重要!
系统的性能是一个很大的概念,覆盖面非常广泛,包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等,性能测试就是描述测试对象与性能相关的特征并对其进行评价而实施的一类测试。 性能测试是一个统称,它其实包…...
代码随想录算法训练营19期第43天
1049. 最后一块石头的重量 II 视频讲解:动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili 代码随想录 初步思路:动态规划。 总结:套用01背包 dp[j…...
微信小程序wx.previewImage实现图片预览
在微信小程序中,wx.previewImage函数用于预览图片,可以将一组图片以轮播的方式展示给用户,并支持用户手势操作进行切换。 使用wx.previewImage函数需要传入一个参数对象,该对象包含以下属性: current: String&#x…...
Java实现Modbus读写数据
背景 由于当时项目周期赶,引入了一个PLC4X组件,上手快。接下来就是使用这个组件遇到的一些问题: 关闭连接NioEventLoop没有释放导致oom设计思想是一个设备一个连接,而不是一个网关一个连接连接断开后客户端无从感知 前两个问题解…...
C++11新特性⑤ | 仿函数与lambda表达式
目录 1、引言 2、仿函数 3、lambda表达式 3.1、lambda表达式的一般形式 3.2、返回类型说明 3.3、捕获列表的规则 3.4、可以捕获哪些变量 3.5、lambda表达式给编程带来的便利 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&a…...
解决websocket不定时出现1005错误
后台抛出异常如下: Operator called default onErrorDropped reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalArgumentException: WebSocket close status code does NOT comply with RFC-6455: 1005 Caused by: java.lang.IllegalArgume…...
文章内容生成随机图像,并将这些图像上链
一、需求背景 在当前的互联网时代,信息越来越快速地传播,一篇好的文章不仅需要有吸引人的文字内容,还需要有精美的配图。但是,对于某些只有文字,而没有图片的文章,我们可以使用程序去生成随机的图片来作为文章的配图。 本文将详细介绍如何使用Java语言实现文章内容生成…...
l8-d9 UDP通信实现
一、函数接口扩展与UDP通信实现流程 1.write/read到send/recv 函数原型: ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags); 前三个参数同read/write一样; ssize_t rea…...
MongoDB复杂聚合查询与java中MongoTemplate的api对应
MongoDB聚合json脚本 db.getCollection("202303_refund").aggregate([{"$match": {"courseType": "常规班课","teacherRefundReasonCheck": true,"teacherId": {"$in": [7544]},"createTime"…...
WireShark抓包工具的安装
1.下载安装包 在官网或者电脑应用商城都可以下载 2.安装 打开安装包,点击next 点击next 选择UI界面,两种都装上 根据习惯选择 选择安装位置点击安装 开始安装安装成功...
审计智能合约的成本是多少?如何审计智能合约?
审计智能合约的成本是多少?如何审计智能合约? 智能合约安全审计在去中心化金融 (DeFi) 生态系统中非常普遍。如果您投资了一个区块链项目,您的决定可能部分基于智能合约代码审查的结果。 虽然大多数人都了解审计对网络安全的重要性ÿ…...
9.7 校招 内推 面经
绿泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招 | Momenta 2024校招火热进行中!新增招聘岗位(内推) 校招 | Momenta 2024校招火热进行中!新增招聘岗位(内推) 2、…...
【网络编程】IO多路复用
IO多路复用是一种高效的I/O处理方式,它允许单个进程能够同时监视多个文件描述符(sockets、文件等),并在其中任何一个文件描述符准备好进行I/O操作时进行处理。它的核心在于使用少量的线程或进程来管理多个I/O操作,以提…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
