nginx+memcached+tomcat集群 session共享完整版
集群环境1.nginx版本 nginx-1.6.2.tar.gz2.jdk 版本 jdk-7u21-linux-x64.tar.gz3.tomcat 版本7.0.294.memcached 版本 memcached-1.4.22.tar.gz5. CentOS 6.5 系统采用一台服务做测试 一、nginx安装安装依赖包 yum -y install gcc gcc-c++1.安装pcre库tar zxvf pcre-8.36.tar.gzcd pcre-8.36./configuremake && make install2.安装zlib库tar zxvf zlib-1.2.8.tar.gzcd zlib-1.2.8./configuremake && make install3.安装opensslwget http://www.openssl.org/source/openssl-1.0.1c.tar.gztar zxvf openssl-1.0.1c.tar.gz4.安装nginx 注意指定prce zlib openssl原码包位置tar zxvf nginx-1.6.2.tar.gz cd nginx-1.6.2 ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-pcre=/root/pcre-8.36 \ --with-zlib=/root/zlib-1.2.8\--with-openssl=/root/openssl-1.0.1c make && make install5.安装成功后配置vi /usr/local/nginx/conf/nginx.conf 修改配置文件 #usernobody;worker_processes2; #error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo; #pid logs/nginx.pid; worker_rlimit_nofile 65535;events { use epoll; worker_connections65535;} http { include mime.types; default_typeapplication/octet-stream; #log_formatmain'$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_loglogs/access.logmain; sendfile on; #tcp_nopush on; #keepalive_timeout0; keepalive_timeout150; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; #gzipon; gzipon; ##cache## client_max_body_size 10m; client_body_buffer_size 1m; proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 64k; proxy_buffers 4 128k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 1m; proxy_temp_path /home/temp_dir; proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; ##end## #server { # listen 80; # server_namelocalhost; #charset koi8-r; #access_loglogs/host.access.logmain; #location / { # root html; # indexindex.html index.htm; # } #error_page404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504/50x.html; #location = /50x.html { # root html; #} # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_indexindex.php; # fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # denyall; #} #} # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_namesomenamealiasanother.alias; # location / { # root html; # indexindex.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_namelocalhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_keycert.key; # ssl_session_timeout5m; # ssl_protocolsSSLv2 SSLv3 TLSv1; # ssl_ciphersHIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # indexindex.html index.htm; # } #} upstream wazert.com { server 127.0.0.1:8080;#tomcat1后面安装配置 server 127.0.0.1:8090; #tomcat2 } server { listen80; server_name www.test1.com; #域名 location / { root html; indexindex.html index.htm; proxy_pass http://wazert.com; # proxy_set_headerX-Real-IP$remote_addr; 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|png|htm|html|css|ico|flv|swf)(.*) { proxy_pass http://wazert.com; proxy_redirect off; proxy_set_header Host $host; proxy_cache cache_one; proxy_cache_valid 200 302 1h; proxy_cache_valid 301 1d; proxy_cache_valid any 10m; expires 30d; proxy_cache_key $host$uri$is_args$args; } } } 二、memcached安装yum -y install libevent libevent-devel
tar zxvf memcached-1.4.22.tar.gz
cd memcached-1.4.22
./configure --prefix=/usr/local/memcached
make && make install
启动memcached ip为172.19.0.102 根据自己的环境端口11211可以根据自己需要修改不同端口
/usr/local/memcached/bin/memcached -d -m 1024 -u root -l 172.19.0.102 -p 11211 -c 1024 -P /tmp/memcached.pid
测试一下如下说明成功
telnet 172.19.0.102 11211
Trying 172.19.0.102...
Connected to 172.19.0.102.
Escape character is '^]'.
三、安装jdktar zxvf jdk-7u21-linux-x64.tar.gzmvjdk1.7.0_21 /opt/jdk配置vi /etc/profile 增加到环境变量中在最后面增加 JAVA_HOME=/opt/jdkPATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH 生效环境变量source /etc/profile java -version 查看是版本是否生效java version "1.7.0_21"Java(TM) SE Runtime Environment (build 1.7.0_21-b11)Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode) 四、安装与配置tomcat1.安装tomcattar zxvf tomcat7.tar.gzmv apache-tomcat-7.0.29 /opt/tomcat12.添加mem和msm的依赖jar包把包下载后上传/opt/tomcat1/lib/ 目录下 3、配置tomcatcd/opt/tomcat1/confvi context.xml增加<Context></Context>之间 注意:172.19.0.102 11211 是memcached端口<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.19.0.102:11211" requestUriIgnorePattern=".*/.(png|gif|jpg|css|js|swf|flv)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false"/> 修改vi server.xml<!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">五、配置tomcat集群上面配置好后拷贝一份cp-rtomcat1tomcat2cd tomcat2/conf/修改vi server.xml配置把端口配置不同的1. 找到如下把8005修改成8006--><Server port="8005" shutdown="SHUTDOWN">2.找到如下把8080修改成8090根据自己来配置,修改后的8090与nginx配置一样 --> <Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />3.找到如下把8009修改成8010<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />4. 找到如下把tomcat1修改成tomcat2--> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> 六、启动tomcat集群启动tomcat1sh /opt/tomcat1/bin/startup.sh启动tomcat2sh /opt/tomcat2/bin/startup.sh netstat -tunlp查看tomcat集群启动成功tcp 0 0 :::8080 :::* LISTEN 22911/javatcp 0 0 :::8090 :::* LISTEN 22946/java查看8080与8090说明成功七、启动 nginx/usr/local/nginx/sbin/nginx 启动/usr/local/nginx/sbin/nginx -s reload重启测试session是否共享1.cd /opt/tomcat1/webapps/ROOT/mkdir testcd testvi index.jsp <%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster Test</title></head> <body> <% //HttpSession session = request.getSession(true); System.out.println(session.getId()); out.println("<br> SESSION ID:" + session.getId()+"<br>"); %> </body> 2.cd /opt/tomcat2/webapps/ROOT/ 把tomcat1 test目录拷贝过来cp -r /opt/tomcat1/webapps/ROOT/test ./ 打开网页刷新几次看看session iD不变,就成功了,如果变了可能配置问题。以上图说明session共享了telnet 172.19.0.102 11211stats
{:6_396:}{:6_396:} 写得挺好
页:
[1]