내용 목차
본 장에서는 Tibero Cluster Manager의 기본 개념과 동작 모드, 멤버십 관리, 환경설정 및 실행 방법을 설명한다.
Tibero Cluster Manager(이하 TBCM)는 클러스터(Cluster)의 가용성을 높이고 관리의 편의를 지원하는 Tibero의 부가 기능이다.
TBCM은 클러스터에 속한 전체 노드의 Tibero 서버의 동작 상태를 지속적으로 파악한다. 구체적으로 클러스터를 구성하는 TBCM의 노드들은 네트워크 또는 공유 디스크를 통해 주기적으로 자신이 살아 있음을 알리는 heartbeat 메시지를 서로 주고받으면서 주변 노드들의 상태를 파악한다. 클러스터의 특정 노드에서 동작하고 있는 Tibero 서버가 비정상적인 경우에는 TBCM이 감지하여 클러스터의 멤버십 구성을 자동으로 변경한다. 즉, 전체 클러스터의 서비스가 중단되지 않도록 하기 위해서이다.
TBCM의 동작 모드는 다음과 같이 두 가지로 구성된다.
TBCM에서 멤버십(Membership)은 지정된 클러스터 파일을 통해 자동으로 관리된다.
클러스터 구성에서 최초로 실행된 TBCM 데몬은 마스터 역할을 수행하며 클러스터 멤버십 구성을 관리한다. 이후 실행되는 TBCM 데몬들은 동작 중인 클러스터 멤버십에 자동으로 참여할 수 있다. 클러스터 운영 도중에 마스터 역할을 맡고있는 TBCM 데몬에 문제가 생기는 경우에는 다른 TBCMUPCM 데몬이 마스터 역할을 넘겨받아 멤버십 관리를 수행한다.
TBCM은 Tibero와 환경변수 및 환경설정 파일을 공유한다. 따라서 TB_HOME, TB_SID 환경변수를 설정하고 TBCM을 사용하기 위한 초기화 파라미터를 $TB_SID.tip 파일에 설정해야 한다.
환경변수를 설정하는 방법은 다음과 같다.
$TB_HOME
Tibero가 설치된 경로를 지정한다.
TB_HOME=/home/tibero/tibero5
$TB_SID
노드를 식별할 수 있는 ID를 지정한다. 각 노드는 서로 다른 값을 가져야 한다.
TB_SID=tac
TBCM을 사용하기 위해서는 $TB_SID.tip 환경설정 파일에 초기화 파라미터를 설정해야 한다.
다음은 TBCM의 동작 모드별로 TBCM의 사용 환경을 설정하는 예이다.
ACTIVE_SHARED 모드
<$TB_SID.tip>
# 필수 입력 항목 CM_CLUSTER_MODE=ACTIVE_SHARED CM_PORT=6000 LOCAL_CLUSTER_ADDR=192.168.1.1 LOCAL_CLUSTER_PORT=8000 CM_FILE_NAME=/path/to/cm/file # 선택 입력 항목 CM_NAME=node1 CM_TIME_UNIT=10 CM_HEARTBEAT_EXPIRE=300 CM_WATCHDOG_EXPIRE=200 CM_DOWN_CMD=/path/to/cm_down_cmd.sh LOCAL_CLUSTER_VIP=192.168.100.1 LOCAL_CLUSTER_NIC=eth0 LOCAL_CLUSTER_VIP_NETMASK=255.255.255.0 LOCAL_CLUSTER_VIP_BROADCAST=192.168.100.255 LOG_LVL_CM=2 CM_LOG_DEST=/path/to/log/cm/ CM_LOG_FILE_SIZE=10485760 CM_LOG_TOTAL_SIZE_LIMIT=4294967296
ACTIVE_REPLICATION 모드
다음은 코디네이터 노드의 환경설정 예이다.
<$TB_SID.tip>
# 필수 입력 항목 CM_CLUSTER_MODE=ACTIVE_REPLICATION CM_PORT=6000 LOCAL_CLUSTER_ADDR=192.168.1.1 CM_FILE_NAME=/path/to/cm/file CM_COORDINATOR_MODE=Y # 선택 입력 항목 CM_NAME=coordinator CM_TIME_UNIT=10 CM_HEARTBEAT_EXPIRE=300 LOG_LVL_CM=2 CM_LOG_DEST=/path/to/log/cm/ CM_LOG_FILE_SIZE=10485760 CM_LOG_TOTAL_SIZE_LIMIT=4294967296
ACTIVE_REPLICATION 모드
다음은 Worker 노드의 환경설정에 대한 예이다.
<$TB_SID.tip>
# 필수 입력 항목 CM_CLUSTER_MODE=ACTIVE_REPLICATION CM_PORT=7000 LOCAL_CLUSTER_ADDR=192.168.1.2 CM_FILE_NAME=/path/to/cm/file CM_COORDINATOR_NAME=coordinator@192.168.1.1:6000 # 선택 입력 항목 CM_NAME=worker1 CM_TIME_UNIT=10 CM_HEARTBEAT_EXPIRE=300 CM_DOWN_CMD=/path/to/cm_down_cmd.sh LOCAL_CLUSTER_VIP=192.168.100.1 LOCAL_CLUSTER_NIC=lan1 LOCAL_CLUSTER_VIP_NETMASK=255.255.255.0 LOCAL_CLUSTER_VIP_BROADCAST=192.168.100.255 LOG_LVL_CM=2 CM_LOG_DEST=/path/to/log/cm/ CM_LOG_FILE_SIZE=10485760 CM_LOG_TOTAL_SIZE_LIMIT=4294967296
다음은 TBCM를 사용하기 위해 $TB_SID.tip 환경설정 파일에 설정할 수 있는 초기화 파라미터에 대한 설명이다.
초기화 파라미터 | 설명 |
---|---|
CM_CLUSTER_MODE | 필수 입력 항목으로 TBCM의 동작 모드를 설정한다. 다음의 값 중에서 하나를 선택하여 설정할 수 있다.
|
CM_PORT | 필수 입력 항목으로 TBCM 데몬에서 접속을 받는 용도로 사용하는 포트 번호이다. (기본값: LISTENER_PORT + 3) |
CM_FILE_NAME | 필수 입력 항목으로 현재 동작 중인 클러스터의 상태를 저장하는 TBCM 클러스터 파일의 경로명을 설정한다. TBCM 클러스터 파일은 tbcm -c 명령어로 생성된다. 자세한 내용은 “9.6. TBCM 실행”을 참고한다. TBCM의 동작 모드에 따라 TBCM 클러스터 파일의 경로명을 설정하는 방법은 다음과 같다.
|
LOCAL_CLUSTER_ADDR | 필수 입력 항목으로 각각의 노드에서 TBCM 데몬 간의 통신을 위해 사용하는 개인 IP(Private IP) 주소를 설정한다. TBCM 데몬 간의 통신뿐만 아니라 클러스터를 구성하는 Tibero 서버 간의 통신(또는 클러스터를 구성하는 Tibero MMDB 서버 간의 통신)을 위해서도 사용된다. |
LOCAL_CLUSTER_PORT | 클러스터를 구성하는 Tibero 서버 간의 통신(또는 클러스터를 구성하는 Tibero MMDB 서버 간의 통신)을 위해 사용되는 포트 번호를 설정한다. |
CM_NAME | 클러스터에서 각각의 노드를 구분하기 위해 노드 식별 이름에서 사용될 접두사를 설정한다. 생략하면 기본값은 tbcm으로 설정된다. 노드 식별 이름은 다음과 같은 형태로 설정한다. [노드 이름]@[IP 주소]:[포트 번호]
예를 들어 다음과 같이 설정이 된 경우 CM_NAME=node1 LOCAL_CLUSTER_ADDR=192.168.1.1 CM_PORT=8000 해당 노드의 식별 이름은 "node1@192.168.1.1:8000"이 된다. |
CM_TIME_UNIT | TBCM에서 사용하는 디폴트 시간 단위(1tick)를 설정한다. TBCM은 단위 시간마다 자신의 노드에 설치된 Tibero 서버와 다른 노드의 현재 상태를 확인한다. 시간은 0.1초 단위로 설정한다. (기본값: 10(= 1초)) |
CM_HEARTBEAT_EXPIRE | heartbeat의 제한 시간을 설정한다. (기본값: 30ticks) 본 초기화 파라미터로 설정된 시간 동안 heartbeat이 전달 되지 않는 노드가 있는 경우 다른 노드의 TBCM 데몬은 해당 노드를 장애 상태로 판단한다. TBCM의 동작 모드에 따라 heartbeat의 제한 시간을 설정하는 방법은 다음과 같다.
|
CM_WATCHDOG_EXPIRE | ACTIVE_SHARED 모드의 경우 디스크 I/O 장애 등으로 인해 TBCM 데몬의 동작이 멈출 수 있다. 정상적인 다른 노드에서는 비정상적인 노드의 TBCM 데몬이 heartbeat을 보내지 못하기 때문에 비정상적인 노드를 시스템 중단 상태라고 판단하고 해당 노드의 Tibero 서버를 제외하고 새로운 멤버십 구성을 하게 된다. 만약 비정상적인 노드의 Tibero 서버가 여전히 공유 디스크를 계속 이용하여 작업을 수행 중이라면 다른 노드의 멤버십 상태와 불일치가 발생하게 된다. 이로 인해 데이터베이스의 일관성이 문제가 된다. 이러한 현상을 해결하기 위해서 TBCM은 Watchdog이라는 기능을 제공한다. 본 초기화 파라미터에 설정된 시간 동안 TBCM 데몬이 반응이 없을 경우 해당 노드의 Tibero 서버는 동작을 자동으로 멈추고 셧다운(shutdown)을 한다. 예를 들어 (기본값: 25ticks) |
CM_DOWN_CMD | 클러스터를 구성하는 노드 간의 통신에 사용되는 interconnect 네트워크의 연결이 끊어진 경우에는 Tibero의 서비스가 중단되는 현상이 발생할 수 있는데 이를 split brain 현상이라고 한다. TBCM은 split brain 현상이 발생했는지를 감시한다. split brain 현상이 발생했을 때 문제가 되는 노드의 Tibero 서버를 강제로 종료시킨다. 이를 통해 나머지 노드는 서비스를 지속적으로 제공할 수 있다. 이때 본 초기화 파라미터에 설정된 스크립트 파일을 이용하여 문제가 되는 노드의 Tibero를 강제적으로 종료시킨다. Tibero를 관리하는 시스템 관리자는 반드시 본 초기화 파라미터에 설정된 스크립트 파일의 명령이 정상적으로 동작하는지를 사전에 반드시 확인해야 한다. (기본값: $TB_HOME/scripts/tbcm_down_cmd.sh) |
CM_COORDINATOR_MODE | ACTIVE_REPLICATION 모드에서만 사용되는 초기화 파라미터이다. (기본값: N) 공유 디스크가 존재하지 않는 경우 별도의 코디네이터 노드(Coordinator Node)로 동작하는 TBCM 데몬이 필요하다. 각 노드별 TBCM 데몬은 코디네이터 노드를 통해서 클러스터의 구성 정보를 공유한다.
이때 코디네이터 노드가 아닌 다른 노드의 경우에는 코디네이터 노드의 노드 식별 이름을 설정해야 한다. 이 설정을 할 경우 TBCM을 반드시 OS 관리자 권한으로 기동시켜야 한다. |
CM_COORDINATOR_NAME | ACTIVE_REPLICATION 모드에서 동작하는 클러스터에서 코디네이터 노드 이외의 Worker 노드에서 코디네이터 노드의 노드 식별 이름을 설정한다. Worker 노드에서는 반드시 코디네이터 노드의 노드 식별 이름을 미리 설정해야만 TBCM이 정상적으로 동작한다. |
LOCAL_CLUSTER_VIP | 클러스터를 구성하는 Tibero 서버가 가상 IP 주소를 이용하여 서비스하는 경우
클러스터를 구성할 때 특정한 노드에서 장애가 발생한 경우 나머지 노드로 클라이언트 접속을 Failover하게 되는데, 기존에 연결된 클라이언트의 네트워크 접속을 빠르게 Failover하기 위해서는 가상 IP 주소를 이용한 Failover 기능을 구성해야 한다. |
LOCAL_CLUSTER_NIC | 각각의 Tibero 서버의 노드가 가상 IP 주소를 이용해 서비스를 하는 경우 로컬 서버에서 가상 IP 주소를 할당할 NIC의 이름을 반드시 설정한다. |
LOCAL_CLUSTER_VIP_NETMASK | 각각의 Tibero 서버의 노드가 가상 IP 주소를 이용해 서비스를 하는 경우 로컬 서버에서 가상 IP 주소의 네트워크 마스크(network mask)를 설정한다. |
LOCAL_CLUSTER_VIP_BROADCAST | 각각의 Tibero 서버의 노드가 가상 IP 주소를 이용해 서비스를 하는 경우 로컬 서버에서 가상 IP 주소의 broadcasting 주소를 설정한다. |
LOG_LVL_CM | TBCM 로그의 출력 레벨을 설정한다. 1 ~ 6 사이의 값 중에서 설정할 수 있으며 값이 클수록 더 많은 로그가 출력된다. (기본값: 2) |
CM_LOG_DEST | TBCM 로그가 저장되는 파일의 디렉터리 경로이다. 단, 절대 경로로 설정을 해야 한다. (기본값: $TB_HOME/instance/$TB_SID/log/tbcm/) |
CM_LOG_FILE_SIZE | TBCM 로그 파일 하나의 최대 크기를 설정한다. TBCM 로그 파일의 크기가 설정된 값 보다 커지면 현재의 로그 파일을 백업하고 새로운 로그 파일을 생성한다. (기본값: 10MB) |
CM_LOG_TOTAL_SIZE_LIMIT |
설정값을 초과하는 로그가 발생하는 경우 가장 오래된 로그 파일을 삭제하고 새로운 로그 파일을 생성한다. (기본값: 4GB) |
CM_FENCE | ACTIVE_SHARED 모드에서 공유 스토리지와 물리적 연결이 끊어진 장애가 발생할 경우 TBCM과 서버가 공유 스토리지에 파일을 제대로 읽거나 쓸 수 가 없어 멈추어 있을 가능성이 있다. CM_FENCE 기능을 켜면 이러한 장애 상황을 감지하는 IO fence 데몬이 독립적으로 실행되어 장애가 발생한 경우로 간주하여 데이터베이스를 보호하기 위하여 시스템를 강제로 재부팅시켜 준다. IO fence 데몬의 장애 감지와 관련된 파라미터는 CM_WATCHDOG_EXPIRE이다. IO fence 데몬은 TBCM으로부터 CM_WATCHDOG_EXPIRE(초)만큼의 시간동안 heartbeat를 전달받지 못하는 경우 장애로 판단한다. 이 설정을 할 경우 TBCM을 반드시 OS 관리자 권한으로 기동시켜야 한다. (기본값: N) |
CM_ENABLE_CM_DOWN_NOTIFICATION | TBCM이 tbcm -d와 같이 정상적으로 종료되는 경우 다른 노드의 TBCM에게 네트워크를 통해 종료되는 것을 알려주어 다른 노드가 heartbeat의 제한 시간까지 기다리지 않고 바로 down을 인식하게 하는 기능을 설정한다. (기본값: Y) |
CM_ENABLE_FAST_NET_ERROR_DETECTION | TBCM간 연결된 network connection에서 에러를 감지하면 즉시 상대 노드가 down된 것으로 판단하도록 설정한다. 단순한 네트워크 지연은 에러가 아니며, 더 이상 connection이 유효하지 않는 종류의 에러만 감지 대상이 된다. 즉, 일반적으로 TBCM이 kill 등으로 죽는 경우에 감지된다. (기본값: N) |
CM_AUTO_VIP_FAILBACK | 가상 IP 주소가 할당된 NIC가 down되거나 케이블 단절 등으로 다른 노드로 Failover된 경우 NIC를 복구하면 가상 IP 주소를 다른 노드로부터 다시 가져오는 작업을 자동으로 할 것인지 설정한다.
|
Tibero는 VIP(Virtual IP)를 이용하여 서비스를 할 수 있다. 가상 IP를 이용하여 서비스를 하고자 할 경우 아래와 같은 관련된 초기화 파라미터를 설치 환경에 맞게 설정해야 한다.
LOCAL_CLUSTER_VIP=192.168.100.1 LOCAL_CLUSTER_NIC=eth0 LOCAL_CLUSTER_VIP_NETMASK=255.255.255.0 LOCAL_CLUSTER_VIP_BROADCAST=192.168.100.255
TBCM은 OS 명령을 통해서 시스템에 VIP를 설정하고 해제한다. 따라서 VIP 기능을 사용하기 위해서 TBCM은 OS의 관리자 권한으로 실행되어야 한다. 위와 같은 초기화 파라미터를 설정한 후 TBCM을 관리자 권한으로 기동시키면 해당 시스템에 VIP가 추가되며, ifconfig와 같은 OS 명령을 통해서 이를 확인할 수 있다.
TBCM를 실행하기 위해서는 반드시 TB_HOME 과 TB_SID 환경변수가 적절히 설정되어 있는지를 먼저 확인해야 한다. 자세한 내용은 “9.4. TBCM 환경설정”을 참고한다.
TBCM의 실행 파일은 $TB_HOME/bin 디렉터리에 있는 tbcm 파일이다.
tbcm 파일의 사용 방법은 다음과 같다.
$ tbcm [옵션] [추가 모드] <추가 옵션>
tbcm 파일은 다음의 옵션과 함께 실행할 수 있다.