烂泥:负载均衡

烂泥:负载均衡,第1张

烂泥:nginx负载均衡

这篇文章最初发表在mud上。

今天,我们来了解一下nginx的负载均衡配置。NGX的负载均衡由nginx的上游模块和proxy_pass反向代理实现。

注意:有三台服务器,前端服务器A使用nginx进行负载均衡配置。后端是两台配置相同的服务器。以访问a.ilanni.com的域名为例。图,如下图:

服务器A有80个对外开放的端口(公网),服务器B和服务器C是两台配置相同的服务器。服务器b打开端口8080,服务器c打开端口8090。当客户端访问a.ilanni.com域名时,A服务器根据nginx上游模块的对应策略分配客户端是访问B服务器还是C服务器。

注意,服务器B和服务器C的内容是相同的。但是在这里,为了看到实验结果,我在B和C服务器中配置了不同的内容。服务器B默认页面的实际内容是:服务器是web1_192.168.1.249:8080。c默认页面的实际内容是:服务器是web2_192.168.1.249:8090。如下所示:

INX负载均衡默认是轮询分配的,默认权重为1,权重越大,被访问的概率越大。

让我们首先配置服务器A的nginx,如下所示:

cat/usr/local/nginx/conf/nginx.conf|grep-v^#|grep-v^$

a.ilanni.com上游

服务器192.168.1.248:8080;

服务器192.168.1.249:8090;

}

位置/{

proxy_passhttp://a.ilanni.com;

proxy_set_headerHost$host

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_X_Forwarded_For;

}

注意上图中标记的第一部分。上游用于负载平衡。http://a.ilanni.com;就是我们要访问的域名,通过proxy_pass反向代理到上游下的服务器。

第二部分是我们要反向代理的域名。注意,我们这里监听的是端口80,我还没有在这个服务器标记中配置server_name。其实也可以配置server_name,但是最后效果是一样的。这个已经测试过了。

第三部分,这里我配置一个虚拟主机。显示器是端口8080,我也在这里配置了server_name。这主要是为了对比。

现在,让我们启动服务器A的nginx并访问a.ilanni.com:8080。如下所示:

可以看出,目前可以正常访问服务器A的nginx。请注意,我们正在访问http://a.ilanni.com:8080。

现在开始配置服务器B和C的nginx,配置内容如下:

在服务器B和C的nginx配置完成后,现在让我们启动它们各自的nginx服务并访问它们,如下所示:

从上图可以看出,服务器B和C的nginx已经被正常访问。那我现在就去http://a.ilanni.com看看能否达到预期的效果。如下所示:

可以看到,我们对http://a.ilanni.com的访问已经反向代理到了upstream下的B服务器,现在显示的是B服务器的内容。

再次刷新页面,显示以下内容:

刷新页面后,你会发现这次显示的是C服务器的内容。它还显示http://a.ilanni.com已经被反向代理到C服务器。

可以多次刷新页面,会发现B、C服务器交替出现。

为什么会这样呢?

其实在文章之前,我已经介绍过nginx的上行负载均衡。没有其他配置时使用的默认策略是轮询,默认权重是1。

也就是说:上游a.ilanni.com{

服务器192.168.1.248:8080;

服务器192.168.1.249:8090;

}

服务器B和服务器C的默认权重是1。然后nginx轮询的时候,B和C服务器会交替出现。

如果我们现在把服务器B的权重设置为5,服务器C还是会用默认的来看实际情况。配置如下:

a.ilanni.com上游

服务器192.168.1.248:8080权重=5;

服务器192.168.1.249:8090;

}

当您再次访问http://a.ilanni.com时,服务器B的内容将首先显示。然后,刷新,你会发现大概会刷新5次,才会显示C服务器的内容。就这个权重而言,服务器的权重值越高,分配给客户端的请求就越多。

注意上面的实验。我们和服务器A、B、c在同一个局域网,对于公网,只开放服务器A的80端口。如果这三台服务器都是公有IP,那就是我们下一篇文章要介绍的,关于nginx反向代理的使用。

至此,在我们基本介绍完nginx的负载均衡之后。借助以下介绍,nginx的上游目前支持以下分发方式:

1)轮询(默认)每个请求按照时间顺序逐一分配给不同的后端服务器。如果后端服务器宕机,可以自动拒绝。

2)权重指定轮询概率。权重与访问比例成正比,用于后端服务器性能不均衡的情况。设置服务器的重量。权重值越高,分配给客户端的请求就越多。默认值为1。

3)、ip_hash根据ip访问的哈希结果分配每个请求,使每个来宾固定访问一个后端服务器,可以解决会话的问题。

4)fair(第三方)根据后端服务器的响应时间分配请求,响应时间短的优先。

5)url_hash(第三方)根据被访问url的哈希结果分发请求,使得每个url都被定向到同一个后端服务器,在后端服务器缓存时更有效。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/784310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存