Nginx 负载均衡

为了确保适当的速度和优化的功能,传入的网络流量分布在一组服务中。这些后端服务通常称为服务器池或服务器群。随着服务器之间的分布越多,由于服务器负载而导致速度减慢的可能性就越小。

高流量网站每天为数千甚至数百万人提供服务。该服务的一部分是在几秒钟内为用户显示内容,例如图像、文本和视频。服务器需要每次都识别所需的数据并可靠地执行它。

负载平衡用于防止服务器在请求溢出时瘫痪。负载平衡器将请求发送到可以有效处理请求的服务器,以最大限度地提高速度和性能。

负载平衡是一种常用的技术,也是资源利用、最大化吞吐量、减少延迟和确保容错的绝佳方式跨多个应用程序实例进行配置。

这是一种将传入流量分配到多个有能力的虚拟专用服务器的有用机制。

Nginx 是一种流行的 Web 服务器软件,可用于配置作为一个简单而强大的负载均衡器来提高服务器的资源可用性和效率。

设置 Nginx 负载平衡

1.通过SSH登录

首先,以root用户身份登录到你的Nginx服务器。

ssh root@IP_address

2.更新所有软件包

安装在其上的所有软件包必须是最新的:

apt-get update && apt-get upgrade

3.安装 Nginx 网络服务器

我们需要在虚拟专用服务器(VPS)上安装 Nginx 网络服务器。使用以下命令安装 Nginx:

apt-get install Nginx

安装 Nginx 后,使用以下命令检查 Nginx 是否正在运行:

service Nginx status

4.附加负载平衡配置

现在,在任何文本编辑器中打开您网站的 Nginx 配置文件:

vim /etc/Nginx/sites-available/yourdomain.com.conf

然后在文件顶部追加负载均衡配置:

upstream loadbalancer {
server vps1.yourdomain.com;
server vps2.yourdomain.com;
server vps3.yourdomain.com;
}

我们应该在上面列出的所有服务器上安装 Nginx 并监听 80 端口号。

5.添加上游模块

要设置循环负载均衡器,我们将不得不使用 Nginx 上游模块。在同一个配置文件即 yourdomain.com.conf 中,我们需要在虚拟主机配置中添加上游模块。

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

6.重启 Nginx 服务器

保存配置文件并重启 Nginx 使更改生效:

service Nginx restart

整个配置将在三个服务器(vps1.yourdomain.com、vps2.yourdomain.com、vps3.yourdomain.com)之间平均分配所有传入流量,还可以配置 Nginx 以更有效地分配流量。它带有平衡选项,例如权重平衡、最大失败和 IP 哈希平衡。

7.权重平衡

我们可以使用权重平衡来指定分配给我们在上游列出的每个服务器的流量比例:

例如:

upstream loadbalancer {
server vps1.yourdomain.com weight=1;
server vps2.yourdomain.com weight=2;
server vps3.yourdomain.com weight=5;
}

在上面的例子中,vps2.yourdomain.com 收到的流量是 vps2.yourdomain.com 的两倍,vps3.yourdomain.com 收到的流量是 vps1.yourdomain.com 的五倍。

8. Max failed

当我们看到Nginx的默认设置时,即使服务器宕机,它也会向服务器发送数据。我们可以使用 Max failed 的选项来防止这种情况。

upstream loadbalancer {
server vps1.yourdomain.com max_fails=4  fail_timeout=20s;
server vps2.yourdomain.com weight=2;
server vps3.yourdomain.com weight=4;
}

在上面的例子中,Nginx服务器会尝试连接到vps1.yourdomain.com,如果超过20秒没有响应,它会再次尝试。 4 次尝试后,vps1.yourdomain.com 将被视为关闭。

9. IP 哈希平衡

使用这种方法,访问者将始终被发送到同一台服务器。因此,如果访问者收到了 vps1.yourdomain.com 的内容,除非服务器关闭或无法访问,否则它将始终传输到该服务器。

upstream loadbalancer {
ip_hash;
server vps1.yourdomain.com;
server vps2.yourdomain.com;
server vps3.yourdomain.com down;
}

在上例中,已知 vps3.yourdomain.com 无法访问,并标记为关闭。

我们可以指定多个虚拟服务器,每个服务器由一个服务器{}上下文描述。server { listen *:80 default_server; server_name codebaoku.co; return 20 ...