제9장 Failover와 Load balancing

내용 목차

9.1. Failover
9.1.1. Failover 기능 설정
9.1.2. Failover 동작과 관련된 연결 속성
9.2. 로드 밸런싱

본 장에서는 tbJDBC에서 제공하는 Failover 기능과 로드 밸런싱(Load balancing) 기능을 설명한다.

tbJDBC는 일반 애플리케이션 프로그램 환경이나 TAC 환경에서 최초 연결을 맺을 때 또는 임의의 작업을 수행하는 중에 연결이 끊어졌을 때, 일부 자원들을 자동으로 복원해주는 기능을 제공한다. 이를 Failover라고 한다.

Failover 기능을 사용하려면 DriverManager.getConnection()의 URL을 description 형태로 작성하고 FAILOVER를 설정하여 사용한다.

FAILOVER 항목에 설정할 수 있는 값은 다음과 같다.

설정값설명
NONEFailover 기능을 비활성화 한다. (기본값)
SESSION연결에 실패했을 때, 다음 노드로 재접속을 시도하여 연결을 복원한다.
CURSOR

이 옵션은 SESSION 복원을 포함하며, 사용중이던 java.sql.ResultSet을 복원한다.

복원 가능한 경우는 다음과 같다.

  • SELECT 문장을 직접 수행하는 경우

  • ResultSet 타입이 TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE인 경우

  • ResultSet concurrency 모드가 CONCUR_READ_ONLY인 경우

  • 재사용 가능한 파라미터만 사용한 경우(Reader, Stream 등의 휘발성 데이터나 또는 varchar 타입 최대 크기를 초과하는 String 데이터가 존재하면 복구 불가)

참고

이전 버전에서 지원하던 Failover 옵션 OFF는 NONE으로 ON은 SESSION으로 동작한다.

다음은 Failover 기능을 활성화하는 예이다. svr1로 연결이 실패하면 자동으로 svr2로 연결을 시도한다. 단, 모든 서버에 대한 연결 시도가 실패할 때는 에러가 발생한다.

Connection conn = 
    DriverManager.getConnection("jdbc:tibero:thin:@(description=(failover=session)" +
                                "(address_list="+
                                "(address=(host=svr1)(port=8629))"+
                                "(address=(host=svr2)(port=7629))"+
                                ")(DATABASE_NAME=TACUAC))", "tibero", "tmax");

tbJDBC는 일반 애플리케이션 프로그램 환경이나 TAC 환경에서 여러 개의 노드로 사용자를 분산시켜 데이터베이스 서버의 효율성을 향상시키기 위한 기능을 제공한다. 이를 로드 밸런싱(Load balancing)라고 한다. 로드 밸런싱 기능을 사용하려면 DriverManager.getConnection()의 URL을 description 형태로 작성하고 (load_balance=on)만 추가하면 된다.

다음은 로드 밸런싱 기능을 활성화하는 예로 최초 연결을 맺을 때 내부 로직에 의해 svr1과 svr2 사용자로 분산시켜 연결을 맺는다.

Connection conn = 
    DriverManager.getConnection("jdbc:tibero:thin:@((load_balance=on)" +
                                "(address_list="+
                                "(address=(host=svr1)(port=8629))"+
                                "(address=(host=svr2)(port=7629))"+
                                ")(DATABASE_NAME=TACUAC))", "tibero", "tmax");

참고

로드 밸런싱 기능은 Failover 기능과 혼용하여 설정할 수 있다.