HA 환경 설정

HA 구성을 위해서는 active 서버 및 standby 서버 각각에서 CUBRID heartbeat 기능이 활성화되어야 한다. 브로커와 데이터베이스 서버를 하나의 장비에서 구성할 수 있으며, 이를 각각 분리된 시스템에 구성할 수도 있다.

HA 기능을 사용하기 위해서는 다음과 같이 설정한다.

 

노드 그룹 식별자 생성

active 및 standby 서버에서 동일한 사용자 계정(예: ha_user1)을 각각 생성하고, 해당 계정에서 CUBRID를 실행한다. 생성된 UNIX 사용자 계정이 HA 모드로 구동될 서버 노드 그룹 식별자가 된다.

HA 구동 스크립트 준비

HA 구동 스크립트는 CUBRID/share/init.d/cubrid-ha에 위치하며, 이를 active 및 standby 서버(/etc/init.d/)에 각각 준비한다.

하나의 호스트에서 여러 사용자 계정으로 HA를 구성하고 이를 시스템 서비스에 등록하려면, HA 구동 스크립트의 이름을 cubrid-ha-{unix user id}로 변경하고 각 스크립트를 /etc/init.d/ 디렉터리에 복사한다. 시스템 서비스에 등록하려면 root 권한이 필요하다.

[root@server_s1 init.d]# cd /home/ha_user1/CUBRID/share/init.d/

[root@server_s1 init.d]# cp cubrid-ha /etc/init.d/

데이터베이스 복사

active 서버에 DB(예: tdb01)를 새로 생성하고, 이를 standby 서버로 복사한다. 데이터 볼륨 복사, 백업/복구, unloaddb/loaddb 중 하나의 방법을 이용할 수 있다.

서버 설정(cubrid.conf)

cubrid.conf 설정 파일에 HA 관련 파라미터를 추가해야 한다. 이때, HA 관련 파라미터는 반드시 [common] 섹션에 설정해야 하며, HA 모드로 구동하지 않을 데이터베이스에 대해서만 [@<database>] 섹션에서 ha_mode의 값을 no로 설정한다. 만약, [common] 섹션에 ha_mode의 값이 no이고, [@<database>] 섹션에 ha_mode의 값이 yes인 경우에는 에러가 출력된다.

#cubrid.conf

[common]

...

ha_mode = on

ha_port_id = 41523

ha_node_list = ha_user1@server_s1:server_s2

HA 구동 스크립트 설정

active 및 standby 데이터베이스 서버에 각각 준비된 HA 구동 스크립트 파일에서 아래 설정을 추가한다.

#cubrid-ha

 

CUBRID_USER = ha_user1

DB_LIST = 'tdb01'

 

# DB_LIST = 'tdb01 tdb02 tdb03'

브로커 설정

브로커의 기본 동작 모드는 읽기 및 쓰기 연산을 요청하는 모드이며, 필요 시 cubrid_broker.confACCESS_MODE 파라미터를 이용하여 Read only 브로커나 Slave only 브로커로 설정할 수 있다.

#cubrid_broker.conf

ACCESS_MODE = RW|RO|SO

 

RW := Read-Write broker (기본값)

RO := Read-Only broker

SO := Slave-Only broker

구동 중인 브로커의 동작 모드는 cubrid broker status 유틸리티의 -f 인자를 사용하여 확인할 수 있다. 브로커 상태에 대한 자세한 내용은 브로커 상태 확인을 참고한다.

% broker1  - cub_cas [4430,40821] /home/CUBRID/log/broker/broker1.access /home/CUBRID/

 JOB QUEUE:0, AUTO_ADD_APPL_SERVER:ON, SQL_LOG_MODE:ALL:100000

 LONG_TRANSACTION_TIME:60, LONG_QUERY_TIME:60, SESSION_TIMEOUT:300

 KEEP_CONNECTION:AUTO, ACCESS_MODE:RW

-----------------------------------------------------------------------------------------------------------------------

ID   PID   QPS   LQS PSIZE STATUS          LAST ACCESS TIME     DB       HOST   LAST CONNECT TIME       CLIENT IP

-----------------------------------------------------------------------------------------------------------------------

1 26946     0     0 51168 IDLE         2009/11/06 16:06:41      -          -                   -       10.0.1.101

2 26947     0     0 51172 IDLE         2009/11/06 16:06:41      -          -                   -       10.0.1.101

3 26948     0     0 51172 IDLE         2009/11/06 16:06:41      -          -                   -       10.0.1.101

4 26949     0     0 51172 IDLE         2009/11/06 16:06:41      -          -                   -       10.0.1.101

5 26950     0     0 51172 IDLE         2009/11/06 16:06:41      -          -                   -       10.0.1.101

데이터베이스 호스트 정보 설정

HA 구성에서 사용할 Active 서버 및 Standby 서버의 호스트 정보를 브로커 및 서버 시스템 내 데이터베이스 위치 정보 파일(databases.txt)에 추가해야 한다. Active 서버와 Standby 서버는 콜론(:)으로 구분하며, Standby 서버는 한 개 이상 추가 가능하고 각 호스트들 간의 구분 또한 콜론(:)으로 구분한다. 이처럼 동일한 데이터베이스에 대해 여러 개의 호스트를 지정하는 환경에서는, 클라이언트 서버 모드(CS 모드)로 csql, backupdb, applylogdb 등의 유틸리티 수행 시 대상 데이터베이스 이름 뒤에 반드시 호스트 이름(@host)을 지정해야 한다. 독립 모드(SA 모드)로 유틸리티를 수행하는 경우에는 대상 데이터베이스 이름 뒤에 호스트 이름을 지정할 수 없다.

#databases.txt

#db-name         vol-path         db-host                   log-path

tdb01            /home/db/db2      server_s1:server_s2       /home/db/db2

tdb02            /home/db/db1      server_s1:server_s2       /home/db/db1