九游会j9体育(中国)官方网站您需要指定一组具有上游块的后端办事器-九游会体育 ag九游会登录j9入口 j9九游会登录入口首页

发布日期:2026-02-16 08:49    点击次数:124


九游会j9体育(中国)官方网站您需要指定一组具有上游块的后端办事器-九游会体育 ag九游会登录j9入口 j9九游会登录入口首页

对于特别小的网站,运行web应用才能的单个办事器庸碌就浪掷了。但是,这对于大型网站来说后果欠安。在这种情况下,咱们使用“负载平衡”,这是一种将传入肯求分发到多个其他办事器的时间,每个办事器皆运行一个web应用才能的副本。这是大型网站使用的时间之一,即使在流量很大的情况下也能保捏平素运行。

固然大多半东谈主使用nginx动作HTTP办事器,但它也有内置的负载平衡功能。在本文中,咱们将先容如安在您的系统上诞生它。

负载平衡

负载平衡是一种在多个打算资源(如打算机、汇注连气儿或磁盘)之间分配职责负载的活动。它旨在擢升资源应用率,最大为止地擢升费解量,裁减反馈时分,并确保容错性。在本文中,咱们将具体推断nginx撑捏的负载平衡类型。但是,其他应用才能(如数据库办事器)也不错应用负载平衡。

典型的HTTP负载平衡诞生如下图所示。有很多用户发送肯求,负载平衡器将它们分发到很多办事器(称为后端)。这些后端中的每一个皆运行团结应用才能的副本。当这些办事器发出反馈时,负载平衡器会将它们发送给客户端。

负载平衡器庸碌分为基于硬件和基于软件。基于硬件的负载平衡器是专用建设,它们佩戴专用集成电路(ASIC),不错特别灵验地路由流量。另一方面,基于软件的负载平衡器,如nginx或HAproxy,在软件中引申负载平衡。

此外,不错在各式汇注层引申负载平衡。顾名想义,第4层负载平衡器通过搜检传输层的请乞降反馈来平衡流量。此外,还有第7层负载平衡器,它在应用层搜检流量以找出问题。后者稍许弘远一些,因为它对事物有很高的看法。举例,一个知谈HTTP的第7层平衡器不错搜检URL,并字据URL将肯求分拨到不同的后端集。

nginx不错引申TCP和UDP的第4层负载平衡,以录取7层HTTP负载平衡。在接下来的几节中,咱们将看到如何为此指标建立nginx。

对于建立文献

在大多半Linux刊行版上,nginx建立文献位于/etc/nginx/nginx.conf中。但是,在Debian/Ubuntu上,此文献分为两个不同的文献:/etc/nginx/nginx.conf用于主建立,/etc/nginx/sites-enabled/default用于您托管的各个网站。若是你使用的是Debian/Ubuntu,你应该在前者中添加上游块,在后者中添加位置块。

负载平衡web应用才能

在持续之前,您需要诞生一些后端办事器,咱们的web应用才能将在这些办事器上运行。这些办事器将在每台办事器上运行一个HTTP办事器。对于咱们的示例,咱们将假定咱们也曾诞生了它们,而且这些后端办事器在192.168.0.1、192.168.0.2和192.168.0.3处可用。天然,这些不一定是里面IP,也不错是外部IP或主机名。

当前,有两件事需要将nginx建立为负载平衡器。领先,在http部分,您需要指定一组具有上游块的后端办事器。然后,您需要将这些肯求代理到办事器。为此,大开建立文献并添加以下行:

这个号召告诉nginx将任何URL的HTTP肯求传递给咱们定名为backend1的后端办事器集。若是你只想传递特定的网址,你不错这么作念:

location /shop { proxy_pass http://backend1;}

这将匹配扫数以“/shop”发轫的URL,并将其传递给后端办事器。您还不错推广此想法,将不同的URL传递给不同的后端。在这个例子中,咱们为托管博客的办事器添加了另一个后端。然后,咱们建立了nginx,将以“/blog”发轫的URL传递给新的后端。

nginx还撑捏使用FastCGI和uWSGI等提醒,通过FastCGI_pass和uWSGI_pass提醒,代理到其他几个公约。举例,假定端口9000上的每个后端办事器上皆运行着一个PHP-FPM看管程度,您想将肯求代理给它们。建立如下:

负载平衡政策

nginx有两种政策来遴荐要向其发送肯求的办事器。默许情况下,它使用轮询算法来决定应向哪个办事器发送肯求。但是,也有其他政策可供遴荐,您不错手动启用。least_conn政策遴荐处理集合数最少的办事器。另一方面,ip_hash政策字据在ip上运行哈希函数的终局来遴荐办事器。这意味着来自团结IP的肯求最终会到达团结办事器。

要使用默许政策之外的政策,只需在上游块中提过火称呼:

还有一个通用的哈希提醒,不错在职何HTTP值上使用。在这个例子中,咱们字据URL分发肯求:

hash $request_uri;

您不错通过为办事器分配权重来进一步革新默许政策。默许情况下,扫数办事器的权重皆为1,这意味着nginx除了应用所使用的政策限定外,不会“偏疼”一个办事器。带有权重的示例建立如下:

upstream backend { server 192.168.0.1 weight=4; server 192.168.0.2 weight=2; server 192.168.0.3;}

正如你所看到的,咱们在这个例子中使用了轮回政策。字据上头示例中表现的权重,7个肯求中的每4个皆会发送到第一个办事器,其中2个发送到第二个办事器,1个发送到三个办事器。(正如咱们之前提到的,默许权重为1,是以咱们在上头的例子中不祥了它。)

其他高等建立

当nginx代理向这些办事器发出肯求时,它也会被迫地引申健康搜检。若是办事器未能发送反馈,它会自动标记为反馈,nginx会在一段时天职幸免向其发送肯求。fail_timeout值适度nginx幸免向办事器发送肯求的时分。max_fails值诞生应该失败的肯求数,之后nginx将办事器标记为失败。

鄙人面的示例中,咱们将第一台办事器的max_fails诞生为3,fail_timeout诞生为20秒:

upstream backend { server 192.168.0.1 max_fails=3 fail_timeout=20s; server 192.168.0.2;}

此外,您不错标记特定办事器以分裂对待。若是您正在对某个后端办事器进行顾惜,不错将其标记为已关闭。此办事器将处理的肯求当前被发送到组中的下一个办事器。您还不错将特定办事器标记为备份办事器。当扫数其他办事器皆不成用时,肯求将传递给它。底卑鄙露了这两个提醒的示例:

upstream backend { server 192.168.0.1; server 192.168.0.2; server 192.168.0.3 down; server 192.168.0.4 backup;}

一些常见问题

字据您部署的应用才能的类型,负载平衡器可能会导致某些问题。庸碌,您会从web应用才能中收到404或其他无理。这庸碌是因为“Host”标头包含后端办事器的地址,而不是其原始值。要惩办此问题,不错在位置块中手动诞生:

location / { proxy_set_header Host $host; proxy_pass http://backend;}

很多复杂的web应用才能在土产货存储景况,若是负载平衡器在不同的办事器上分发会话肯求,它们可能会无法职责。为了惩办这个问题,负载平衡器必须追踪反馈启动肯求的原始后端办事器。这个想法被称为“会话捏久性”。横祸的是,此功能仅在nginx的贸易版块中可用。但是,动作惩办活动,您不错尝试ip_hash提醒,该提醒来日自团结ip的肯求转发到团结后端办事器。IP庸碌不会常常革新,因此这可能对您的用例来说浪掷灵验。

传输层负载平衡

正如咱们之前提到的,nginx还不错在传输层引申负载平衡。语法与咱们之前看到的略有不同。具体来说,上游和办事器部分皆包含在流块中。

要使用此功能,您必须使用--with-stream标志编译nginx。在Debian和Ubuntu上,存储库中的nginx版块也曾使用此标志编译,因此您不错径直使用它。

假定你有多个DNS办事器,你想使用nginx动作负载平衡器。您只需将其放入建立文献中:

stream { upstream dns_backends { server 8.8.8.8:53; server 8.8.4.4:53; } server { listen 53 udp; proxy_pass dns_backends; proxy_responses 1; }}

在这里,咱们界说了一些DNS后端,然后建立nginx来监听端口53上传入的UDP数据包。proxy_pass提醒将它们发送到后端办事器。此外,默许情况下,nginx祈望后端不错发送一个或多个反馈。因为对单个肯求将有一个回应,是以咱们将proxy_responses诞生为1。

TCP的负载平衡的建立也基本差未几。

stream { upstream tcp_backend { server srv1.example.com:3306; server srv2.example.com:3306; } server { listen 3306; proxy_pass tcp_backend; }}

咱们之前步地的负载平衡政策和其他建立选项也适用于这里。

nginx提供了弘远的负载平衡功能和各式各种的选项九游会j9体育(中国)官方网站。




栏目分类

热点资讯

相关资讯