반응형
톰켓을 이용한 클러스터링을 구성을 하게 된다면, 고정되어 있는 서버의 경우 TCP로 설정이 가능하지만,
클라우드 관점에서 스케일 In/Out(동적으로 변화) 작업이 이루어진다면 세션을 관리하기가 어려워진다.
대중적으로 Redis기반의 세션 관리를 많이 구성하고 있었지만,
현재 마리아 디비를 데이터베이스를 사용하고 있는 환경이기 때문에 마리아 디비를 기준으로 설정하였다.
톰켓 8.5의 경우 하위 버전의 경우 org.apache.catalina.session.DataSourceStore
가 없을 수 있으므로,
클래스를 찾을 수 없다고 표시된다면 버전 확인이 필요하다.
- 테이블 생성
create table tomcat_sessions (
session_id varchar(100) not null primary key,
valid_session char(1) not null,
max_inactive int not null,
last_access bigint not null,
app_name varchar(255),
session_data MEDIUMBLOB,
KEY kapp_name(app_name)
);
- conf/context.xml Resource 선언
<Resource name="appjdbc"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.mariadb.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/app"
username="app_id"
password="password"
initialSize="10"
maxTotal="100"
maxIdle="10"
maxWaitMillis ="-1"
removeAbandonedTimeout="300"
validationQuery="SELECT 1"
validationQueryTimeout="1000"
testOnBorrow="true"
timeBetweenEvictionRunsMillis="600000"
/>
- conf/context.xml PersistentManager 설정
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="10">
<!-- Tomcat 8.5.x 이상 -->
<Store className="org.apache.catalina.session.DataSourceStore"
dataSourceName="appjdbc"
sessionAppCol="app_name"
sessionDataCol="session_data"
sessionIdCol="session_id"
sessionLastAccessedCol="last_access"
sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions"
sessionValidCol="valid_session" />
</Manager>
- maxIdleBackup: 세션 저장소 액세스 간격
(https://developpaper.com/question/the-maxidleswap-and-maxidlebackup-properties-of-the-java-tomcat-session-manager/)
참고
#tomcat #session #클러스터링
반응형
'FullStack > 41. WEB.WAS' 카테고리의 다른 글
웹 서비스 성능 개선 - 텍스트 리소스 압축(gzip) 전송 (0) | 2022.02.14 |
---|---|
Apache httpd - Tomcat 연결 끊김(502) 현상 (0) | 2022.02.03 |
톰켓 catalinaout 로그 안 쌓는법 (0) | 2022.01.21 |
[TOMCAT] 톰캣을 이용한 세션 공유 설정(UDP 대신 TCP) (1) | 2022.01.03 |
Tomcat 8.5 JSP 1.8 문법 오류(Lambda) (0) | 2021.09.16 |