HA 기능을 사용하기 위해서는 아래와 같은 설정이 필요하다.
자동 failover와 failback 기능을 수행하기 위해서는 Linux-HA 프로젝트의 Heartbeat이 데이터베이스 서버가 구동되는 각 시스템에 설치가 되어 있어야 한다. Heartbeat 구성에 대해서는 별도의 Heartbeat 설치 관련 문서를 참고한다.
또한 브로커와 데이터베이스 서버를 분리된 시스템에 각각 구성함으로써 시스템의 정지를 발생시킬 수 있는 여러 장애에 좀더 유연하게 대처할 수 있도록 시스템을 구성할 수도 있다.
HA 기능을 사용하기 위해서는 데이터베이스 서버 시스템의 cubrid.conf 설정 파일에서 ha_mode 파라미터를 on으로 설정해야 한다. ha_mode 파라미터가 설정되지 않은 경우, 디폴트 값은 off이므로 HA 기능을 설정하지 않은 일반적인 서버로 동작 한다.
#cubrid.conf
ha_mode=on
데이터베이스 서버가 HA 기능을 사용 중인지 확인하기 위해서는 cubrid changemode 유틸리티를 사용하여 결과가 제대로 출력되는지 확인할 수 있다. 또한, 데이터베이스 정보를 확인하는 CSQL 명령어(;database)를 이용하여 동작 중인 데이터베이스 서버의 현재 HA 모드를 확인할 수 있다. 출력되는 HA 모드는 active, standby, maintenance 중 하나이다.
% cubrid changemode demodb
The server 'demodb''s current HA running mode is active.
csql> ;database
demodb@localhost (active)
브로커의 기본 동작 모드는 읽기와 쓰기 연산을 요청하는 모드이며, 필요 시 cubrid_broker.conf의 ACCESS_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 서버의 호스트 정보를 브로커 및 서버 시스템 내 데이터베이스 위치 정보 파일(database.txt)에 추가해야 한다. Active 서버와 Standby 서버는 콜론(:)으로 구분하며, Standby 서버는 한 개 이상 추가 가능하고 각 호스트들 간의 구분 또한 콜론(:)으로 구분한다.
#databases.txt
#db-name vol-path db-host log-path
nbd2 /home/db/db2 server_s1:server_s2 /home/db/db2
nbd1 /home/db/db1 server_s1:server_s2 /home/db/db1