Nginx负载均衡

默认配置,tomcatsn个,请求就被平均分配到这n个服务器上。请求次数%n,平均分配到每个服务器。

例子:3tomcat

修改3个端口,在同一台服务器上启动3tomcat。每个tomcat下放一个index.html。然后内容修改,分别展示T1T2T3。当请求nignx,通过这种方法验证得出默认nginx轮询这3个页面,但顺序不一定是配置的顺序。

#前台,有3tomcat集群,用户访问时轮询转向到某一个tomcat

server {

listen       80;

server_name  www.jt.com;

location / { #拦截所有的资源

proxy_pass   http://jt_tomcats; #引用定义的upstream

}

}

#配置一个upstream,声明一个名称jt_tomcats,配置多个ip地址转向,默认就是轮询。

upstream jt_tomcats {

server 127.0.0.1:8080;

server 127.0.0.1:8090;

server 127.0.0.1:8100;

}

轮询方式存在问题:服务器有性能比较好的,有性能比较差的。新的服务器的配置比旧的服务器强悍很多。CPU核也多,内存也大,硬盘容量也大,速度还快。

如果还使用轮询的方式,就会造成新服务器资源的浪费,旧的服务器资源压力大。显然资源分配不合理,应该多劳多得。

权重

#前台,有3tomcat集群,用户访问时轮询转向到某一个tomcat

server {

listen       80;

server_name  www.jt.com;

location / { #拦截所有的资源

proxy_pass   http://jt; #引用下面定义的upstream

}

}

#配置一个upstream,声明一个名称jt,配置多个ip地址转向,默认就是轮询

upstream jt {

server 127.0.0.1:8080 weight=8; #访问请求分成9份,这个tomcat负责8份的链接

server 127.0.0.1:8090 weight=1; #访问请求分成9份,这个tomcat负责1份的链接

server 127.0.0.1:8100 down; #这个tomcat暂时不参加负载

}

 配置nginx,修改conf/nginx.conf文件

例子: 

server {

listen       80;

server_name  manage.jt.com;

proxy_set_header X-Forwarded-Host $host;

proxy_set_header X-Forwarded-Server $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {

       proxy_pass http://127.0.0.1:8081;

       proxy_connect_timeout 600;

       proxy_read_timeout 600;

}

}

在此配置文件中,被nginx映射到127.0.0.1:8082。导致后台在获取域名时,拿到的实际是127.0.0.1映射后的地址。未解决这个问题,增加个头信息。在此配置文件中添加如下

proxy_set_header Host $host;

它是个变量名,它就能获得请求的域名。在tomcat中就可以获得这个头信息中的域名。当后台程序需要获得请求的域名时,Nginx重新映射了。

posted on 2018-01-09 14:20  YO随缘OY  阅读(124)  评论(0)    收藏  举报

导航