测试环境
域名: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;
}