>  기사  >  백엔드 개발  >  Nginx Tomcat Memcached 클러스터

Nginx Tomcat Memcached 클러스터

WBOY
WBOY원래의
2016-07-30 13:30:56989검색


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; 
        }
    }

3. tomcat + memcached를 사용하면 세션 복제 및 동기화를 달성할 수 있습니다.

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 디렉토리에 넣고 에서 각 tomcat 구성 파일 tomcatconfcontext.xml을 수정합니다..< /context>태그 사이에 다음 코드를 추가합니다:

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을 수정하고 추가합니다. ... 태그 사이에 다음 코드를 추가하세요.
(두 Tomcat 구성의 memecachedNodes는 모두 n1:* 입니다.)
    <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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.