设为首页 收藏本站
查看: 2554|回复: 2

[经验分享] nginx+memcached+tomcat集群 session共享完整版

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-15 10:21:36 | 显示全部楼层 |阅读模式
集群环境
1.nginx版本 nginx-1.6.2.tar.gz
2.jdk 版本 jdk-7u21-linux-x64.tar.gz
3.tomcat 版本  7.0.29
4.memcached 版本 memcached-1.4.22.tar.gz
5. CentOS 6.5 系统采用一台服务做测试
一、nginx安装
安装依赖包 yum -y install gcc gcc-c++
1.安装pcre库
tar zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make && make install
2.安装zlib库
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install
3.安装openssl
tar zxvf openssl-1.0.1c.tar.gz
4.安装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 install
5.安装成功后配置
vi /usr/local/nginx/conf/nginx.conf 修改配置文件
#user  nobody;
worker_processes  2;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
   use epoll;
    worker_connections  65535;
}
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  150;
    fastcgi_connect_timeout 300;
         fastcgi_send_timeout 300;
         fastcgi_read_timeout 300;
    #gzip  on;
     
                    gzip  on;
                    
         
           ##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_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
      #  location / {
       #     root   html;
        #    index  index.html index.htm;
       # }
        #error_page  404              /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_index  index.php;
        #    fastcgi_param  SCRIPT_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 {
        #    deny  all;
        #}
    #}
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;
    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_timeout  5m;
    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
                  upstream wazert.com {
            server 127.0.0.1:8080;  #tomcat1后面安装配置
                    server 127.0.0.1:8090;   #tomcat2
         }
                  
        server {
       listen  80;
       server_name www.test1.com; #域名
       location / {
           root   html;
            index  index.html index.htm;
            proxy_pass http://wazert.com;
            #       proxy_set_header  X-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 ip172.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 '^]'.
三、安装jdk
tar zxvf jdk-7u21-linux-x64.tar.gz
mv  jdk1.7.0_21 /opt/jdk
配置vi /etc/profile 增加到环境变量中
在最后面增加
JAVA_HOME=/opt/jdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export 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)
四、安装与配置tomcat
1.安装tomcat
tar zxvf tomcat7.tar.gz
mv apache-tomcat-7.0.29 /opt/tomcat1
2.添加mem和msm的依赖jar包
QQ截图20150415102103.png
把包下载后上传/opt/tomcat1/lib/ 目录下
3、配置tomcat
cd  /opt/tomcat1/conf
vi 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  -r  tomcat1  tomcat2
cd 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集群
启动tomcat1
sh /opt/tomcat1/bin/startup.sh
启动tomcat2
sh /opt/tomcat2/bin/startup.sh
netstat -tunlp查看tomcat集群启动成功
tcp        0      0 :::8080                     :::*                        LISTEN      22911/java
tcp        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 test
cd test
vi 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 ./
打开网页
QQ截图20150415102110.png
QQ截图20150415102115.png
刷新几次看看session iD不变,就成功了,如果变了可能配置问题。以上图说明session共享了
telnet 172.19.0.102 11211
stats
QQ截图20150415102122.png


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-57376-1-1.html 上篇帖子: nginx.conf配置文件详解 下篇帖子: nginx编译安装服务启动脚本示例 完整版
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表