이번에는 주로 win7 64에서의 동작을 시연합니다.
웹 애플리케이션 빌드
간단 웹 애플리케이션 구성에 대한 자세한 내용은 여기에서 설명하지 않습니다. 내 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
다음 3개의 jar 패키지가 필요합니다.
memcached-session-manager-version.jar,
memcached-session-manager-tc7-version.jar,
spymemcached-version.jar
<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>
<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>
- 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
여기에는 주로 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>
<code>start nginx <span>// 启动</span></code>
<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>
<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
memcached 서비스가 닫히면 디스플레이가 정상입니다.
동일한 Windows 시스템에서 여러 Memcached 서비스 시작
MSM 소개 및 사용–Memcached_Session_Manager
memcached-세션-관리자 구성
Windows에서 Nginx 설치 및 구성
위 내용은 관련 측면을 포함하여 Nginx+Memcached+Tomcat 클러스터 구성을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.