CUBRID SELECT Query Load Balance
▶ CUBRID SELECT Query Load Balance 튜토리얼 환경 :
- VMware Work Station 11
- VM Version 10
- OS : Linux Centos 6.7 64bit
- CUBRID Version : 9.3.6.0002
- CUBRID JDBC Driver Version : 9.3.6.0002
▶ CUBRID SELECT Query Load Balance 목적 :
- 조회 질의(SELECT) 분산을 통해 Broker Server와 Data Bases Server 리소스 부하를 줄일 수 있다.
(그림 1-1. CUBRID Load Balance 미사용 다중화 구성)
(그림 1-2. CUBRID Load Balance 사용 다중화 구성)
▶ 튜토리얼 구성 시나리오
- Broker Server_1
- Host Name : BRO_SV_1
- IP : 192.168.0.111
- Broker Port : 33000
- Broker Server_2
- Host Name : BRO_SV_1
- IP : 192.168.0.111
- Broker Port : 33000
- DataBase Server_1
- Host Name : DB_SV_1
- IP : 192.168.0.221
- DataBase Server_2
- Host Name : DB_SV_1
- IP : 192.168.0.222
- Data Bases Info
- DB Name : demodb
- DB User : demouser
- Query Type : SELECT
JDBC Setting
▶ JDBC Driver Configuration
- JDBC 사용 옵션
- loadBalance
- Load Balance 사용을 위한 URL
"jdbc:cubrid:192.168.0.111:33000:demodb:demouser::?althosts=192.168.0.112:33000&loadBalance=true"
- 해당 URL은 앞의 192.168.0.111과 192.168.0.112을 랜덤한 순서로 연결한다.
BROKER Setting
▶ Broker Server 1 Configuration
- Fail-Over 발생 후 Fail-Back이 되게 되면 기존의 연결 된 CAS들은 JDBC LoadBalance 와 무관하게 Active로만 연결 되게 된다.
- 이 부분을 cubrid_broker.conf 값의 RECONNECT_TIME=10s를 통해 자신의 databases.txt의 우선 순위가 되는 DataBases로 다시 연결 하는 Broker 옵션을 사용한다.
$ cat $CUBRID/databases/databases.txt
#db-name vol-path db-host log-path lob-base-path
demodb /home/cubrid/DB/demodb DB_SV_1:DB_SV_2 /home/cubrid/DB/demodb file:/home/cubrid/DB/demodb/lob
$ cat $CUBRID/conf/cubrid_broker.conf
[%BROKER1]
RECONNECT_TIME=10s
$ cat /etc/hosts
192.168.0.111 BRO_SV_1
192.168.0.112 BRO_SV_2
192.168.0.221 DB_SV_1
192.168.0.222 DB_SV_2
# cat /etc/sysconfig/iptables
-A INPUT -p tcp --dport 33000 -j ACCEPT
▶ Broker Server 2 Configuration
- Fail-Over 발생 후 Fail-Back이 되게 되면 기존의 연결 된 CAS들은 JDBC LoadBalance 와 무관하게 Active로만 연결 되게 된다.
- 이 부분을 cubrid_broker.conf 값의 RECONNECT_TIME=1s를 통해 자신의 databases.txt의 우선 순위가 되는 DataBases로 다시 연결 하는 Broker 옵션을 사용한다.
$ cat $CUBRID/databases/databases.txt
#db-name vol-path db-host log-path lob-base-path
demodb /home/cubrid/DB/demodb DB_SV_2:DB_SV_1 /home/cubrid/DB/demodb file:/home/cubrid/DB/demodb/lob
$ cat $CUBRID/conf/cubrid_broker.conf
[%BROKER1]
RECONNECT_TIME=10s
$ cat /etc/hosts
192.168.0.111 BRO_SV_1
192.168.0.112 BRO_SV_2
192.168.0.221 DB_SV_1
192.168.0.222 DB_SV_2
# cat /etc/sysconfig/iptables
-A INPUT -p tcp --dport 33000 -j ACCEPT
DB Setting
▶ Data Base Server 1 Configuration
DB_SV_1 Master 모드
$ cat /etc/hosts
192.168.0.111 BRO_SV_1
192.168.0.112 BRO_SV_2
192.168.0.221 DB_SV_1
192.168.0.222 DB_SV_2
# cat /etc/sysconfig/iptables
-A INPUT -p tcp --dport 1523 -j ACCEPT
-A INPUT -p udp --dport 59901 -j ACCEPT
▶ Data Base Server 2 Configuration
DB_SV_2 Slave 모드
$ cat /etc/hosts
192.168.0.111 BRO_SV_1
192.168.0.112 BRO_SV_2
192.168.0.221 DB_SV_1
192.168.0.222 DB_SV_2
# cat /etc/sysconfig/iptables
-A INPUT -p tcp --dport 1523 -j ACCEPT
-A INPUT -p udp --dport 59901 -j ACCEPT
마치며
▶ CUBRID 다중화 구성
- CUBRID는 Broker와 Database Server 같은 시스템(OS)에 둘 수도 있으며, 별도의 시스템(OS)으로 분리도 가능하다.
- 이러한 점에서 CUBRID로 연결되는 Driver와 CUBRID의 Broker, Database의 연결 관계를 이해하면 다양한 다중화 구성이 가능하다.
▶ CUBRID 참고 문헌
- CUBRID 시스템 구조
(http://www.cubrid.org/manual/ko/9.3.0/intro.html#id1)
-JDBC 연결 설정
(http://www.cubrid.org/manual/ko/9.3.0/api/jdbc.html#jdbc-connection-conf)
- Broker 접속 관련 파라미터
(http://www.cubrid.org/manual/ko/9.3.0/admin/config.html#cubrid-broker-conf)
감사합니다.