구조
Machbase Enterprise Edition 은, Host 에 상주하는 여러 Node 가 하나의 클러스터를 구성한다.
Node의 분류
각 Node는 다음과 같이 분류할 수 있다.
분류 | 설명 | |
---|---|---|
Coordinator | 모든 범용 서버와 Node를 관리한다. | |
Broker | 실제 클라이언트 프로그램을 맞이하는 프로세스, (Reference Table을 제외하고) 로그 데이터를 가지고 있지 않다. 클라이언트의 데이터 입력/데이터 조회 쿼리를 Warehouse Active에 분산 수행시키는 역할을 한다. | |
Leader | Leader Broker는 DDL 수행이 가능하다. (Leader가 아닌 Broker는 DDL 수행이 불가능하다) | |
Warehouse | 실제 데이터를 저장하고 있는 프로세스. 전체 클러스터 데이터 중 일부를 저장하고 있다. |
Special Node : Deployer
Coordinator에 의해 관리되지만, 단순히 Broker/Warehouse Node의 설치/제거를 담당하는 Process 이다.
보통은 Node 를 설치할 Host 에 1대씩 추가하지만, 설치 성능을 위해 여러 Deployer를 추가할 수도 있다.
Node의 Port 관리
각 Node는 Port를 여러 개 열어두고 있어야 하는데, 다음과 같이 구분된다.
Port 구분 | 설명 | 필요한 Node |
---|---|---|
Cluster Port | Node 간 통신을 위한 Port. | 모든 Node |
Service Port | 클라이언트가 직접 접속하게 되는 Port. | Broker / Warehouse |
Admin Port | 관리 목적으로 통신하기 위한 Port. | Coordinator / Deployer |
Replication Port | Warehouse 간에 Replication 용 통신을 위한 Port. | Warehouse |
Broker / Warehouse 소개
Broker
Broker는 말 그대로 Client의 명령을 Warehouse에게 전달하고, Warehouse의 결과를 Client에 모아서 전달하는 역할을 한다.
- 데이터 입력 시, Broker는 Warehouse에게 데이터 입력을 골고루 가도록 한다.
- 데이터 조회 시, Broker는 Warehouse에게 데이터를 가져오도록 한 뒤에 모든 결과를 모아서 전달한다.
Broker는 Log Table의 데이터를 가지고 있지 않지만, Volatile Table의 데이터는 가지고 있는다.
Leader Broker
모든 Broker가 동시에 DDL을 수행하면 클러스터 전체 정합성에 문제가 생긴다.
이를 해결하기 위해 클러스터 차원에서 DDL 명령을 제어하기 시작하면, DDL 자체에 대한 성능 저하가 발생한다.
따라서 DDL을 수행할 수 있는 Broker를 지정해야만 했는데, 이를 Leader Broker 라고 한다.
Leader Broker는 DDL 수행이 가능하지만, 그 외의 Broker는 DDL 수행이 불가능하다.
Warehouse
Warehouse 는 Log Table 데이터를 직접 저장하게 되고, Broker가 전달한 명령을 실제로 수행하는 역할을 한다.
Warehouse는 Broker를 통해서 데이터를 입력받을 수 있지만, 클라이언트가 직접 Warehouse에 접속해서 데이터 입력을 할 수 있다.
Warehouse Group
수정 필요
Warehouse Active와 달리, Warehouse Standby는 Active로 전송되는 복제 Log Table 데이터를 저장한다.
클라이언트가 Standby에 직접 데이터 입력은 할 수 없다.
그러나 (Standby 에 저장된 Log Table 데이터의 정합성을 확인할 목적으로) 클라이언트가 직접 접속해서 데이터 조회를 할 수 있다.
가능한 명령
다음은 각 Node에 직접 접속해서, 명령 수행이 가능한 것과 불가능한 것을 표로 나타낸 것이다.
모든 Node는 Client 를 통한 접속이 가능하지만, Node 종류에 따라 불가능한 쿼리가 존재한다.
Broker (Leader) | Broker (non-leader) | Warehouse Standby | |
---|---|---|---|
Client 접속 | O | O | O |
DDL | O | X | X |
DELETE | O | O | X |
INSERT | O | O | X 1) |
APPEND | O | O | X 1) |
SELECT | O | O | O |
이중화
이중화란, 기존에 설치된 Node 의 실패를 대비해 똑같은 Node 를 복제하는 과정 또는 그 상태를 의미한다.
Coordinator Replication
Enterprise Edition 에서 Coordinator는 최대 2개까지 생성이 가능하다.
2개 중 하나는 Primary Coordinator, 다른 하나는 Secondary Coordinator 가 된다.
두 Coordinator는 지속적으로 Cluster Node 정보를 계속 유지한다.
어느 한 쪽이 비정상적으로 종료되더라도, 나머지 Coordinator가 Cluster Node 관리를 계속 할 수 있다.
Broker Replication
Broker는 Replication 대상이 아니다.
따라서 Broker A에 들어있는 Volatile Table의 데이터 레코드는 Broker B에 똑같이 유지되지 않는다. (not synchronized)
다만, Cluster 전체의 테이블/인덱스 스키마는 모두 동일하므로, Broker A에 Volatile Table VOL_TBL1
이 존재하면 Broker B에도 Volatile Table VOL_TBL1
이 존재한다.
Warehouse Replication
Group 에 새로운 Warehouse 가 추가되는 경우, 다음 과정을 통해서 Warehouse 가 이중화된다.
데이터 입력의 경우, Broker 가 같은 Group 에는 같은 데이터를 전송함으로써 이중화를 보장한다.
복구 방법
Node가 비정상적으로 종료되어도, 아래와 같은 방법으로 서비스를 계속할 수 있다.
자세한 내용은 운영 가이드를 참고한다.
종류 | Fail-over 방법 |
---|---|
Coordinator | Primary Coordinator가 비정상 종료되어도, Secondary Coordinator 가 Primary Coordinator가 되면서 클러스터 관리를 계속 할 수 있다. 최악의 상황으로 Coordinator가 모두 종료되어도, 클러스터 관리를 할 수 없을 뿐 전체 서비스 (데이터 입력/조회) 는 계속 할 수 있다. |
Deployer | 해당 Host 로 Node Operation (ADD, REMOVE..) 을 할 수 없고, 해당 Host 의 통계 정보를 수집할 수 없다. |
Broker | Broker가 종료되어도, 다른 Broker가 존재한다면 계속 서비스를 지속할 수 있다. 만약 Leader Broker가 중단되면, Coordinator가 Broker 중에서 Leader Broker를 다시 선출해서 DDL 수행을 가능하게 한다. |
Warehouse | Group 에 다른 Warehouse(s) 가 존재하면, 해당 Warehouse(s) 가 SELECT 와 APPEND 를 그대로 참여한다. |