Search
Duplicate

Scale-in/out 하기

문서번호 : 11-537587

유의 사항

클러스터에 미치는 영향 검토하기

공통사항

HA가 활성화 된 클러스터의 경우 2개 가용그룹의 균형을 고려하시기 바랍니다.

Scale-out

기존 노드의 partition을 새로운 노드로 재분배하는 rebalance가 발생합니다.
파티션 재조정(rebalance)으로 인한 일시적인 네트웍 트레픽과 디스크 I/O가 증가하며, 시스템에 따라 성능의 변화가 발생할 수 있습니다.
reblance 과정 중 업무 중단은 없으며, rebalance 종료시점에 약 1초의 Lock 발생이 발생합니다.
rebalance시 CPU 부하는 거의 없지만(5%이내), 노드간 네트웍 트래픽이 증가합니다. 스키마(데이터베이스) 단위로 작업을 할 수 있으므로 작업을 분산할 수 있습니다.

Scale-in

Scale-out 과 같이 rebalance가 묵시적으로 발생하며, 삭제 대상 노드의 partition을 나머지 노드로 옮기며, 동일하게 lock time은 약 1초입니다.
클러스터 전체의 저장소와 처리 능력이 삭제되는 노드만큼 축소되기에, 기존 노드의 저장소와 CPU / Network 등 resource의 여유를 사전 점검해야 한다.
물리적 용량뿐 만 아니라, 엔진에 설정된 maximum_memory, maximum_table_memory 변수의 설정도 확인하시기 바랍니다.

Scale-in

1. 제거 대상 노드의 MEMSQL ID 확인

제거할 노드의 MEMSQL ID를 확인합니다. (아래는 예시입니다.)
$ sdb-admin list-nodes +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+ | MemSQL ID | Role | Host | Port | Process State | Connectable? | Version | Recovery State | Availability Group | Bind Address | +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+ | 2E42499AE3 | Master | 10.41.227.222 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 | | 3B1746D521 | Aggregator | 10.41.38.230 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 | | E726A01B66 | Leaf | 10.41.153.177 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | | A96032D8E5 | Leaf | 10.41.30.194 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | | 042473BB83 | Leaf | 10.41.33.105 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | | 72E348C418 | Leaf | 10.41.34.134 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
SQL
복사

2. 노드 제거

제거할 노드의 <MemSQL ID> 를 인자로 (10 자리 이상) 복사하여 넣어 줍니다. 다음은 2개 노드를 제거하는 예시입니다.
$ sdb-admin delete-node --memsql-id 042473BB83 --stop -y $ sdb-admin delete-node --memsql-id 72E348C418 --stop -y
Bash
복사

3. 클러스터 확인하기

$ sdb-admin list-nodes +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+ | MemSQL ID | Role | Host | Port | Process State | Connectable? | Version | Recovery State | Availability Group | Bind Address | +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+ | 2E42499AE3 | Master | 10.41.227.222 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 | | 3B1746D521 | Aggregator | 10.41.38.230 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 | | E726A01B66 | Leaf | 10.41.153.177 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | | A96032D8E5 | Leaf | 10.41.30.194 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 | +------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
SQL
복사

3. 클러스터의 호스트 목록 제거 및 확인 (필요시)

노드가 탑재된 호스트에 더 이상 운영되는 노드가 없을 경우 다음 절차를 수행합니다.
호스트 제거
$ sdb-toolbox-config uregister-host 10.41.33.105 --yes $ sdb-toolbox-config uregister-host 10.41.34.134 --yes
SQL
복사
호스트 목록 확인
$ sdb-toolbox-config list-hosts +---------------+------------+---------------+---------------+ | Host | Local Host | SSH address | Identity File | +---------------+------------+---------------+---------------+ | 10.41.227.211 | Yes | | | | 10.41.155.54 | No | 10.41.155.54 | | | 10.41.223.33 | No | 10.41.223.33 | | | 10.41.226.182 | No | 10.41.226.182 | | +---------------+------------+---------------+---------------+
SQL
복사

Scale-out

먼저, 해당 호스트(장비)가 클러스터에 등록되어 있으며, 엔진 설치가 완료되어 있음을 가정합니다([SingleStore 설치 가이드]를 참고).
아래 절차는 노드를 하나씩 [노드생성] → [역할 부여] 순으로 반복하여 추가하는 예시입니다.

1. 노드 생성

availability-group <1 or 2> : HA 가 활성화 된 경우 추가할 가용그룹 1 또는 2 선택
$ sdb-admin create-node --host <NEW_LF1_IP> --port <NEW_LF1_PORT> --password <dbpw> --availability-group <1 or 2> --base-install-dir ~/memsql/nodes/NEW_LF1 -y … 출력 생략 …
Bash
복사

2. 역할 부여

$ sdb-admin add-leaf --memsql-id `sdb-admin list-nodes -q -r unknown` --password <dbpw> -y
Bash
복사
<문제 해결>
만약, 이미 여러 노드를 생성한 경우라면, 해당 노드의 <MemSQL ID> 를 인자로 (10 자리 이상) 복사하여 넣어 줍니다.
$ sdb-admin add-leaf --memsql-id <MEMSQL_ID> --password <dbpw> ...기타 옵션 중략... -y
Bash
복사

3. 추가할 노드가 더 있을 경우 1. ~ 2. 를 반복

4. 파티션 재조정(rebalance)

클러스터에 부하 발생과 partition의 반복 이동을 피하기 위해, 모든 노드를 추가한 후 마지막에 수행하는 것을 권장합니다
1.
클러스터 접속
$ singlestore -uroot -p<dbpw>
Bash
복사
2.
rebalance 작업 평가해 보기 (선택사항)
특정 데이터베이스에 대해 실행
singlestore> explain rebalance partitions on <db_name>;
SQL
복사
모든 데이터베이스에 대해 일괄 실행
singlestore> explain rebalance all databases;
SQL
복사
3.
rebalance 실행
특정 데이터베이스에 대해 실행
singlestore> rebalance partitions on <db_name>;
SQL
복사
모든 데이터베이스에 대해 일괄 실행
singlestore> rebalance all databases;
SQL
복사
4.
rebalance 상태 확인
특정 데이터베이스에 대해 실행
singlestore> show rebalance status on <db_name>;
SQL
복사
모든 데이터베이스에 대해 일괄 실행
singlestore> show rebalance all databases status;
SQL
복사
일자
작성자
비고
2022.09.15
khkum
최초작성
2022.09.19
jnshin
유의사항 수정