如何使用nginx实现负载均衡

ops/2024/9/20 1:18:45/ 标签: nginx, java

负载均衡是一种网络技术,用于分散单一服务器的压力,从而提高网站的性能和可用性。Nginx 是一款流行的 Web 服务器和反向代理服务器,可以非常有效地用作负载均衡器。

环境准备

已经安装了 Nginx,并且有以下几台服务器:

  • 前端服务器 (Nginx):负责接收客户端请求,并将请求分发到后端服务器。
  • 后端服务器 (Web 应用):处理实际业务逻辑。

将使用以下配置:

  • 前端 Nginx 服务器 IP 地址:192.168.1.100
  • 后端服务器 IP 地址:
    • 192.168.1.101:8080
    • 192.168.1.102:8080
    • 192.168.1.103:8080

步骤 1: 配置 Nginx

打开 Nginx 的配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 下的一个单独的配置文件中。

基础配置

首先,定义一个 upstream 块来指定后端服务器池:

nginx">upstream backend_servers {server 192.168.1.101:8080;server 192.168.1.102:8080;server 192.168.1.103:8080;
}

接下来,在 server 块中配置负载均衡规则:

nginx">server {listen       80;server_name  example.com;location / {proxy_pass         http://backend_servers;proxy_set_header   Host $host;proxy_set_header   X-Real-IP $remote_addr;proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header   X-Forwarded-Proto $scheme;proxy_redirect     off;}
}

这段配置指定了监听端口、域名以及如何将请求转发到后端服务器。proxy_pass 指令指向了前面定义的 upstream 名称。

高级配置

负载均衡算法

Nginx 支持多种负载均衡算法,包括:

  • 轮询(默认):简单地按顺序将请求分发给后端服务器。
  • 最少连接数:将请求分发给当前连接数最少的服务器。
  • IP 哈希:根据客户端 IP 地址进行哈希,然后分配给特定的后端服务器,以保持会话的一致性。

例如,要使用最少连接数算法,可以在 upstream 块中添加 least_conn

nginx">upstream backend_servers {least_conn;server 192.168.1.101:8080;server 192.168.1.102:8080;server 192.168.1.103:8080;
}
故障转移

可以指定某些服务器作为备用服务器,当主服务器出现问题时,Nginx 会自动将请求发送到备用服务器:

nginx">upstream backend_servers {server 192.168.1.101:8080;server 192.168.1.102:8080;server 192.168.1.103:8080 backup;
}
健康检查

可以配置 Nginx 自动检查后端服务器的状态,以确保不会将请求发送到故障服务器:

nginx">upstream backend_servers {server 192.168.1.101:8080;server 192.168.1.102:8080;server 192.168.1.103:8080 max_fails=3 fail_timeout=30s;
}

这里,如果服务器连续失败 3 次,则在接下来的 30 秒内不再接受任何请求。

步骤 2: 重启 Nginx

保存配置文件后,需要重新加载 Nginx 使新配置生效:

sudo systemctl reload nginx

测试负载均衡

现在可以通过浏览器访问 http://example.com 并观察请求是如何被分发到不同的后端服务器上的。


http://www.ppmy.cn/ops/102515.html

相关文章

如何开启让设备获取到IPv6?

前言 现在许多小伙伴拉的宽带基本上都是光猫进行拨号的。这个就导致很多小伙伴不知道如何让设备获取IPv6。 但好像还有小伙伴分不清光猫拨号和光猫桥接的区别,其实它们的区别就在于让设备直连光猫的网口或者光猫的Wi-Fi,就会出现两种情况: …

浅谈【数据结构】链表之其他形态

目录 1、带头结点的链表 2、创建步骤 3、循环链表 3.1创建循环链表 3.2循环链表的遍历 3.3链表中的闭环 4、静态链表 4.1静态链表初始化 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错,说的就是你,不用再怀疑!&#…

Ant Design Vue修改表格样式

原效果: 修改背景色和字体,包括表头和表体,要分开设置: :deep .ant-table-thead>tr>th {background: rgba(255, 255, 255, 0);//去掉表头背景color: rgb(100, 181, 220);font-weight: bold;border: none;//去掉表头边框}:d…

vue.js的设计与实现(响应系统2)

文章目录 概要分支切换与cleanup嵌套的effect与effect栈避免无限递归循环调度执行小结 概要 接上文,我们已经写出了基础的effect收集,但是还是会有些问题。这一篇,我们就是来解决这些问题的 分支切换与cleanup 首先,我们需要明确…

自然语言处理系列四十五》Elasticsearch搜索引擎》Elasticsearch入门及技术原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列四十五Elasticsearch搜索引擎》Elasticsearch入…

Mysql5.7.40安装步骤

mysql5.7.40数据库部署安装_数据库_weixin_44568463-亚马逊云科技技术品牌专区

使用 ASP.NET Core 与 Entity Framework Core 进行数据库操作

使用 ASP.NET Core 与 Entity Framework Core 进行数据库操作 Entity Framework Core(EF Core)是ASP.NET Core中的一个轻量级ORM框架,提供了以面向对象的方式与数据库进行交互的能力。本文将通过Visual Studio 2022详细介绍如何使用EF Core进…

在Android中的widge组件是什么?

目录 Widget 的特点 创建 Android Widget 的步骤 Widget 的主要功能 常见的 Widget 类型 总结 在 Android 中,Widget(小部件) 是一种特殊的 UI 组件,通常称为 "App Widget"。它是小型的、可以放置在设备主屏幕上的…

【区块链 + 司法存证】印记区块链电子印章 | FISCO BCOS应用案例

电子印章作为传统物理印章的数字化锚定,除了拥有和物理印章一样的法律效力外,还能够有效地为企业增效降 本提质。近年来,随着国家双碳目标的提出以及全球新冠疫情,进一步加速了企业数字化转型的步伐,电子印章 的价值也…

批量在多台Linux机器上安装OpenJDK

上一次我们实践了手动安装OpenJDK的过程,并且完成了用脚本一键安装的试验。但是本质上,我还是每台机器上单独进行操作。那这就产生了一个问题,如果我需要一次性在多台机器上部署安装,需要怎么操作呢。 问题分析 假设我的目的是在…

扁线电机介绍

相比于圆线,扁线因为扁平矩形的特殊性能够让线圈缠绕更加紧密,槽满率由原先的40%提升到70%。 这意味着相同体积下线圈中的导线更多,电流的传导效率更高,能够减少电阻损耗,产生的磁场更强,电机功率也就更大&…

IP地址与SSL证书:保障网络安全的关键

在数字时代,网络安全至关重要,而SSL(安全套接层)证书作为加密用户与服务器之间数据传输的利器,扮演着不可或缺的角色。然而,谈及SSL证书时,一个常见的误区是它们通常与域名绑定,而非…

【前端】理解与使用sessionStorage、localStorage与cookie

深入理解与高效使用 sessionStorage、localStorage 与 cookie 背景 在构建一个多页面的 Vue web 应用时,我面临了一个关键问题:如何有效地管理用户的登录状态。为了减少对服务器的不必要请求,我尝试了全局状态注入的方法,但这种…

【通俗理解】深度学习特征提取——Attention机制的数学原理与应用

【通俗理解】深度学习特征提取——Attention机制的数学原理与应用 关键词提炼 #深度学习 #特征提取 #Attention机制 #CNN #Transformer #关联特征 #MLP #拟合处理 第一节:Attention机制的类比与核心概念 1.1 Attention机制的类比 Attention机制可以被视为一个“特…

【kafa系列】kafka如何保证消息不丢失

【kafa系列】kafka如何保证消息不丢失 Apache Kafka通过多种机制来确保消息不丢失,这些机制包括但不限于副本机制、ISR(In-Sync Replicas)机制、ACK(Acknowledgment)机制、幂等生产者(Idempotent Producer&…

K8S对接Ceph分布式存储

文章目录 一、Ceph理论知识1、Ceph简介2、Ceph分布式存储的优点3、Ceph核心组件 二、部署Ceph高可用集群1、服务器环境信息2、部署前环境准备工作3、部署Ceph监控服务Monitor4、激活Ceph存储服务OSD 三、K8S对接Ceph存储1、K8S对接Ceph RBD实现数据持久化2、基于Ceph RBD生成PV…

计算机视觉编程 1(图片处理)

目录 灰色度 缩略图 拷贝粘贴区域 调整图像尺寸 旋转图像45 画图线、描点 灰色度 灰度是指图像中每个像素的亮度值,用来描述图像中各个像素的明暗程度。在计算机视觉中,灰度可以通过以下方式来计算: 1. 平均值法:将图像中每…

计算机毕业设计推荐-基于python的个性化旅游路线推荐平台

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的个性化旅游路线…

ubuntu20 安装ros noetic版本

【ROS】Ubuntu20.04卸载重装ROS_ubuntu20.04卸载ros-CSDN博客 错误处理——rosdep init,rosdep update失败解决方案_rosdep init出错-CSDN博客 ubuntu 20.04解决在处理时有错误发生: /var/cache/apt/archives/python3-catkin-pkg-modules_0.4.24-1_all…

NoSQL数据库-Redis集群详解及案例实现

一、 关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 D…