nginx的负载均衡,分别修改nginx配置文件中http模块和server模块相应内容即可
http{
upstream myserver{ 【添加该字段】
server 192.168.111.136:8080;
server 192.168.111.136:8081;
}
server {
listen 80;
server_name 192.168.111.136;【修改为服务器地址】
location / {
proxy_pass http://myserver;【添加】
}
}
}
这里的upstream就是配置负载均衡的字段
1、实现效果
浏览器地址栏输入地址 http://www.123.com/edu/a.html 负载均衡效果,平均到8080和8081端口中。
2、准备两个tomcat服务器,因为我是在一台服务器上起的两个服务,所以需要修改端口,一台端口为8080,一台端口为8081,在两个tomcat中的webapps目录中分别创建edu目录,并在文件夹内创建HTML文件(内容分别为对应的端口)
3、修改host文件
在windows中的host文件进行域名和IP对应关系的配置(文件地址:C:\Windows\System32\drivers\etc
)
添加 192.168.111.136 www.123.com
4、修改nginx配置文件
vi /etc/nginx/nginx.conf
分别修改http模块和server模块
http{
upstream myserver{ 【添加该字段】
server 192.168.111.136:8080;
server 192.168.111.136:8081;
}
server {
listen 80;
server_name 192.168.111.136;【修改为服务器地址】
location / {
root html;
proxy_pass http://myserver;【添加】
index index.html index.htm;
}
}
}
修改完后重载nginx
在/usr/sbin目录下执行 ./nginx -s reload
实现效果如下
负载均衡策略及示例:
1)轮询(默认)接收到的每个请求按照时间顺序逐一分配到不同的后端服务器,若后端服务器down掉,能自动剔除
2)weight :代表权重,权重默认为1,权重越高被分配的客户端越多。
3)ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session共享问题。
4)fair(第三方)按照后端服务器的响应时间来分配请求,响应时间短的优先分配(如果要使用这种调度算法,需先安装upstream_fair模块)
weight
upstream myserver{
server 192.168.111.136:8080 weight=3;
server 192.168.111.136:8081 weight=9;
ip_hash
upstream myserver{
ip_hash
server 192.168.111.136:8080 ;
server 192.168.111.136:8081 ;
fair
upstream myserver{
server 192.168.111.136:8080 ;
server 192.168.111.136:8081 ;
fair
upstream还可为每个设备设置如下状态值
upstream nginx{
server 127.0.0.1:80 down; ##不参加负载
server 127.0.0.1:81 backup; ##其他机器失联或忙时才负载
server 127.0.0.1:83 max_fails=2 fail_timeout=60s;
}
down:表示单前的server暂时不参与负载.
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout : max_fails次失败后,暂停的时间。