Nginx负载均衡配置

测试环境

域名:test.cc
服务器:Centos6.7、nginx/1.10.2
A服务器:192.168.8.142
B服务器:192.168.8.143
C服务器:192.168.8.144

部署策略

用A服务器作为主服务器负责分发请求,B、C服务器用来处理最终请求

开始配置

A服务器配置

新建配置文件 test.cc.conf
配置文件内容

#
# The test server
#

upstream test.cc {
    server 192.168.8.143;
    server 192.168.8.144;
}

server {
    listen       80;
    server_name  test.cc;
    location / {
        proxy_pass   http://test.cc;
        proxy_set_header        Host    $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

B、C服务器配置

新建配置文件 test.cc.conf
配置文件内容

#
# The test server
#

server {
    listen       80;
    listen       [::]:80;
    server_name  test.cc;
    index index.php index.html index.htm;
    root         /usr/share/nginx/html/test;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

重启3台服务器的nginx服务

注意,如果像我一样是本地配置的测试域名的话,需要在自己电脑hosts文件中加入如下代码

192.168.8.142   test.cc

做完上面的设置,简单的nginx负载均衡就算是配置完成了,然后我们来进行验证,在B、C服务器的 /usr/share/nginx/html/test 目录下(根据自己的配置设置,不用跟这里一样)新建index.htm文件,然后在两台服务器的index.htm文件输入不同的内容,再访问test.cc就会发现,不断刷新,页面会显示不同的内容,说明负载均衡已经配置成功

配置说明

除了上面的基本配置之外,还有一些其他的配置

upstream test.cc {
    server 192.168.8.143 weight=1;
    server 192.168.8.144 weight=2;
    server 192.168.8.144 down;
}

// weight 权重,值越大,则被访问的概率越大
// down 表示当前服务器不参与负载均衡,也就是说不会被访问到
// 其他配置待补充

负载均衡策略

轮询

这是默认的策略,把每个请求逐一分配到不同的server,如果分配到的server不可用,则分配到下一个,直到可用

upstream test.cc {
    server 192.168.8.143;
    server 192.168.8.144;
}

最少连接

把请求分配到连接数最少的server

upstream test.cc {
    least_conn;
    server 192.168.8.143;
    server 192.168.8.144;
}

权重

weight默认值为1,值越大则代表被访问的几率越大,如下配置,144的访问数量是143的2倍

upstream test.cc {
    server 192.168.8.143 weight=1;
    server 192.168.8.144 weight=2;
}

ip_hash

根据访问客户端ip的hash值分配,这样同一客户端的请求都会被分配到同一个server上,如果牵扯到session的问题,用这个是最好的选择

upstream test.cc {
    ip_hash;
    server 192.168.8.143;
    server 192.168.8.144;
}
    原文作者:Sucret
    原文地址: https://segmentfault.com/a/1190000013697443
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞