[Apache+ Tomcat] TCP를 통한 톰캣 세션클러스터링(클라우드 환경)

2024. 8. 24. 00:52·오픈소스/Apache + Tomcat
목차
  1. Apache 작업
  2. Tomcat 작업
728x90
반응형

Apache 작업

1) workers_jk.properties 수정

worker.list=load_balancer
worker.load_balancer.type=lb
worker.load_balancer.balance_workers=was_01,was_02
worker.load_balancer.sticky_session=true

#was1
worker.was_01.type=ajp13
worker.was_01.host=IP
worker.was_01.port=8090
worker.was_01.lbfactor=5

#was2
worker.was_02.type=ajp13
worker.was_02.host=IP
worker.was_02.port=8090
worker.was_02.lbfactor=1

 

2) httpd-vhosts.conf 수정

 <VirtualHost *:80>
      DocumentRoot "/data/apache2.4/htdocs"
      ServerName test.com
      CustomLog "|/data/apache2.4/bin/rotatelogs /data/apache2.4/logs/access_%Y_%m_%d.log 86400 +540" common env=!exceptlist
      JkMount /* load_balancer
 
      Header set Access-Control-Allow-Origin "*"
      Header set Content-Security-Policy "default-src 'unsafe-inline' 'unsafe-eval' * data: ;"
  </VirtualHost>

 

 

 

 

Tomcat 작업

1) server.xml 수정

<Engine name="Catalina" defaultHost="localhost" > 지우고 아래부터 삽입

 

#was1 server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="was_01">

<Cluster

channelSendOptions="8"

channelStartOptions="3"

className="org.apache.catalina.ha.tcp.SimpleTcpCluster">


<Manager

className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"

        />

<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>


</Sender>

<!-- was server1 information-->
<Receiver     
      address="was1_IP"       
      autoBind="0"    
      className="org.apache.catalina.tribes.transport.nio.NioReceiver"
      maxThreads="6"     
      port="4001"     
      selectorTimeout="5000"

/> 

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor" staticOnly="true"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">

 <!-- was server2 information-->
  <Member 
         className="org.apache.catalina.tribes.membership.StaticMember"    
          port="4001"
          host="was2_IP"
          uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2}" 
  />
   
</Interceptor>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor" />

</Channel>

<Valve     
  className="org.apache.catalina.ha.tcp.ReplicationValve"    
  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"
/>

<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>

 

 

#was2 server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="was_02">

  <Cluster    
  channelSendOptions="8"  
  channelStartOptions="3"   
  className="org.apache.catalina.ha.tcp.SimpleTcpCluster">

  <Manager  
  className="org.apache.catalina.ha.session.DeltaManager"     
  expireSessionsOnShutdown="false"     
  notifyListenersOnReplication="true"    
  />

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
         </Sender>
         
  <!-- was server2 information-->
          <Receiver
                  address="was2_IP" 
                  autoBind="0"
                  className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                  maxThreads="6"
                  port="4001"
        />

/> 
Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor" staticOnly="true"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>


<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
 
 <!-- was server1 information-->
 <Member
         className="org.apache.catalina.tribes.membership.StaticMember"    
          port="4001"
          host="was1_IP"
          uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}"  />

</Interceptor>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor" />

</Channel>

<Valve     
  className="org.apache.catalina.ha.tcp.ReplicationValve"    
  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"
/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>

 

 

*설명

port: tomcat 여러대 간의 세션 공유할 port 지정 (방화벽 Open해줘야함 )
uniqueId: tomcat의 고유 ID 

728x90
728x90

'오픈소스 > Apache + Tomcat' 카테고리의 다른 글

[Apache+ Tomcat] mod_jk 모듈을 통한 WEB/WAS 연동  (0) 2024.08.22
[Apache + Tomcat] Proxy 모듈 통한 WEB/WAS 연동  (0) 2024.08.22
  1. Apache 작업
  2. Tomcat 작업
'오픈소스/Apache + Tomcat' 카테고리의 다른 글
  • [Apache+ Tomcat] mod_jk 모듈을 통한 WEB/WAS 연동
  • [Apache + Tomcat] Proxy 모듈 통한 WEB/WAS 연동
이코딩
이코딩
이코딩의 자동화 연구소 블로그입니다.
이코딩의 자동화 연구소이코딩의 자동화 연구소 블로그입니다.
  • 이코딩
    이코딩의 자동화 연구소
    이코딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (100)
      • IT (20)
        • IT 기초 지식 (13)
        • 네트워크 기초 (2)
        • 클라우드 (4)
      • DevOps (15)
        • Ansible (2)
        • Terraform (12)
        • Kubernetes (1)
      • Cloud (11)
        • NCP (NAVER Cloud Platform) (4)
        • NHN (NHN Cloud) (5)
        • AWS (Amazon Web Service) (2)
      • OS (1)
        • Linux (36)
        • Window (3)
      • 언어 (6)
        • JAVA (3)
        • Python (3)
      • 문서 작업 (2)
        • EXCEL (2)
      • 오픈소스 (6)
        • Zabbix (3)
        • Apache + Tomcat (3)
  • 반응형
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    라우팅 테이블
    NHN Cloud
    Linux
    Apache
    Java
    Terraform
    AWS
    테라폼업앤러닝
    window
    CentOS
    Python
    tomcat
    Routing Table
    ansible
    cloud
    NCP
    sftp
    zabbix
    클라우드
    가상화
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이코딩
[Apache+ Tomcat] TCP를 통한 톰캣 세션클러스터링(클라우드 환경)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.