Nginx+Tomcat7+Memcached 클러스터 세션 공유
원칙:
주로 memcached-session-manager(이하 msm) 오픈소스 tomcat 플러그인을 사용하여 tomcat의 원래 세션을 변경합니다. 저장 메커니즘 세션의 저장은 분산 캐시 Memcache에 배치되어 세션 공유를 실현합니다.
다운로드
1. nginx 다운로드
2. tomcat7 다운로드(이 글에서는 tomcat7의 세션 공유에 대해 소개합니다. tomcat6인 경우 구성이 실패하므로 jar 패키지, memcached-session-manager-tc6 )
3. memcached 다운로드
위 파일이 압축 패키지에 포함되어 있습니다.
설명
1. 두 Tomcat은 복사된 것이므로 기본적으로 동일하므로 여기서는 자세히 설명하지 않겠습니다.
2. apache-tomcat-7.0.57-2액세스 포트 8081
3. apache-tomcat-7.0.57-3액세스 포트 8082
4. >ROOT의 test.jsp에는 세션에 배치된 값이 있고 키는 name입니다. 반대로 8082에서만 얻을 수 있습니다. 8082에서 이 값을 얻을 수 있으면 세션 공유 구성이 성공한 것입니다. (이 단계에서는 nginx 클러스터 구성이 필요하지 않습니다.)
구성
1. 다음 jar 패키지를 tomcat lib 디렉터리에 넣습니다.
2. context.xml 파일
memcachedNodes에 다음 구성을 추가합니다. 여기서 memcachednode , 여러 노드는 ”,”으로 구분할 수 있습니다(예: :n1:localhost: 11211,n2:localhost:11212
Manager 태그 속성 설명은 아래에 적어두었으니 이해하시면 됩니다. 3. Tomcat -> webapps 여기서는 많이 말하지 않겠습니다. 매우 간단합니다. 4. nginx는 nginx.conf에서 완전히 구성되어 있습니다. 매우 간단합니다. 액세스 시작1. tomcat 두 개를 시작합니다2. nginx가 있는 디스크는 E 드라이브이므로 직접 결정하세요. 3. http://localhost/test.jsp를 방문하세요4. 여러 번 연속해서 새로 고침하세요8081과 8082 모두 Nginx+Tomcat이라는 단어를 출력할 수 있는 경우 ... 등 축하합니다. 구성이 성공했습니다. Manager 태그 속성 설명1.className 필수 클래스 이름: de.javakaffee.web.msm.MemcachedBackupSessionManager2.memcachedNodes 필수 >session 모드는 고정 또는 비고정이며, 기본값은
true이며, 여러
tomcat인 경우 필수입니다. 비고정 4.lockingMode 선택비고정만세션만 사용 사용 시 기본값은 none
none:Never lock session all: session은 요청이 끝날 때까지 잠깁니다auto:
읽기 전용 요청의 경우 session 은 잠기지 않습니다. 읽기 전용이 아닌 요청인 경우 세션
이 잠깁니다uriPattern:< ; regexp>:
는 요청 uri와 일치하며 정규식을 사용하는 쿼리 문자열만 잠깁니다. 5.requestUriIgnorePattern 선택 사항
이 속성은 변경할 수 없습니다. Session 요청에 대한 정규식입니다. css, javascript,
사진 등의 정적 파일을 동일한 Tomcat 및 동일한 애플리케이션
context 제공된 경우 이러한 요청은memcached-session-manager를 통해서도 전달됩니다. 그러나 이러한 요청은 http 세션 내에서 거의 변경되지 않으므로 세션을 트리거할 필요가 없습니다. 지원. 따라서 해당 정적 파일은 Session 백업을 트리거할 필요가 없으며 이 속성 정의를 사용할 수 있습니다. 이 속성은 javaregex 일반 사양을 준수해야 합니다. 예: ".*.(png|gif|jpg|css|js)$"
6.sessionBackupAsync 선택 사항세션을 Memcached에 비동기적으로 저장해야 하는지 여부를 지정합니다. 인. true로 설정하면 backupThreadCount 설정이 false로 설정되면 작동합니다. 🎜>, sessionBackupTimeout에서 설정한 만료 시간이 작동합니다.
7.backupThreadCount 선택 은 비동기식 저장에 사용됩니다세션, (if sessionBackupAsync="true")의 스레드 수입니다. 기본값 은 CPU의 코어 수입니다.
8.sessionBackupTimeout 선택 백업 설정세션 사용된 시간입니다. 작업이 시간을 초과하면 저장이 실패합니다. 이 속성은 sessionBackupAsync="false"인 경우에만 작동합니다. 기본값100ms
확장세션 유효 시간 설정세션 유효 시간 설정은 일반 웹 프로그램과 동일합니다. web.xml에
< 세션 구성>
<세션 시간 초과>10 세션 시간 초과>
session-config >
빨간색 부분은 시간 초과(분)입니다. 참고: 여러 웹 프로그램이 memcached에서 세션을 공유합니다. 시간 초과 구성에 따라 다음 상황이 발생합니다. 1. 설정이 일관되고 만료 시간이 일관됩니다. 2. 여러 웹 프로그램의 세션 유효 시간 설정이 일치하지 않는 경우 설정된 시간 중 가장 짧은 것이 우선합니다. 세션 모니터링web.xml에 다음 코드 추가:<listener> <listener-class> listener.SessionListener (根据自己的包名进行配置) </listener-class> </listener>
public class SessionListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent event) { System.out.println("--------------------------create"); HttpSession session = event.getSession(); } @Override public void sessionDestroyed(HttpSessionEvent event) { System.out.println("--------------------------destroy"); } }
위 내용은 관련 내용을 포함하여 Nginx+Tomcat7(tomcat6)+Memcached 클러스터 세션 공유에 대한 소개입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.