📜  NGINX负载平衡

📅  最后修改于: 2021-01-07 06:16:34             🧑  作者: Mango

NGINX负载平衡

为了确保适当的速度和优化的功能,传入的网络流量会分布在一组服务中。这些后端服务通常称为服务器池或服务器场。随着服务器之间分布的增加,由于服务器加载而导致变慢的机会就更少了。

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

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

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

这是在多个有能力的虚拟专用服务器周围分配传入流量的有用机制。

Nginx是流行的Web服务器软件,可用于配置为简单但功能强大的负载平衡器,以提高服务器的资源可用性和效率。

设置Nginx负载平衡

1.通过SSH登录

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

ssh root@IP_address

2.更新所有软件包

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

apt-get update && apt-get upgrade

3.安装Nginx Web服务器

我们需要在虚拟专用服务器(VPS)上安装nginx Web服务器。使用以下命令安装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.最大失败

当我们看到nginx的默认设置时,即使它们已关闭,它也会将数据发送到服务器。我们可以使用最大失败选项来防止这种情况。

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无法访问,并将其标记为down。