본 장에서는 tbJDBC에서 제공하는 Failover 기능과 로드 밸런싱(Load balancing) 기능을 설명한다.
tbJDBC는 일반 애플리케이션 프로그램 환경이나 TAC 환경에서 최초 연결을 맺을 때 또는 임의의 작업을 수행하는 중에 연결이 끊어졌을 때, 일부 자원들을 자동으로 복원해주는 기능을 제공한다. 이를 Failover라고 한다.
Failover 기능을 사용하려면 DriverManager.getConnection()의 URL을 description 형태로 작성하고 FAILOVER를 설정하여 사용한다.
FAILOVER 항목에 설정할 수 있는 값은 다음과 같다.
이전 버전에서 지원하던 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");
Failover SESSION 이상의 모드인 경우 연결 복원 과정에서 재시도 횟수를 다음의 속성을 통해 지정할 수 있다.
다음의 연결 속성을 이용하여 실제로 장애가 발생하였더라도 클라이언트에서 연결 종료를 감지하지 못해 무한정 대기하는 경우를 회피할 수 있다.
각 연결 속성별 설명 및 사용 방법은 “제3장 tbJDBC의 사용”의 “3.2. Connection Properties”를 참고한다.
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 기능과 혼용하여 설정할 수 있다.