Nginx负载均衡配置

负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机和某台服务器闲置的情况。那么负载均衡的前提就是要2台以上服务器才能实现。

由于没有服务器,所以本次测试直接host指定域名,服务器不够,我们用nodejs监听了三个端口(8881,8882,8888)来模拟多台服务器。nginx监听80端口作为主服务器。

var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('server 8881'); }).listen(8881);// 终端打印如下信息console.log('Server running at http://127.0.0.1:8881/');

var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('server 8882'); }).listen(8882);// 终端打印如下信息console.log('Server running at http://127.0.0.1:8882');

var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('server 8888'); }).listen(8888);// 终端打印如下信息console.log('Server running at http://127.0.0.1:8888/');

测试域名yongle.com

A服务器监听80端口(主)

B服务器监听8881端口(从)

C服务器监听8882端口(从)

D服务器监听8888端口(从)

A服务器做为主服务器,域名直接解析到A服务器( 127.0.0.1:80)上,由A服务器负载均衡到B服务器( 127.0.0.1:8881)、C服务器( 127.0.0.1:8882)和D服务器( 127.0.0.1:8888)上。

A服务器nginx.conf设置打开nginx.conf,文件位置在nginx安装目录的conf目录下。在http段加入以下代码

upstream yongle.com { server 127.0.0.1:8881; server 127.0.0.1:8882; server 127.0.0.1:8888; } server{ listen 80; server_name yongle.com; location / { proxy_pass http://yongle.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

保存重启nginx即可完成负载均衡

我们把域名解析到A服务器,然后由A服务器转发到B服务器C服务器与D服务器,那么A服务器只做一个转发功能,现在我们让A服务器也提供站点服务。

如果添加主服务器到upstream中,那么可能会有以下两种情况发生:

1、主服务器转发到了其它IP上,其它IP服务器正常处理;

2、主服务器转发到了自己IP上,然后又进到主服务器分配IP那里,假如一直分配到本机,则会造成一个死循环。

怎么解决这个问题呢?因为80端口已经用来监听负载均衡的处理,那么本服务器上就不能再使用80端口来处理yongle.com的访问请求,必须重新监听一个新的端口。于是我们把主服务器的nginx.conf加入以下一段代码:

server { listen 8000; server_name yongle.com; location / { root html; index index.html index.htm; } }

把主服务器添加到upstream中

upstream yongle.com { server 127.0.0.1:8881; server 127.0.0.1:8882; server 127.0.0.1:8888; server 127.0.0.1:8000; }

到这里我们就完成了把主服务器也加入到了负载均衡中。

Nginx负载均衡有4种方案配置

1、轮询

2、最少连接 least_conn;

3、IP地址哈希 ip_hash;

4、基于权重 weight

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181112A0J5MW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券