关于Nginx+tomcat+memcached(缓存)配置集群负载均衡的下载与安装流程:
实现的整体步骤
一:安装memcached。(memcached可以一个或者多个)
二:安装两个tomcat
三:配置msm。
四:安装nginx,实现负载均衡。
以下是详细步骤:
第一步:安装memcached
1. 下载memcached服务端memcached-1.2.6-win32-bin.zip,地址:csdn
第二步:安装tomcat
1. 安装两个tomcat6,如果不在myEclipse等集成环境下,需要先安装JDK.注意修改两个
tomcat的端口号(server.xml中要修改三个端口:8005,8080,8009,把这三个改成没有在用的端口就可以了)。
2. 启动tomcat看是否能成功启动。如果不能启动成功,很可能就是端口冲突。
第三步:配置msm:
1,先下载msm及其依赖包
[url] http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar [/url]
[url] http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar[/url]
[url] http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar [/url]
[url] http://spymemcached.googlecode.com/files/memcached-2.4.2.jar [/url]
[url] http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar [/url]
2,将这5个包放到$TOMCAT_HOME/lib目录下
3,修改$TOMCAT_HOME/conf/context.xml
Xml代码
<Context docBase="d:/apache-tomcat-6.0.30/webapps" path="" reloadable="true" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211,n2:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
</Context>
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11211,
memcached所在服务器ip,11211是memcached默认端口号。
sessionBackupTimeout的单位为分钟
d:/apache-tomcat-6.0.30/webapps替换成tomact的webaapps目录
修改后重启两个TOMCAT即可,这个时候已经解决SESSION的共享问题.
第四步:安装nginx,实现负载均衡
一、1.nginx:是一款轻量级的Web 服务器/反向代理服务器。其特点是占有内存少,并发能力强。
作用:Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebServer间的
负载均衡,降低单个Web Server的负荷,以提高整体的性能与稳定性。
2.nginx的安装与运行:
cd nginx的安装目录
cd nginx-1.4.6
start nginx
这样,nginx 服务就启动了(也可以直接双击打开)。打开任务管理器,查看 nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少。
然后再打开浏览器,输入就可以看到nginx的欢迎页面了
nginx -s stop // 停止nginx
nginx -s reload // 重新加载配置文件
nginx -s quit // 退出nginx
3.nginx.conf文件需要修改的配置:
#user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
#单个后台worker process进程的最大并发链接数
worker_connections 2048;
}
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 185;
#gzip on;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server ip1:8080 weight=6;
server ip2:8080 weight=5;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://mysvr;
index index.html index.htm index.jsp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 30; #后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 60; #连接成功后,后端服务器响应时间(代理接收超时)
}
其余配置不需要更改,详见nginx.conf文件。
注意:
1. 如果nginx请求中断,报upstream timed out,修改以下参数。
proxy_read_timeout 30; #后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 60; #连接成功后,后端服务器响应时间(代理接收超时)
keepalive-timeout选项
此选项说的是可使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keepalive-timeout功能可避免建立或重新建立连接。
2. jar版本,系统版本window7 32位。
此片为本人亲测通过,如有意见,或者错误,欢迎指出。