Nginx+Memcached+Tomcat 클러스터 구성

WBOY
풀어 주다: 2016-08-08 09:21:36
원래의
766명이 탐색했습니다.

이번에는 주로 win7 64에서의 동작을 시연합니다.

    • 웹 애플리케이션 빌드
    • Memcached 설치 구성 시작
    • Tomcat 구성
      • 필수 jar 패키지
        • memcached-session-manager
        • 직렬화
      • contextxml 구성
    • Nginx 설치 구성 시작
    • 테스트
    • 참조

웹 애플리케이션 빌드

간단 웹 애플리케이션 구성에 대한 자세한 내용은 여기에서 설명하지 않습니다. 내 Github를 방문하세요.
표시를 용이하게 하려면 Success.jsp에서 차이를 만들고 하나에는 8080을 추가하고 다른 하나에는 8081을 추가하십시오.


Memcached 설치, 구성, 시작

이 예에서는 하나의 머신에 2개의 Memcached 노드를 사용합니다.

win7 64에서 작동합니다. 리소스는 I am 링크에서 다운로드할 수 있습니다.
압축을 푼 후 cmd를 입력하여 이 디렉터리로 들어가세요. 관리자 권한으로 실행하세요.

설치

<code>memcached  <span>-d</span> install</code>
로그인 후 복사

실행

<code>memcached <span>-d</span> start</code>
로그인 후 복사

또한 여러 memcached 서비스를 시작할 수도 있습니다. 이 링크를 참조할 수 있습니다.

만들기

<code>sc <span><span>create</span><span>"Memcached Server"</span><span>start</span>= auto binPath= <span>"memcached_path -d runservice -m 32 -p 11311 -l 127.0.0.1"</span> DisplayName= <span>"Memcached Server"</span></span></code>
로그인 후 복사

포트를 변경해주세요. 기본값은 11211입니다
텔넷을 통해 접속 가능: telnet 127.0.0.1 11211
Telnet 인터페이스 종료는 종료 가능

Memcached 서버 시작, 중지 및 제거 명령:

<code>sc start <span>"Memcached Server"</span><span>//启动</span>
sc stop <span>"Memcached Server"</span><span>//停止</span>
sc <span>delete</span><span>"Memcached Server"</span><span>//卸载该服务</span></code>
로그인 후 복사

작업 관리자에서 memcached 서비스를 볼 수 있습니다


Tomcat 구성

이번에는 2개의 tomcat7.0.62 예제를 사용합니다

클러스터의 각 노드는 Tomcat 클러스터 구성에 저장된 세션을 공유하여 구현됩니다. 캐시 Memcached. 세션 공유: 한 시스템의 Tomcat 서비스가 중지되면 다른 피어 서버의 세션 데이터를 Memcached 캐시에서 계속 읽을 수 있으므로 세션 손실이 발생하지 않습니다.

공식 문서인 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에서 다운로드 가능

<code><span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>memcached-session-manager-tc7<span></<span>artifactId</span>></span><span><<span>version</span>></span>1.8.3<span></<span>version</span>></span><span></<span>dependency</span>></span></code>
로그인 후 복사
Serialization

4가지 직렬화

<code>kryo-serializer:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-kryo-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>javolution:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-javolution-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>xstream:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-xstream-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>flexjson:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-flexjson-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span></code>
로그인 후 복사
다양한 시퀀스 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/add jar는 다음과 같습니다


context.xml 구성

$CATALINA_HOME/conf/context.xml 파일의 Context 노드 아래 내용을 수정하고 MSM 구성을 제출합니다.

여기에는 주로 memcached를 사용하여 고정 세션과 비고정 세션을 관리하고 membase를 사용하여 비고정 세션을 관리하는 것이 포함됩니다.
이 예는 하나의 호스트에 있는 두 개의 memcached 인스턴스를 기반으로 합니다. 이 예에 사용된 직렬화 방법은 kryo입니다.

이번에는 고정 세션을 사용하여 관리합니다. 비고정 세션은 직접 구성하거나 다음에 추가할 수 있습니다. 구성은 다음과 같습니다.

<code><Context>  
  <span>...</span><Manager   className=<span>"de.javakaffee.web.msm.MemcachedBackupSessionManager"</span>  memcachedNodes=<span>"n1:localhost:11211,n2:localhost:11311"</span>        sticky=<span>"false"</span> sessi>"false"</span>        lockingMode=<span>"auto"</span>        requestUriIgnorePattern=<span>".*\.(ico|png|gif|jpg|css|js)$"</span>transcoderFactoryClass=<span>"de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"</span>/>
</Context>  </code>
로그인 후 복사
Nginx 설치, 구성, 시작

공식 홈페이지에서 안정 버전을 다운로드하세요.

압축 해제 후 디렉터리로 들어가세요.

<code>start nginx  <span>// 启动</span></code>
로그인 후 복사
이렇게 nginx 서비스가 시작됩니다. 작업 관리자를 열고 nginx.exe 프로세스를 확인하면 매우 작은 시스템 리소스를 차지하는 두 개의 프로세스가 표시됩니다. 그런 다음 브라우저를 열고 http://127.0.0.1/을 입력하면 매우 친숙한 nginx 환영 페이지가 표시됩니다.

<code>nginx <span>-s</span> stop          <span>// 停止nginx</span>
nginx <span>-s</span> reload       <span>// 重新加载配置文件</span>
nginx <span>-s</span> quit          <span>// 退出nginx</span></code>
로그인 후 복사
기본적으로 Nginx는 기본 구성 파일 nginx.conf를 사용하며 다음과 같이 수정합니다.

<code><span>#user  nobody;</span><span>worker_processes</span><span>2</span>;

<span>#error_log  logs/error.log;</span><span>#error_log  logs/error.log  notice;</span><span>#error_log  logs/error.log  info;</span><span>#pid        logs/nginx.pid;</span><span>events</span> {
    <span>worker_connections</span><span>1024</span>;
}


<span>http</span> {
    <span>include</span>       mime.types;
    <span>default_type</span>  application/octet-stream;

    <span>log_format</span>  main  <span>'<span>$remote_addr</span> - <span>$remote_user</span> [<span>$time_local</span>] "<span>$request</span>" '</span><span>'<span>$status</span><span>$body_bytes_sent</span> "<span>$http_referer</span>" '</span><span>'"<span>$http_user_agent</span>" "<span>$http_x_forwarded_for</span>"'</span>;

    <span>access_log</span>  logs/access.log  main;

    <span>sendfile</span><span>on</span>;
    <span>#tcp_nopush     on;</span><span>#keepalive_timeout  0;</span><span>#keepalive_timeout  65;</span><span>#gzip  on;</span><span>upstream</span> localhost {  
        <span>#ip_hash;</span><span>server</span> localhost:<span>8080</span> weight=<span>1</span>;  
        <span>server</span> localhost:<span>8081</span> weight=<span>1</span>;
    }

    <span>server</span> {
        <span>listen</span><span>80</span>;
        <span>server_name</span>  localhost;
        <span>charset</span> utf-<span>8</span>;

        <span>#charset koi8-r;</span><span>#access_log  logs/host.access.log  main;</span><span>location</span> / {
            <span>root</span>   html;
            <span>index</span>  index.html index.htm;
            <span>proxy_pass</span><span>http://localhost</span>;  
            <span>proxy_connect_timeout</span><span>2s</span>;
            <span>proxy_set_header</span> X-Real-IP <span>$remote_addr</span>;
            <span>proxy_set_header</span> X-Forwarded-For <span>$proxy_add_x_forwarded_for</span>;
        }

        <span>location</span><span>~ ^/(WEB-INF)/</span> {   
        <span>deny</span> all;   
        }   


        <span>#error_page  404              /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span><span>error_page</span><span>500</span><span>502</span><span>503</span><span>504</span>  /50x.html;
        <span>location</span> = /50x.html {
            <span>root</span>   html;
        }

        <span># proxy the PHP scripts to Apache listening on 127.0.0.1:80</span><span>#</span><span>#location ~ \.php$ {</span><span>#    proxy_pass   http://127.0.0.1;</span><span>#}</span><span># pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000</span><span>#</span><span>#location ~ \.php$ {</span><span>#    root           html;</span><span>#    fastcgi_pass   127.0.0.1:9000;</span><span>#    fastcgi_index  index.php;</span><span>#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;</span><span>#    include        fastcgi_params;</span><span>#}</span><span># deny access to .htaccess files, if Apache's document root</span><span># concurs with nginx's one</span><span>#</span><span>#location ~ /\.ht {</span><span>#    deny  all;</span><span>#}</span>
    }




    <span># another virtual host using mix of IP-, name-, and port-based configuration</span><span>#</span><span>#server {</span><span>#    listen       8000;</span><span>#    listen       somename:8080;</span><span>#    server_name  somename  alias  another.alias;</span><span>#    location / {</span><span>#        root   html;</span><span>#        index  index.html index.htm;</span><span>#    }</span><span>#}</span><span># HTTPS server</span><span>#</span><span>#server {</span><span>#    listen       443 ssl;</span><span>#    server_name  localhost;</span><span>#    ssl_certificate      cert.pem;</span><span>#    ssl_certificate_key  cert.key;</span><span>#    ssl_session_cache    shared:SSL:1m;</span><span>#    ssl_session_timeout  5m;</span><span>#    ssl_ciphers  HIGH:!aNULL:!MD5;</span><span>#    ssl_prefer_server_ciphers  on;</span><span>#    location / {</span><span>#        root   html;</span><span>#        index  index.html index.htm;</span><span>#    }</span><span>#}</span>}
</code>
로그인 후 복사
테스트

로그인 페이지


성공 페이지
성공1

Success2

Tomcat(8080)을 끈 후 Tomcat(8081)을 호출하여 Success2를 표시합니다.

memcached 서비스가 닫히면 디스플레이가 정상입니다.


참고

Nginx+Memcached+Tomcat 클러스터 구성 실습(Sticky Session)

동일한 Windows 시스템에서 여러 Memcached 서비스 시작
MSM 소개 및 사용–Memcached_Session_Manager
memcached-세션-관리자 구성
Windows에서 Nginx 설치 및 구성

저작권 표시: 이 기사는 블로거의 원본 기사이므로 블로거의 허가 없이 복제할 수 없습니다.

위 내용은 관련 측면을 포함하여 Nginx+Memcached+Tomcat 클러스터 구성을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!