• Nginx+Memcached+Tomcat集群配置


    本次主要是在win7 64 上演示操作。

    web应用构建

    简单构造web应用,这里就不做描写叙述了,详细的能够訪问我的Github
    为了方便显示,在success.jsp上做差别,一个加上8080。一个加上8081。


    Memcached安装、配置、启动

    本次演示样例使用了2个memcached节点,都在一台机子上。

    win7 64上的操作。资源能够在这个链接上下载我是链接
    解压后进入cmd进入此文件夹,记住一定要用已管理员身份执行

    安装

    memcached  -d install

    执行

    memcached -d start

    也能够启动多个memcached服务。能够參考这个链接

    创建

    sc create "Memcached Server" start= auto binPath= "memcached_path -d runservice -m 32 -p 11311 -l 127.0.0.1" DisplayName= "Memcached Server"

    注意改动端口,默认是11211
    能够通过Telnet訪问:telnet 127.0.0.1 11211
    telnet界面 quit能够退出

    启动、停止、卸载Memcached Server的命令:

    sc start "Memcached Server"  //启动
    sc stop "Memcached Server"  //停止
    sc delete "Memcached Server"  //卸载该服务

    能够在任务管理器上看到memcached服务
    memcached服务


    Tomcat配置

    本次以2个tomcat7.0.62演示样例

    Tomcat 集群配置。集群中各个结点通过共享存储在缓存Memcached中session来实现session的共享:假设有一台机器上的Tomcat服务停掉了。对于其它对等服务器上的session数据仍然能够从Memcached缓存中读取,从而不会发生session丢失的问题。

    使用memcached-session-manager。官方文档

    tomcat的配置主要包含两个方面。首先须要下载所须要的包,放到tomcat安装文件夹下的lib文件夹下(严格来说应该是$CATALINA_HOME/lib/)
    第一个msm所须要的jar。序列化所须要的jar,
    第二个配置context.xml

    所需jar包

    memcached-session-manager

    tomcat 7相应的maven配置
    须要例如以下3个jar包;
    memcached-session-manager-version.jar,
    memcached-session-manager-tc7-version.jar,
    spymemcached-version.jar

    能够在以下maven中下载

    <dependency>
        <groupId>de.javakaffee.msm</groupId>
        <artifactId>memcached-session-manager-tc7</artifactId>
        <version>1.8.3</version>
    </dependency>

    序列化

    4种序列化

    kryo-serializer:
    <dependency>  
        <groupId>de.javakaffee.msm</groupId>  
        <artifactId>msm-kryo-serializer</artifactId>  
        <version>version</version>  
    </dependency> 
    javolution:
    <dependency>  
        <groupId>de.javakaffee.msm</groupId>  
        <artifactId>msm-javolution-serializer</artifactId>  
        <version>version</version>  
    </dependency> 
    xstream:
    <dependency>  
        <groupId>de.javakaffee.msm</groupId>  
        <artifactId>msm-xstream-serializer</artifactId>  
        <version>version</version>
    </dependency>  
    flexjson:
    <dependency>  
        <groupId>de.javakaffee.msm</groupId>  
        <artifactId>msm-flexjson-serializer</artifactId>  
        <version>version</version>  
    </dependency>

    各种序列化所须要的jar包例如以下:
    - kryo-serializer: msm-kryo-serializer, kryo-serializers, kryo, minlog, reflectasm, asm
    - javolution-serializer: msm-javolution-serializer, javolution
    - xstream-serializer: msm-xstream-serializer, xstream, xmlpull, xpp3_min
    - flexjson-serializer: msm-flexjson-serializer, flexjson

    $CATALINA_HOME/lib/加入jar情况例如以下
    jar情况

    context.xml配置

    即改动$CATALINA_HOME/conf/context.xml文件里Context节点下的内容,提交MSM配置。


    主要包含使用memcached来管理黏性session和非黏性session以及使用membase来管理非黏性session。
    演示样例基于在一台主机的2个memcached实例,演示样例使用的序列化方式为kryo。

    本次使用黏性session来管理。至于非黏性的能够自行配置或者下次再补充,配置例如以下,2个tomcat配置一样。

    <Context>  
      ...  
    <Manager   className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  memcachedNodes="n1:localhost:11211,n2:localhost:11311"  
            sticky="false" sessionBackupAsync="false" 
            lockingMode="auto" 
            requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$" 
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
    </Context>  

    Nginx安装、配置、启动

    官网下载稳定版本号,

    解压后进入该文件夹后。

    start nginx  // 启动

    这样,nginx 服务就启动了。打开任务管理器,查看 nginx.exe 进程。有二个进程会显示,占用系统资源。那是相当的少。然后再打开浏览器。输入 http://127.0.0.1/ 就能够看到nginx的欢迎页面了。很友好。

    nginx -s stop          // 停止nginx
    nginx -s reload       // 又一次载入配置文件
    nginx -s quit          // 退出nginx

    默认情况下。Nginx使用默认的配置文件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;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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  65;
    
        #gzip  on;
        upstream localhost {  
            #ip_hash;
            server localhost:8080 weight=1;  
            server localhost:8081 weight=1;
        }
    
        server {
            listen       80;
            server_name  localhost;
            charset utf-8;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass http://localhost;  
                proxy_connect_timeout 2s;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            location ~ ^/(WEB-INF)/ {   
            deny all;   
            }   
    
    
            #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 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    

    測试

    登陆页面
    登陆
    成功页面
    success1
    成功1
    success2
    成功2

    当把tomcat(8080)关掉后。调用tomcat(8081)显示success2。
    当关闭一个memcached服务后,显示正常。


    參考

    Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
    同一台Windows机器中启动多个Memcached服务
    MSM–Memcached_Session_Manager介绍及使用
    memcached-session-manager配置
    Windows下Nginx的安装与配置

  • 相关阅读:
    ZOJ Problem Set–2417 Lowest Bit
    ZOJ Problem Set–1402 Magnificent Meatballs
    ZOJ Problem Set–1292 Integer Inquiry
    ZOJ Problem Set–1109 Language of FatMouse
    ZOJ Problem Set–1295 Reverse Text
    ZOJ Problem Set–1712 Skew Binary
    ZOJ Problem Set–1151 Word Reversal
    ZOJ Problem Set–1494 Climbing Worm
    ZOJ Problem Set–1251 Box of Bricks
    ZOJ Problem Set–1205 Martian Addition
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7060210.html
Copyright © 2020-2023  润新知