CUBRID Network Diagram
큐브리드를 사용하다 보면 네트워크 연결 구성에 대해 궁금할 수 있습니다.
이런 궁금증에 대해 간단한 이미지와 설명으로 큐브리드 네트워크 연결 구성에 쉽게 다가 올 수 있도록 기술 하였습니다.
들어가기에 앞서
큐브리드 네트워크 연결 구성에 대해 이해하기에 OS 환경 및 CUBRID 버전에 따른 약간의 차이점이 있습니다.
아래의 2가지 기능 차이에 대해서 숙지 하시면 큐브리드 네트워크 다이어그램에 대해 쉽게 이해하실 수 있습니다.
- - Windows 큐브리드 버전에서는 SHARD Broker 기능과 HA 환경을 제공 하지 않습니다. (SINGLE 구성만 제공)
- - Linux 큐브리드 버전 9.3에서는 SHARD Broker기능을 제공 하지만 10.1버전에서는 SHARD Broker 기능을 제공 하지 않습니다.
큐브리드 네트워크 다이어그램 세부 정보
- < Master / Slave / Replica Node >
HA 환경의 데이터 베이스를 구성하는 서버
- cub_master : 실제 데이터 베이스 프로세스와 연결을 담당하는 프로세스
- cub_manger : CUBRID Manger 프로그램의 관리모드 사용을 위한 프로세스
- < SINGLE >
HA환경이 아닌 싱글로 운영 되는 데이터 베이스 서버
- cub_master : 실제 데이터 베이스 프로세스와 연결을 담당하는 프로세스
- cub_manager : CUBRID Manger 프로그램의 관리모드 사용을 위한 프로세스
- < Broker >
Application과 데이터 베이스 서버의 연결을 관리하는 서버
- CAS : 데이터 베이스와 실질적인 커넥션을 맺는 프로세스
- < SHARD Broker >
CUBRID 부하 분산을 위한 분할 구조를 사용하기 위한 서버
- Proxy : SHARD Broker로 부터 연결을 받은 분할 분배 프로세스
- CAS : 데이터 베이스와 실질적인 커넥션을 맺는 프로세스
- < CUBRID Manager >
CUBRID SQL 개발 프로그램
- 질의 모드 : 단순히 데이터 베이스로 SQL을 수행하기 위한 목적
- 관리 모드 : 데이터 베이스의 전체적인 관리(기동/중지/삭제 등)와 같은 기능을 위한 목적
- < Driver / Application >
- Driver : CUBRID 데이터 베이스 사용을 위한 Application과 Broker 연결 담당
- Application : 웹 또는 응용 프로그램
- < Ping Hosts >
- HA 환경에서 스플릿 브레인 (두개의 Master Node) 현상 방지를 위한 제 3자 통신 체크용 ICMP 테스트를 위한 임의의 서버
CUBRID 포트 정보 확인
- $CUBRID/conf/cubrid.conf
- cub_master Port를 설정할 수 있습니다. 기본 값은 TCP_1523
- 파라미터 : cubrid_port_id
- $CUBRID/conf/cubrid_ha.conf
- HA 환경에 사용 되는 하트비트 체크 관련 포트 설정을 할 수 있습니다. 기본 값은 UDP_59901
- 파라미터 : ha_port_id
- $CUBRID/conf/cm.conf
- CUBRID Manager 관리자 모드를 사용하기 위한 포트 설정을 할 수 있습니다. 기본 값은 TCP_8001
- 파라미터 : cm_port
- $CUBRID/conf/cubrid_broker.conf
- 브로커 포트를 설정 할 수 있습니다. 기본 값은 query_editor(개발용 브로커) TCP_30000, broker1(서비스용 브로커) TCP_33000
- BROKER_PORT
- $CUBRID/conf/shard.conf
- 샤드 브로커 포트를 설정 할 수 있습니다. 기본 값은 TCP_45000
- BROKER_PORT
CUBRID 방화벽 오픈
- - CUBRID에서 사용 되는 프로세스들은 단방향 포트로 목적지에 인바우드(INPUT) 포트만 오픈 되어 있으면 통신을 수행할 수 있습니다.
- - Windows의 경우 CAS 개수(커넥션 수)에 따라 PORT의 범위가 변경 될 수 있습니다.
CAS 개수 100개 Broker Port 30000 일 때 TCP_30000-30100과 같이 범위 오픈을 하여야 됩니다.- - Linux의 경우 내부 소켓 통신으로 CAS 개수(세션) 상관 없이 Broker Port만 오픈 하시면 됩니다.
- - 하기의 이미지들에 사용 된 포트 정보는 기본 설정 값으로 운영 환경에 따라 변경 될 수 있습니다.
- - SHARD Broker의 경우 기본적으로 기동 되게 설정되어 있지 않습니다. 필요에 따라 설정하여 기동 하여야 합니다.
- < Windows 인바우드 정책 설정 >
1. 커맨드
> netsh advfirewall firewall add rule name="(규칙 이름)" dir=in action=allow protocol=tcp remoteip=any localport=(포트 번호)
2. GUI
Win Key + R > WF.msc > 인바운드 규칙 생성 (포트/연결 허용/포트 설정)
- < Linux INPUT 방화벽 설정 >
1. Centos
- iptables
# iptables -A INPUT -p tcp -m tcp --dport (포트 번호) -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport (포트 번호) -j ACCEPT
- firewalld
# firewall-cmd --permanent --zone=public --add-port=(포트 번호)/tcp
# firewall-cmd --permanent --zone=public --add-port=(포트 번호)/udp
2. Ubuntu
# ufw allow (포트 번호)/tcp
# ufw allow (포트 번호)/udp
Windows 큐브리드 네트워크 다이어그램
Linux 큐브리드 네트워크 다이어그램
CUBRID Version 9.3 - SINGLE
CUBRID Version 9.3 - HA
CUBRID Version 9.3 - ALL
CUBRID Version 10.1 - SINGLE
CUBRID Version 10.1 - HA
CUBRID Version 10.1 - ALL
큐브리드 Client to CUBRID Databases 연결 구성
Certification (인증) 단계
Client의 요청을 받아 CUBRID Driver는 cub_broker로 연결을 시도 합니다.
cub_broker는 Client과 매칭시킬 cub_cas를 할당 합니다.
cub_cas는 cub_master로 데이터 베이스의 정보를 추가 확인 합니다.
cub_master는 최종적으로 정상 접이면 cub_server를 할당 합니다.
이 5개의 과정을 거치면 Client와 CUBRID DB와의 인증 단계를 마칩니다.
Data recursive (데이터) 단계
5개의 인증 과정을 마친 연결은 데이터를 주고 받습니다. (prepare, execute, fetch)
한번 연결 된 연결은 conn_close 또는 Client 비정상 종료 및 파라미터 제한이 아닌 이상 끊어지지 않고 유지 됩니다.
Client > Driver > cub_cas > cub_server (prepare -> execute)
cub_server -> cub_cas -> Driver -> Client (fetch, Result Return)
마치며..
큐브리드 네트워크 다이어그램을 통해 좀 더 큐브리드에 대한 접근성이 낮아졌으면 합니다.