< 返回新闻公共列表

Nginx如何配置负载均衡?

发布时间:2023-03-21 14:50:49

Nginx是最流行的Web服务器之一,具有非常强大的负载均衡器选项,旨在提高服务器资源的可用性和效率。在本文中,小编将给大家解释Nginx如何配置负载均衡?


一、NGINX安装

作为第一步,部署这3个服务器以针对应用程序进行平衡。在所有这 3台服务器上安装NGINX。

在所有这3台服务器上安装NGINX。

# apt-get 安装 nginx

在这个阶段我们不会部署额外的应用程序;我们只会编辑主要的 index.nginx-debian.html文件。在此文件中,使用指定名称SERVER 1、SERVER 2、SERVER 3保存每个服务器。

# echo '你好!我的名字服务器 1' > /var/www/html/index.nginx-debian.html

完毕。安装了NGINX并派生了服务器名称。现在,当在浏览器中单击此链接时,我们将能够看到已为每个服务器备份NGINX Web服务器的消息。

让我们为每个服务器建立一个IP:10.10.10.1、10.10.10.2和 10.10.10.3。平衡服务器IP将为10.10.10.99

当尝试对第一台服务器进行查询时,我们将得到以下响应:

#curl http :// 10 . 10 。10 。1 /

我的名字服务器 1

对其余两台服务器重复安装和文本写入过程。


二、NGINX配置负载均衡

使用NGINX默认设置安装所有三台服务器后,我们将部署平衡器服务器。我们还将继续安装 NGINX 服务器:

# apt-get 安装 nginx

现在让我们为新的配置服务器配置服务器平衡。为了显示3个以前的服务器进行平衡,让我们将以下值部署到NGINX配置中:


Nginx如何配置负载均衡?.png


在此配置中,我们可以看到这三台先前部署的服务器处于“上游”服务器组的配置中。平衡机制的类型也在“上游”指令中指明。如果不指定,则默认采用`round-robin` 。要指定这2个其他机制,请指定`least_conn`或`ip_hash` 。下面的`balanced`值将被指定为用于平衡的组的标题。任何随机名称都足以在以后的配置中用作指向该特定服务器组的链接。

然后,如果我们过渡到,我们将看到 `server` 配置组。在此阶段,我们通过端口80的HTTP协议进行操作。为此,必须指定一个将监听`listen 80`网络服务器的端口。然后,必须根据目录编写位置算法。如果指定了location / ,则所有查询都将由该块提供服务。然后,我们可以看到里面的proxy_pass负责将查询代理到第三方服务器。在此阶段,我们指定一个“平衡”服务器组以及传输控制协议,并将http保留在端口80上。为此,我们将http://放在开头。

至此,负载均衡安装以最简单的配置完成。让我们继续进行测试。

重新启动我们的Web服务器以应用新配置:

#服务nginx重启

为了测试,我们可以向平衡服务器启动CURL查询:


Nginx如何配置负载均衡?..png


因此,我们可以观察到10个查询正在由不同的服务器处理。每个新请求都已发送到新服务器。

例如,如果其中一台服务器出现故障怎么办。例如,让我们转到服务器2,然后将其关闭:#服务nginx停止

重新查询时,我们会看到第二台服务器被自动忽略了。因此,项目的容错能力增加了。


Nginx如何配置负载均衡?...png


显然,响应以循环模式出现,该机制称为“round-robin”。对于不同的平衡机制,一个新的指令将被添加到“upstream”配置组。新指令可以是`ip_hash`或`least_conn`。如果我们设置`ip_hash`方法,这就是 NGINX配置文件的样子。


Nginx如何配置负载均衡?....png


三、额外的负载均衡配置

我们只会考虑一些通常在负载平衡设置中选择使用的额外配置。这些是可选参数,例如:`weight`、`max_fails`、`fail_timeout`。

上述所有参数都要在服务器的上游目录组中指定。

`weight` 参数指定服务器之间的所有查询平衡。让我们考虑具有以下配置的服务器的情况:


Nginx如何配置负载均衡?.....png


每10个查询将平衡如下:3个查询将转到10.10.10.1服务器,接下来的5个查询将转到10.10.10.2服务器,1个查询将转到10.10.10.3和 10.10.10.4。

`max_fails`和`fail_timeout`参数是相互关联的。它们确定与断开连接的服务器重新建立连接的尝试次数。例如,如果`max_fails`参数设置为3,并且`fail_timeout` = 60 ,那么如果在60秒内服务器上有3次不成功的处理尝试,那么在接下来的60秒内将不会尝试发送查询到这个服务器。`fail_timeout`设置为10 秒,`max_fails`默认设置为1。

以下是使用这些参数的配置示例:


Nginx如何配置负载均衡?......png


四、正确的负载平衡日志记录配置

如果我们有一个不方便的应用程序在多个服务器上运行并配置为平衡。有时需要跟踪查询直到接收服务器。为此,需要准确记录平衡。

将NGINX主配置文件/etc/nginx/nginx.conf添加到 `http` 组,并使用新的日志格式:


Nginx如何配置负载均衡?.......png


然后打开文件/etc/nginx/sites-available/default并添加以下日志记录值:


Nginx如何配置负载均衡?........png


然后,保存文件,检查配置并重新启动Web服务器。

# nginx -t && 服务nginx重启

如果我们对负载平衡进行4次查询,在负载平衡/var/log/nginx/default-access.log日志中,我们将找到以下日志片段:


Nginx如何配置负载均衡?.........png


五、UTP协议下DNS服务器的均衡

如前所述,nginx还可以在传输级别执行负载平衡。在此示例中,我们将考虑DNS服务器的平衡。

我们在这里指定了几个DNS后端服务器,然后将nginx配置为通过端口53监听UDP数据包。`proxy_pass` 指令将后端发送到服务器。Nginx 默认期望后端发送一个或多个响应。由于对一个请求会有一个响应,因此我们配置了proxy_responses 1。

TCP的负载均衡比较相似:


Nginx如何配置负载均衡?..........png


以上是Nginx配置负载均衡相关步骤,希望能帮助到大家。


/template/Home/Zkeys724/PC/Static