본문 바로가기

IT/Oracle

Oracle UCP(Universal Connection Pool) 기반 로드밸런싱

반응형

Oracle UCP(Universal Connection Pool)를 사용하여 헬스 체크와 연결 복구 기능을 강화할 수 있습니다. UCP는 자동으로 노드의 상태를 확인하고 문제가 있는 노드를 회피합니다.

import oracle.ucp.jdbc.PoolDataSource;
import oracle.ucp.jdbc.PoolDataSourceFactory;

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL("jdbc:oracle:thin:@(DESCRIPTION="
            + "(ADDRESS_LIST="
            + "(LOAD_BALANCE=ON)"
            + "(FAILOVER=ON)"
            + "(ADDRESS=(PROTOCOL=TCP)(HOST=scan1.example.com)(PORT=1521))"
            + "(ADDRESS=(PROTOCOL=TCP)(HOST=scan2.example.com)(PORT=1521))"
            + "(ADDRESS=(PROTOCOL=TCP)(HOST=scan3.example.com)(PORT=1521))"
            + ")"
            + "(CONNECT_DATA=(SERVICE_NAME=your_service_name)))");

// 헬스 체크 인터벌 설정 (예: 5초)
pds.setValidateConnectionOnBorrow(true);
pds.setSecondsToTrustIdleConnection(5);

// 로드 밸런싱 설정
pds.setConnectionPoolName("UCP_POOL");
pds.setInitialPoolSize(5);
pds.setMinPoolSize(5);
pds.setMaxPoolSize(20);
  • setValidateConnectionOnBorrow: 풀에서 연결을 가져올 때 헬스 체크를 수행하여 유효하지 않은 연결을 자동으로 제거합니다.
  • setSecondsToTrustIdleConnection: 5초마다 연결 상태를 확인하여, 문제가 있는 연결을 회피하도록 합니다.
  • setMinPoolSize  setMaxPoolSize: 연결 풀 크기를 설정하여 로드 밸런싱을 수행합니다.

 

반응형