一、 部署方案
3台服务器:windows server 2008 r2,64bit,4处理器,内存8G
192.168.0.51:nginx,mamcached,smb文件服务器,静态文件,微营销管理后台、系统定时任务等。(部署两套nginx,分别用于前台和后台的负载均衡。)
192.168.0.52,192.168.0.53:用于WEB应用集群。(每台web集群服务器分别安装4个tomcat,2个前台,2个后台。)
二、 安装环境
1. WEB服务器配置
a) 安装JDK
1、安装jdk7.0
2、配置jdk7.0到系统环境变量
b) 安装Tomcat
c) 部署应用
1、配置tomcat访问端口、字符编码、链接超时时间、线程数等:
修改server.xml配置文件(后台tomcat端口为:9001、9002,前台tomcat端口为:9003、9004)
<Connector port="9003" URIEncoding="utf-8" protocol="org.apache.coyote.http11.Http11NioProtocol"
allowTrace="false" connectionTimeout="60000" redirectPort="9343"
maxThreads="1000" minSpareThreads="20"
acceptCount="1000" enableLookups="false"/>
几个属性解释:
maxThreads:Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。 可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
minSpareThreads:Tomcat初始化时创建的线程数。默认值4。
connnectionTimeout:网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。(本系统由于与后台系统接口超时时间较长,使用设置为60000)
enableLookups:是否反查域名,默认值为true。为了提高处理能力,应设置为false
Executor节点:表示Tomcat组件之间共享的线程池。
maxIdleTime:空闲线程被关闭之前的毫秒数。默认值是60000。
2、配置tomcat的应用部署目录
修改server.xml配置文件
<Context path="" docBase="D:\WebApplication\apache-tomcat-7.0.62-zqwd-9003\webappszqwd" debug="0" reloadable="true" crossContext="true" >
</Context>
3、修改应用log4j日志目录
修改\WEB-INF\classes目录下log4j.xml文件
<param name="File" value="D:/apache-tomcat-log/zqwd_9003/log4j.log" /><!-- 设置File参数:日志输出文件名 -->
4、smb文件服务器配置
将smb文件服务器也部署在192.168.0.51服务器上,创建用户名,并设置密码,将D:/static文件夹设置为共享,在项目config.properties文件中配置smb地址服务器:
wechat.sharefilepath=smb\://用户名\:密码@192.168.0.51/static
2. Nginx服务器配置
a) 安装nginx
b) 配置NGINX实现负载均衡(以前台为例)
worker_processes 8;#工作进程的个数,一般与计算机的cpu核数一致
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
events {
worker_connections 204800;#单个进程最大连接数(最大连接数=连接数*进程数)
}
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 off;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
server_names_hash_bucket_size 128;#长连接超时时间,单位是秒
## Start: Timeouts ##
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 30;
send_timeout 10;
keepalive_requests 10;
## End: Timeouts ##
upstream localhost_wd {#服务器集群名字
server 192.168.0.52:9003 weight=1 fail_timeout=5;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 192.168.0.52:9004weight=1 fail_timeout=5;
server 192.168.0.53:9003 weight=1 fail_timeout=5;
server 192.168.0.53:9004 weight=1 fail_timeout=5;
}
server {
listen 80;#监听82端口
server_name localhost;#当前服务的域名
charset utf-8;
location ~ .*\.(js|css|gif|jpg|jpeg|png)$ {#将静态文件分离出来,放在nginx下
expires 24h;
root D:/static;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://localhost_wd;
proxy_connect_timeout 1;
proxy_read_timeout 100;
proxy_send_timeout 100;
proxy_buffering off;
client_max_body_size 64M;
}
}
}
3. Memcached配置session共享
a) 安装memcached
b) 引入jar包
在tomcat的安装目录lib中,加入:
memcached-2.6.jar
javolution-5.4.3.1.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc7-1.5.1.jar
msm-javolution-serializer-1.5.1.jar
msm-kryo-serializer-1.5.1.jar
msm-xstream-serializer-1.5.1.jar
c) 配置tomcat
在server.xml文件中<Context>节点中加入
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.0.51:11211"
sticky="false"
lockingMode="auto"
requestUriIgnorePattern= ".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "1800000"
copyCollectionsForSerialization="true"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
说明:
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11212
sessionBackupTimeout的单位为分钟
d) 配置nginx
在nginx.conf中配置:
在http块中添加:
memcached_connect_timeout 3s;
memcached_read_timeout 3s;
memcached_send_timeout 3s;
memcached_buffer_size 8k;
upstream memcacheds{
server localhost:11211;
keepalive 6024;
}
在location块中添加:
set $memcached_key $request_uri;
add_header X-mem-key $memcached_key;
memcached_pass memcacheds;
default_type text/html;
4. 内存优化配置
a) 配置tomcat内存
修改\bin目录下catalina文件,在@echo off下加入:
set JAVA_OPTS=-Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=512M