负载均衡

负载均衡,这个名称听起来刁刁的有木有!其实嘛,也就那回事,不要被这牛逼哄哄的名词吓住了。

举个例子:我们的小网站,刚开始就一台nginx服务器,后来,随着业务量增大,用户增多,一台服务器已经不够用了,我们就又多加了几台服务器。那么这几台服务器如何调度?如何均匀的提供访问?这就是负载均衡。

负载均衡的好处是可以集群多台机器一起工作,并且对外的IP 和 域名是一样的,外界看起来就好像一台机器一样。

nginx 也刚好提供了强大而又简单的负载均衡功能。

配置负载均衡

在不同目录下另开启两个本地server

$ http-server -p 3000
$ http-server -p 3001

在这两个server的根目录下新建 index.html,分别输入'hello, nginx' 与 'hello, nginx (server 2)'

配置nginx.conf

#本地http-server开启的server,命名为node-server,监听3000和3001端口
upstream servers{
# weight表示权重,数值越大,表示被分配到这个server的几率越大,这里我们让其相等。
  server 127.0.0.1:3000 weight=1;
  server 127.0.0.1:3001 weight=1;
}
# NGINX 虚拟主机,监听80端口
server {
  listen 80;
  server_name test.com;
  access_log /var/log/nginx/node-server;
  # Gzip Compression
  gzip on;
  gzip_comp_level 6;
  gzip_vary on;
  gzip_min_length  1000;
  gzip_proxied any;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  gzip_buffers 16 8k;
  # 反向代理 node-server
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    # 代理的地址
    proxy_pass http://servers;
    proxy_redirect off;
  }
}

重启Nginx nginx -s reload

测试

我们可以看到,对于同一个请求,nginx会按照权重随机的分配到不同的server!这样就完成了均衡负载。对于client来说,好像就只有一台server!

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress