最近简单的研究了下JAVA的负载均衡以及session的节享,查阅了很多资料,得到很大的帮助,搭建一个简单的环境从头到尾说清楚的,很多都是简单的描述,参考者还要翻阅大量的资料理解 。接下来我会从头到尾简单的搭建一下环境
需要用到的工具
1、Windows版本下载地址:http://nginx.org/en/download.html
2、tomcat 官网:http://tomcat.apache.org/
我以Tomcat7为例
1、现将Tomcat复制两份(TomcatA,TomcatB)
2、修改端口号,修改\TomcatA\conf\server.xml
改动事项,修改port后面的端口,两个Tomcat的端口不能重复,端口随意,防止出现冲突,建议改大一点
1)、<Server port="8005" shutdown="SHUTDOWN">
2)、<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
3)、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
nginx的安装与配置
1、根据 上面的链接,下载,解压,放到任何一个目录即可。
2、打开conf文件夹下的nginx.conf进行配置
具体配置如下:
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream local_tomcat {
server localhost:18080;
server localhost:28080;
}
server {
listen 8888;
server_name local_tomcat;
#charset koi8-r;
#access_log logs/host.access.log main;
location /pbuild {
proxy_pass http://local_tomcat;
}
location = /50x.html {
root html;
}
# location ~ \.(jsp|jspx|do|action)?$ {
# root "d:/Tomcat/tomcat1/webapps/pbuild";
# index index.jsp index.jspx index.do;
# proxy_pass http://local_tomcat;
# }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
}
}
注意:upstream后面的local_tomcat必须与
location /pbuild {
proxy_pass http://local_tomcat;
}
proxy_pass http://后面的一致,至于起什么名随意。
upstream local_tomcat {
server localhost:18080;
server localhost:28080;
}
server是TomcatA,TomcatB所在的机器,端口是访问tomcat下web应该程序的端口。
同时
server {
listen 8888;
server_name local_tomcat;
server_name后面的内容是访问负载均衡服务的名或IP。listen是端口号
以上配置nginx与tomcat的负载均衡就结速了,详细的配置说明可以自行查看相关的文章。
以下内容配置session共享
1、打开Tomcat下的server.xml文件,在Engine节点下面增加以下节点
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
</Channel>
</Cluster>
程序在运行时,通过address这个地址,判断是一个网络内的tomcat,这时会把这个网络内的tomcat session同步。
2、在Tomcat下webapp下找到自己的应用程序,打开应用程序里的web.xml文件,在web-app节点下增加以下节点
<distributable/>
以上就设置完了session共享,
注意:以上设置,负载均衡对应有几个Tomcat,相同的代码就设置几次。