Nginx 均衡负载

Nginx集群配置

首先要把3个虚拟主机的域名(a.ieread.com、b.ieread.com、c.ieread.com)都指向到nginx机的公网ip上。 然后还是修改nginx的配置文件nginx.conf: 配置文件中upstream段还是保持不变,依旧是3个tomcat集群机的地址及负载因子:

1
2
3
4
5
upstream tomcats {
  server 192.168.0.11:8080 weight=1;
  server 192.168.0.12:8080 weight=1;
  server 192.168.0.13:8080 weight=1;
}

因为有3个应用,所以应该有3个server段,这里只写其中一个,其他两个只需要修改一下server_name即可:

1
2
3
4
5
upstream tomcats {
  server 192.168.0.11:8080 weight=1;
  server 192.168.0.12:8080 weight=1;
  server 192.168.0.13:8080 weight=1;
}

proxy_set_header是nginx的http代理模块中的一个指令。 在nginx中的默认proxy是只能对后面real server做端口转发的,而不能做域名转发,即默认的是: proxy_set_header Host $proxy_host; 我们要通过域名转发就必须改为: proxy_set_header Host $host;

最后修改tomcat的配置文件server.xml,主要是配置虚拟主机:

1
2
3
4
5
upstream tomcats {
  server 192.168.0.11:8080 weight=1;
  server 192.168.0.12:8080 weight=1;
  server 192.168.0.13:8080 weight=1;
}

3台集群机均改成上面一样的。

Tomcat集群配置 运行多个tomcat需要修改每个tomcatd的端口。 在tomcatconfserver.xml这里面对涉及的端口进行修改

sesession 共享 通过上面的配置,我们已经完成了nginx+tomcat的负载均衡,接下来我们要考虑如何让book.ieread.com下的项目session同步。

这里我使用的是memcached-session-manager;

首先,我们需要下载JAR包:javolution-5.4.3.1.jar,msm-javolution-serializer-1.4.1.jar,memcached-session-manager-1.4.1.jar http://code.google.com/p/memcached-session-manager/downloads/list

下载JAR包:memcached-2.5.jar http://code.google.com/p/spymemcached/downloads/list

将4个jar包放在tomcat的lib包中。 然后修改tomcatd的service.xml文件,添加红色部分配置。

1
2
3
4
5
upstream tomcats {
  server 192.168.0.11:8080 weight=1;
  server 192.168.0.12:8080 weight=1;
  server 192.168.0.13:8080 weight=1;
}

测试sesession 共享 添加msem.jsp文件

1
2
3
4
5
upstream tomcats {
  server 192.168.0.11:8080 weight=1;
  server 192.168.0.12:8080 weight=1;
  server 192.168.0.13:8080 weight=1;
}

Http://localhost:8080/msem.jsp可以看见不同的项目具有相同的sesessionID。

 

你可能感兴趣的:(Nginx 均衡负载)