Nginx + Tomcat + Memcached 클러스터는 최소한 두 가지 측면을 고려해야 합니다.
1. 로드 밸런싱을 달성하는 방법은 무엇입니까?
2. 세션 복제 및 동기화는 어떻게 구현하나요?
본 글은 인터넷에서 관련 자료를 모아 창 아래 Nginx + Tomcat + Memcached 클러스터를 구축하는 과정을 요약하면 다음과 같습니다.
1. 개발 환경
1. nginx 버전: 1.8.0
Tomcat 버전: 7.0.55
3. memcached 버전: 1.4.13
4. 세션 복제 동기화를 위해 memcache-session-manager를 사용하세요. 최신 버전: 1.6.3
5. >
2. Nginx + Tomcat은 로드 밸런싱을 달성합니다1. nginx 및 tomcat을 다운로드하고 설치합니다.
자세한 내용은 여기서 다루지 않겠습니다. nginx 및 tomcat
2. nginx 구성
nginx의 기본 구성 파일인 D:nginx-1.8.0confnginx.conf를 엽니다. 주로 프록시 전달 서버 IP 및 포트를 수정합니다. 가중치는 서버 가중치, 숫자가 높을수록 숫자가 높을수록 액세스된다는 의미입니다. 기회가 더 커집니다:
upstream local_tomcat { server localhost:18080 weight=1; server localhost:18081 weight=1; } server { listen 80; location / { root html; index index.html index.htm; proxy_pass http://local_tomcat; } }
Tomcat 세션 복제 및 동기화 문제는 일반적으로 memcached를 사용하거나 Cookie 기반 Session Sticky 기능을 구현하는 데 사용되는 Nginx 확장 모듈인 nginx_upstream_jvm_route를 사용하는 것입니다. Tomcat이 너무 많으면 세션 동기화가 권장되지 않습니다. 서버 간 세션 동기화는 리소스를 소비하며 높은 동시성 환경에서는 세션 폭풍이 쉽게 발생할 수 있습니다. 귀하의 응용 상황에 따라 세션 솔루션을 합리적으로 채택하십시오.
다음은 세션 관리를 위한 memcached(memcache-session-manager) 사용을 소개합니다
1. memcached 다운로드 및 설치(생략)
2. 관련 jar 패키지
다운로드해야 할 jar 패키지가 많이 있습니다. 각 jar의 버전은 틀릴 수 없습니다. 다운로드해야 하는 jar 패키지의 전체 세트를 제공했습니다(테스트를 거쳐 사용 가능). ) 다운로드가 필요한 경우 클릭하세요. 링크 다운로드.
3. 세션 공유 구성
좋아, 위의 jar 패키지를 tomcat/lib 디렉토리에 넣고
a. tomcat 구성
tomcatconfserver.xml을 수정합니다. 로컬 win7 시스템에서 두 개의 tomcat을 다운로드했기 때문에 포트 충돌을 피해야 합니다. tomcat-node1을 예로 들어 주로 다음 사항을 수정합니다. (node2 등)
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="18080" protocol="HTTP/1.1" c redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />tomcatconfcontext.xml을 수정하고 추가합니다.
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">b. 애플리케이션 jsp 수정
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="<span style="color:#FF0000;"><strong>n1:127.0.0.1:11211</strong></span>" sticky="false" sessi lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
Tomcat과 함께 제공되는 예제 프로젝트를 사용하고 있으며 다음 jsp를 D:nginx-1.8.0Tomcattomcat-node1webappsexamplesindex.html
으로 직접 교체합니다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.text.SimpleDateFormat"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Tomcat集群测试</title> </head> <body> <% out.print("["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + "<br/>session id:" + session.getId()); %> </body> </html>4. 테스트
nginx, memcached 및 두 개의 tomcat을 시작하고 브라우저를 사용하여 http://localhost/examples/에 액세스하고 nginx 서버에서 반환된 두 페이지를 비교하여 다음을 찾습니다. 두 포트는 동일하지 않지만 동일한 세션은 Nginx + Tomcat + Memcached 클러스터가 성공적으로 설정되었음을 의미합니다.
참고기사 :
1. http://www.tuicool.com/articles/I7ryYf
2. http://blog.csdn.net/liuzhigang1237/article/details/8880752
3. http://www.cnblogs.com/phirothing/archive/2013/12/05/3459814.html
저작권: 이 글은 해당 블로거의 원본 글이므로 무단 복제할 수 없습니다. 블로거의 허락을 받았습니다.위 내용은 관련 내용을 포함하여 Nginx Tomcat Memcached 클러스터를 소개한 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.