jyhrte 发表于 2015-4-15 10:21:36

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

kcy2020 发表于 2017-2-11 14:33:31

{:6_396:}{:6_396:}

kcy2020 发表于 2017-2-11 15:12:15

写得挺好
页: [1]
查看完整版本: nginx+memcached+tomcat集群 session共享完整版