如何设置 Nginx 负载均衡

2023-11-09

关于负载均衡

负载平衡是一种有用的机制,可以在多个功能强大的虚拟专用服务器之间分配传入流量。通过将处理机制分配给多台计算机,可以为应用程序提供冗余 - 确保容错和提高稳定性。用于负载平衡的循环算法将访问者发送到一组 IP 中的一个。在最基本的层面上,循环法相当容易实现,它分配服务器负载,而无需考虑服务器响应时间和访问者地理区域等更细微的因素。

Setup

本教程中的步骤要求用户拥有 VPS 的 root 权限。您可以在中查看如何设置用户教程.

在设置 nginx 负载均衡之前,您应该在 VPS 上安装 nginx。您可以使用 apt-get 快速安装它:


sudo apt-get install nginx  

上游模块

为了设置循环负载均衡器,我们需要使用 nginxupstream 模块。我们将把配置合并到 nginx 设置中。

继续打开您网站的配置(在我的示例中,我将仅使用通用默认虚拟主机):


sudo nano /etc/nginx/sites-available/default  

我们需要将负载均衡配置添加到该文件中。

首先我们需要包含上游模块,如下所示:


upstream backend  {
  server backend1.example.com;
  server backend2.example.com;
  server backend3.example.com;
}  

然后我们应该在配置中进一步引用该模块:


 server {
  location / {
    proxy_pass  http://backend;
  }
}  

重启nginx:


sudo service nginx restart  

只要您拥有所有虚拟专用服务器,您现在应该会发现负载平衡器将开始将访问者平均分配到链接服务器。

指令

上一节介绍了如何在多个虚拟服务器之间平均分配负载。然而,有很多原因导致这可能不是最有效的数据处理方式。我们可以使用多种指令来更有效地引导网站访问者。

Weight

开始更精确地将用户分配给服务器的一种方法是为某些机器分配特定的权重。 Nginx 允许我们分配一个数字,指定应定向到每个服务器的流量比例。

包含服务器权重的负载平衡设置可能如下所示:


upstream backend  {
  server backend1.example.com weight=1;
  server backend2.example.com weight=2;
  server backend3.example.com weight=4;
}  

默认权重为 1。如果权重为 2,backend2.example 将发送两倍于 backend1 的流量,而 backend3 如果权重为 4,将处理两倍于 backend2 的流量,四倍于 backend 1.

Hash

IP 哈希允许服务器根据客户端的 IP 地址响应客户端,从而将访问者每次访问时发送回同一个 VPS(除非该服务器已关闭)。如果已知服务器处于非活动状态,则应将其标记为关闭。所有原本应该路由到故障服务器的 IP 都会被定向到另一台备用服务器。

下面的配置提供了一个示例:


upstream backend {
  ip_hash;
  server   backend1.example.com;
  server   backend2.example.com;
  server   backend3.example.com  down;
 }  

最大失败次数

根据默认的循环设置,即使服务器没有响应,nginx 也会继续向虚拟专用服务器发送数据。最大故障可以通过使无响应的服务器在设定的时间内不工作来自动防止这种情况。

有两个因素与最大失败次数相关:max_fails 和fall_timeout。最大失败次数是指在服务器被视为不活动之前尝试连接到服务器的最大失败次数。 Fall_timeout 指定服务器被视为不工作的时间长度。一旦时间到期,将再次开始尝试到达服务器。默认超时值为 10 秒。

示例配置可能如下所示:


upstream backend  {
  server backend1.example.com max_fails=3  fail_timeout=15s;
  server backend2.example.com weight=2;
  server backend3.example.com weight=4;  

See More

这是简单循环负载平衡的简短概述。此外,还有其他方法可以加速和优化服务器:

  • 如何将 Nginx 配置为 Apache 的前端代理
  • 如何在 Ubuntu 12.04 上使用 Apache 安装和配置 Varnish
  • 如何在 Ubuntu 12.04 上安装和使用 Memcache
埃特尔·斯维尔德洛夫
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 Nginx 负载均衡 的相关文章

随机推荐

  • 如何用 Java 编写您的第一个程序

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Java是一种成熟且设计良好的编程语言 用途广泛 从课堂学习到运行任何规模的商业应用程序 它的独特优势之一是它是跨平台的 一旦创建了 Java 程序 就可以在许多操作系统上运行它 包括
  • 如何在 Ubuntu 12.10 上设置 ownCloud 5

    什么是Red Means 用户需要输入或自定义的行将位于red在本教程中 其余的大部分应该是可复制和粘贴的 关于ownCloud ownCloud 是一种开源数据存储解决方案 类似于 Dropbox 或 Google Drive 人们可以获
  • Android RecyclerView 示例 - 多种 ViewType

    到目前为止 我们已经在一个视图中显示了相同类型的视图回收视图 在本教程中 我们将在 RecyclerView 中实现异构布局 回收视图 具有异构布局的 RecyclerView 通常用于显示节标题和详细信息 两者都需要不同的布局 因此需要不
  • 如何在 Ubuntu 18.04 上安装 Node.js

    介绍 Node js是一个用于通用编程的JavaScript平台 允许用户快速构建网络应用程序 通过在前端和后端利用 JavaScript Node js 使开发更加一致和集成 在本指南中 您将了解在 Ubuntu 18 04 服务器上安装
  • 如何在 CentOS 7 上安装 WordPress

    介绍 WordPress 是一个使用 PHP 和 MySQL 的免费开源网站和博客工具 WordPress 是目前互联网上最流行的 CMS 内容管理系统 拥有超过 20 000 个插件来扩展其功能 这使得 WordPress 成为快速轻松地
  • Java二维码生成器-zxing示例

    今天我们将研究Java QR 码生成器程序 如果您精通技术和小工具 那么您一定知道二维码 如今 您随处都可以找到它 在博客 网站 甚至在一些公共场所 这在移动应用程序中非常流行 您可以使用 QR 码扫描仪应用程序扫描 QR 码 它会显示文本
  • Python 位运算符

    Python 按位运算符用于对整数执行按位计算 将整数转换为二进制格式 然后逐位执行运算 因此称为按位运算符 Python 按位运算符仅适用于整数 最终输出以十进制格式返回 Python 按位运算符也称为二元运算符 Python 位运算符
  • 如何在 Ubuntu 14.04 上使用 UFW 设置防火墙

    介绍 UFW 即简单防火墙 是一个接口iptables旨在简化配置防火墙的过程 尽管iptables虽然是一个可靠且灵活的工具 但对于初学者来说 学习如何使用它来正确配置防火墙可能会很困难 如果您希望开始保护您的网络 并且不确定使用哪个工具
  • 如何在 Ubuntu 14.04 上将 MySQL 或 MariaDB 与 Django 应用程序一起使用

    介绍 Django 是一个用于快速创建 Python 应用程序的灵活框架 默认情况下 Django 应用程序配置为将数据存储到轻量级 SQLite 数据库文件中 虽然这在某些负载下效果很好 但更传统的 DBMS 可以提高生产性能 在本指南中
  • Spring MVC @RequestMapping 注解示例,包含控制器、方法、标头、参数、@RequestParam、@PathVariable

    RequestMapping is one of the most widely used Spring MVC annotation org springframework web bind annotation RequestMappi
  • Java 中的 SQL 注入以及如何轻松预防

    什么是 SQL 注入 SQL注入是十大 Web 应用程序漏洞之一 简单来说 SQL注入是指通过用户输入的数据在查询中注入 插入SQL代码 它可以发生在任何使用关系数据库 如 Oracle MySQL PostgreSQL 和 SQL Ser
  • 如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道

    Status 已弃用 本文已弃用 不再维护 Reason Ubuntu 12 04 已于 2017 年 4 月 28 日终止生命周期 EOL 并且不再接收安全补丁或更新 请参阅 本文作为参考可能仍然有用 但可能不遵循最佳实践或适用于此版本或
  • 如何在 Ubuntu 14.04 LTS 上设置 Apache 虚拟主机

    介绍 Apache Web 服务器是在互联网上提供 Web 内容的最流行的方式 它占互联网上所有活跃网站的一半以上 并且非常强大和灵活 Apache 将其功能和组件分解为可以独立定制和配置的单独单元 描述单个站点或域的基本单位称为virtu
  • 如何使用多站点设置多个 WordPress 站点

    关于多个 WordPress 安装 2010 年 WordPress 发布了流行的内容管理平台 3 0 版本 在该版本中包含的众多改进中 WordPress 社区将 WordPress MU 合并到了主要的 WordPress 配置中 自更
  • Java 9 功能与示例

    Java 9 是一个主要版本 它为我们开发人员带来了很多功能 在本文中 我们将详细研究 Java 9 功能 Java 10 已发布 有关 Java 10 版本的完整概述 请访问Java 10 特性 Java 9 特性 Some of the
  • 如何在 CentOS 7 服务器上添加和删除用户

    介绍 当您第一次开始使用新的 Linux 服务器时 添加和删除用户通常是您需要做的第一件事 在本指南中 您将学习如何创建用户帐户 分配sudo权限 并删除 CentOS 7 服务器上的用户 先决条件 要完成本教程 您将需要 一台 CentO
  • 如何在 Ubuntu 22.04 上设置私有 Docker 注册表

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Docker 注册表是一个管理 Docker 容器镜像存储和交付的应用程序 注册表集中容器映像并减少开发人员的构建时间 Docker 镜像通过虚拟化保证相同的运行时环境 但构建镜像可能
  • 如何在 Ubuntu 16.04 上将 Nginx Web 根移动到新位置

    介绍 在 Ubuntu 上 默认情况下 Nginx Web 服务器将其文档存储在 var www html 它通常与操作系统的其余部分一起位于根文件系统上 但有时 将文档根移动到另一个位置会很有帮助 例如单独安装的文件系统 例如 如果您从同
  • 如何使用BackupPC在Ubuntu 12.04 VPS上创建备份服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何设置 Nginx 负载均衡

    关于负载均衡 负载平衡是一种有用的机制 可以在多个功能强大的虚拟专用服务器之间分配传入流量 通过将处理机制分配给多台计算机 可以为应用程序提供冗余 确保容错和提高稳定性 用于负载平衡的循环算法将访问者发送到一组 IP 中的一个 在最基本的层