자바 응용 서버 의 tomcat 세 션 복사 클 러 스 터 설정 예제 상세 설명
예제:tomcat cluster 구성 요 소 를 사용 하여 tomcat 의 세 션 복사 클 러 스 터 를 정의 합 니 다.
환경 설명
명칭.
ip 주소
포트
에이전트 Nginx
192.168.0.41
80
응용 서비스 tomcatA
192.168.0.42
8080
응용 서비스 tomcatB
192.168.0.43
8080
테스트 페이지 준비 및 tomcatA 설정
알림:my app 의 내용 및 파일 디 렉 터 리 구조 입 니 다.
알림:위 설정 은/myapp 의 응용 프로그램 을 배치 하 는 것 을 표시 합 니 다.파일 경 로 는/webapps/myapp 이 고 engine 에 jvmRoute="tomcatA"를 설정 합 니 다.
알림:cluster 설정 은 위 에 빨 간 상 자 를 치 는 위 치 를 주의해 야 합 니 다.공식 설정 문서 에서 뒤의
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/myapp" docBase="/webapps/myapp" reloadable=""/>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="192.168.0.42"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
</Host>
</Engine>
</Service>
</Server>
우리 에 게 정 의 된 응용 수정 기 웹.xml 에알림:웹.xml 설정 파일 에 대해 서 는/etc/tomcat/에서 자신의 응용 디 렉 터 리 구조 로 복사 한 다음 주석 이 없 는 위치 에
tomcatB 에 대해 서도 같은 파일 을 준비 해 야 합 니 다.구분 하기 위해 서 는 index.jsp 를 tomcatB 로 수정 합 니 다.설정 파일 에서 수신 기의 감청 주소 와 jvmRoute 의 값 을 수정 해 야 합 니 다.다른 것 은 변 하지 않 을 수 있 습 니 다.
이 tomcat 세 션 에서 클 러 스 터 를 복사 하면 설정 합 니 다.사실은 위의 설정 파일 을 보면 크게 볼 수 있 습 니 다.tomcat 의 세 션 복사 클 러 스 터 는 멀티캐스트 주소 로 통신 하 는 것 입 니 다.하나의 요청 은 클 러 스 터 의 기점 에 관 계 없 이 멀티캐스트 통신 을 통 해 세 션 정 보 를 멀티캐스트 방식 으로 다른 구성원 에 게 보 냅 니 다.수신 기의 주 소 를 네트워크 카드 로 주 소 를 설정 하 는 것 을 권장 합 니 다.다음은 tomcatA,tomcatB 를 시작 한 다음 로그 가 초기 클 러 스 터 에 성 공 했 는 지,클 러 스 터 수신 기의 주 소 를 받 았 는 지 확인 합 니 다.
알림:여기 주의 하 세 요.만약 에 tomcat 의 시작 이 매우 느 리 면 8005 포트 가 오래 기 다 려 야 일어 납 니 다.rng-tools 를 설치 하고 rngd 를 시작 하면 tomcat 의 시작 을 가속 화 할 수 있 습 니 다.
알림:tomcatA 로그 에서 tomcatB 의 수신 기 주소 와 포트 를 볼 수 있다 면 tomcatA 가 tomcatB 에 인식 되 었 음 을 나타 내 고 tomcatB 를 클 러 스 터 구성원 으로 클 러 스 터 에 가입 한 것 을 나타 낸다.마찬가지 로 tomcatB 로그 에서 tomcatA 의 수신 기 주소 와 포트 를 볼 수 있 습 니 다.tomcatB 가 tomcatA 를 식별 하고 클 러 스 터 에 넣 었 음 을 나타 냅 니 다.
nginx 부하 균형 백 엔 드 tomcat 서버 두 대 설정
알림:여기 서 주요 반대 가 필요 할 때 반대 URI 와 뒤에 proxypass 뒤의 URI 가 같 습 니 다.그렇지 않 으 면 프 록 시 후 세 션 복사 클 러 스 터 가 유효 하지 않 습 니 다.
인증:nginx 의 프로필 문법 을 검사 하고 nginx 를 시작 하여 192.168.0.41/my app 에 접근 하여 어떤 변화 가 있 는 지 확인 합 니 다.
알림:192.168.0.41/my app 에 접근 할 때 sessionid 는 변 하지 않 았 고 변 화 된 것 은 뒤의 jvmRoute 의 값 과 페이지 의 값 만 있 습 니 다.이것 은 우리 가 nginx 를 방문 할 때 nginx 도 자신의 폴 링 알고리즘 을 바탕 으로 요청 을 백 엔 드 로 예약 했다 는 것 을 의미한다.첫 번 째 방문 할 때 백 엔 드 server 는 set-cookie 의 첫 번 째 부분 에 응답 하고 현재 방문 한 페이지 의 session 정 보 를 클 라 이언 트 에 응답 하 며 두 번 째 방문 클 라 이언 트 는 지난번 에 해당 하 는 쿠키 를 가 져 와 서 방문 할 것 이다.이때 백 엔 드 서버 는 클 라 이언 트 가 보 낸 쿠키 를 받 은 다음 자신의 메모리 에서 해당 하 는 session 정 보 를 찾 습 니 다.백 엔 드 server 는 session 정 보 를 멀티캐스트 통신 방식 으로 클 라 이언 트 의 다른 노드 에 공유 하기 때문에 두 번 째 는 그 server 에 배치 되 든 대응 하 는 server 는 이 클 라 이언 트 가 처음으로 서버 에 방문 하 는 session 정 보 를 가지 고 있 습 니 다.그래서 우리 가 두 번 째 로 방 문 했 을 때 sessionid 는 서버 의 sessionid 를 처음 방 문 했 습 니 다.뒤의 tomcatB 는 tomcatB 라 는 jvmRoute 가 처리 한 이번 요청 을 표시 합 니 다.
총결산
자바 응용 서버 의 tomcat 세 션 복제 클 러 스 터 설정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 tomcat 세 션 복제 클 러 스 터 설정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.