在网上有好多例子,我挨个试了试,但是都是不行
http://www.oschina.net/question/1014681_107718
这个写的不错,按照他的配置基本上不出问题,但是包的引用还是不太对,
http://www.linuxidc.com/Linux/2012-09/71264.htm这个是用的kryo序列化的,但是也不是很对,现在我写下自己的配置
第一步,编写bat文件,方便启动关闭服务器
@echo off
rem 当前bat的作用
echo ==================begin========================
cls
SET NGINX_PATH=G:
SET NGINX_DIR=G:\SA\nginx-0.8.39\nginx-0.8.39\
SET COBAR_PATH=G:
SET COBAR_DIR=G:\SA\cobar-server-1.2.7\cobar-server-1.2.7\bin\
SET MEMCACHE_PATH=G:
SET MEMCACHE_DIR=G:\memcached-1.2.1-win32\
SET TC1_PATH=E:
SET TC1_DIR=E:\软件\Java\apache-tomcat-7.0.39-windows-x86\apache-tomcat-7.0.39\bin\
SET TC2_PATH=E:
SET TC2_DIR=E:\软件\Java\apache-tomcat-7.0.39-windows-x86 - 2\apache-tomcat-7.0.39\bin\
color 0a
TITLE 管理程序
CLS
:MENU
ECHO. * nginx 进程list *
tasklist|findstr /i "nginx.exe"
ECHO.
ECHO. [1] 启动Nginx
ECHO. [2] 关闭Nginx
ECHO. [3] 重启Nginx
ECHO. [4] 退 出
ECHO. [5] 启动cobar
ECHO. [6] 启动memcache
ECHO. [7] 启动tc1
ECHO. [8] 启动tc2
ECHO.
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO stop
IF "%id%"=="3" GOTO restart
IF "%id%"=="5" GOTO cobar
IF "%id%"=="6" GOTO memcache
IF "%id%"=="7" GOTO tc1
IF "%id%"=="8" GOTO tc2
IF "%id%"=="4" EXIT
PAUSE
:start
call :startNginx
GOTO MENU
:stop
call :shutdownNginx
GOTO MENU
:restart
call :shutdownNginx
call :startNginx
GOTO MENU
:shutdownNginx
ECHO.
ECHO.关闭Nginx......
taskkill /F /IM nginx.exe > nul
ECHO.OK,关闭所有nginx 进程
goto :eof
:cobar
call :startcobar
GOTO MENU
:tc1
call :starttc1
GOTO MENU
:tc2
call :starttc2
GOTO MENU
:memcache
call :startmemcache
GOTO MENU
:startmemcache
ECHO.
ECHO.启动Cobar......
IF NOT EXIST "%MEMCACHE_DIR%"memcached.exe ECHO "%MEMCACHE_DIR%memcached.exe"不存在
%MEMCACHE_PATH%
cd "%MEMCACHE_DIR%"
IF EXIST "%MEMCACHE_DIR%memcached.exe" (
echo "start '' memcached.exe"
start "" memcached.exe -d start
)
ECHO.OK
goto :eof
:startcobar
ECHO.
ECHO.启动Cobar......
IF NOT EXIST "%COBAR_DIR%"startup.bat ECHO "%COBAR_DIR%startup.bat"不存在
%COBAR_PATH%
cd "%COBAR_DIR%"
IF EXIST "%COBAR_DIR%startup.bat" (
echo "start '' startup.bat"
start "" startup.bat
)
ECHO.OK
goto :eof
:starttc1
ECHO.
ECHO.启动tc......
IF NOT EXIST "%TC1_DIR%"startup.bat ECHO "%TC1_DIR%startup.bat"不存在
%TC1_PATH%
cd "%TC1_DIR%"
IF EXIST "%TC1_DIR%startup.bat" (
echo "start '' startup.bat"
start "" startup.bat
)
ECHO.OK
goto :eof
:starttc2
ECHO.
ECHO.启动tc......
IF NOT EXIST "%TC2_DIR%"startup.bat ECHO "%TC2_DIR%startup.bat"不存在
%TC2_PATH%
cd "%TC2_DIR%"
IF EXIST "%TC2_DIR%startup.bat" (
echo "start '' startup.bat"
start "" startup.bat
)
ECHO.OK
goto :eof
:startNginx
ECHO.
ECHO.启动Nginx......
IF NOT EXIST "%NGINX_DIR%nginx.exe" ECHO "%NGINX_DIR%nginx.exe"不存在
%NGINX_PATH%
cd "%NGINX_DIR%"
IF EXIST "%NGINX_DIR%nginx.exe" (
echo "start '' nginx.exe"
start "" nginx.exe
)
ECHO.OK
goto :eof
配置好后可以快速的启动关闭,不需要总是翻文件夹
2,装好nginx,tomcat7,memcached,这些的安装方法网上都有。
3,配置tomcat,主要是修改另一个tomcat的端口和设置session,
端口修改主要是一下三处
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
这三个端口修改完后启动tomcat试试,如果不出问题就继续配置session
在context.xml里添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
然后再lib文件夹下添加一下jar包
msm-javolution-serializer-jodatime-1.3.0.jar
msm-javolution-serializer-cglib-1.3.0.jar
spymemcached-2.8.4.jar
msm-javolution-serializer-1.6.3.jar
javolution-5.4.3.1.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
如果用的是tomcat6,memcached-session-manager-tc7-1.6.3.jar这个要换位memcached-session-manager-tc6-1.6.3.jar
spymemcached-2.8.4.jar这个包有点blog没有引用,用的是memcached.jar但是我测试时发现会出下面的错误
net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;
upstream web_server {
#ip_hash;
server localhost:8080 ;
server localhost:8088 ;
}
配置两个tomcat服务器,当然也可以设置权重
server {
listen 9007;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ .*\.(jsp|do)?$ {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://web_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache_valid 200 304 1h; #对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 301 302 5m;
proxy_cache_valid any 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Accept-Encoding ""; #(或是后台服务器关闭gzip),这样这台机器才不会缓存被压缩的文件,造成乱码
proxy_ignore_headers "Cache-Control" "Expires"; #这段配置加上后,proxy_cache就能支持后台设定的expires。
proxy_pass http://web_server;
expires 15m;
}
location / {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://web_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
具体的配置如上。