Machbase Enterprise Edition 은, 서버에 상주하는 여러 프로세스가 하나의 클러스터를 구성한다. 이 때 Process를 Node라고 부른다.
각 Node는 다음과 같이 분류할 수 있다.
분류 | 설명 | |
---|---|---|
Coordinator | 모든 범용 서버와 Node를 관리한다. | |
Broker | 실제 클라이언트 프로그램을 맞이하는 프로세스, (Reference Table을 제외하고) 로그 데이터를 가지고 있지 않다. 클라이언트의 데이터 입력/데이터 조회 쿼리를 Warehouse Active에 분산 수행시키는 역할을 한다. | |
Leader | Leader Broker는 DDL 수행이 가능하다. (Leader가 아닌 Broker는 DDL 수행이 불가능하다) | |
Warehouse | 실제 데이터를 저장하고 있는 프로세스. 전체 클러스터 데이터 중 일부를 저장하고 있다. |
Coordinator에 의해 관리되지만, 단순히 Broker/Warehouse Node의 설치/제거를 담당하는 Process 이다.
보통은 Node 를 설치할 Host 에 1대씩 추가하지만, 설치 성능을 위해 여러 Deployer를 추가할 수도 있다.
서버에서 설치 예제아래 그림(a)는, 범용 서버 4대에 2개의 Coordinator, 2개의 Broker, 4개의 Warehouse Active, 4개의 Warehouse Standby Node를 설치한 것을 나타낸 것이다. |
각 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는 말 그대로 Client의 명령을 Warehouse에게 전달하고, Warehouse의 결과를 Client에 모아서 전달하는 역할을 한다.
Broker는 Log Table의 데이터를 가지고 있지 않지만, Volatile Table의 데이터는 가지고 있는다.
모든 Broker가 동시에 DDL을 수행하면 클러스터 전체 정합성에 문제가 생긴다.
이를 해결하기 위해 클러스터 차원에서 DDL 명령을 제어하기 시작하면, DDL 자체에 대한 성능 저하가 발생한다.
따라서 DDL을 수행할 수 있는 Broker를 지정해야만 했는데, 이를 Leader Broker 라고 한다.
Leader Broker는 DDL 수행이 가능하지만, 그 외의 Broker는 DDL 수행이 불가능하다.
Warehouse 는 Log Table 데이터를 직접 저장하게 되고, Broker가 전달한 명령을 실제로 수행하는 역할을 한다.
Warehouse는 Broker를 통해서 데이터를 입력받을 수 있지만, 클라이언트가 직접 Warehouse에 접속해서 데이터 입력을 할 수 있다.
수정 필요 |
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 |
1) |
이중화란, 기존에 설치된 Node 의 실패를 대비해 똑같은 Node 를 복제하는 과정 또는 그 상태를 의미한다.
Enterprise Edition 에서 Coordinator는 최대 2개까지 생성이 가능하다.
2개 중 하나는 Primary Coordinator, 다른 하나는 Secondary Coordinator 가 된다.
두 Coordinator는 지속적으로 Cluster Node 정보를 계속 유지한다.
어느 한 쪽이 비정상적으로 종료되더라도, 나머지 Coordinator가 Cluster Node 관리를 계속 할 수 있다.
Primary Coordinator 가 재시작되는 경우, 의도치 않은 상황이 발생하므로, 주의가 필요하다. (현재 해당 부분에 대한 패치가 진행 중이다.) Secondary Coordinator 가 재시작되는 경우, Primary Coordinator 의 최신 정보를 받을 수 있다. |
Broker는 Replication 대상이 아니다.
따라서 Broker A에 들어있는 Volatile Table의 데이터 레코드는 Broker B에 똑같이 유지되지 않는다. (not synchronized)
다만, Cluster 전체의 테이블/인덱스 스키마는 모두 동일하므로, Broker A에 Volatile Table VOL_TBL1
이 존재하면 Broker B에도 Volatile Table VOL_TBL1
이 존재한다.
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 를 그대로 참여한다. |