본문 바로가기
Data Base/NOSQL

[NOSQL] : 샤딩 시스템 (Sharding System) 1부

by 오주현 2021. 11. 2.
반응형
샤딩

- 빅데이터 환경은 수많은 데이터를 빠른 시간에 수집 및 저장할 수 있어야 합니다. 때에 따라서는 분산, 집계하여 사용자가 원하는 통계 정보로 가공할 수도 있어야 합니다. 이런 시스템 구축 환경을 구축하기 위해 효과적인 데이터 분산 저장 및 처리 기술이 필요한데 그것을 샤딩(Sharding) 시스템 이라고 합니다.

 

목적

- 데이터의 분산 저장

- 빠른 성능

- 데이터의 백업과 복구 전략의 일환

 

 Sharding 구축을 위한 시스템 환경

- 샤딩 시스템은 데이터의 적절한 분산 처리를 통한 효율성 향상이 큰 목적이므로 3대 이상의 샤드 서버로 구축할 것을 권창합니다.

 # 최소 2대 이상이지만 가장 적절한 선능이 보장되기 위한 적정 서버 수 

 

- 싱글 노드를 운영할 때 요구되는 메모리 영역보다 최소 20~30% 이상의 추가 메모리 영역이 요구됩니다.

 # 샤드 시스템을 구축할 때 활성화되는 MongoS와 OpLog, Balancer 프로세스가 사용하게 될 추가 메모리에 대한 고려 등

 

- 샤드 시스템을 구축할 때 요구되는 Config 서버는 최소 3대 이상 활성화 할 것을 권장합니다.

# Config 서버는 샤드 시스템 구축과 관련된 메타 데이터를 저장 관리하여 빅데이터의 빠른 검색을 위한 인덱스 정보를 저장, 관리하고 있기 떄문에 샤드 서버와는 별도의 서버에 구축하는 것이 원칙입니다.

 

Shard Cluster 구성

- Shard 

 # 애플리케이션이 사용할 데이터를 나눠 저장할 수 있습니다.

 # MongoS(라우터)가 어떤 샤드를 통해 정보를 가져올지 정해주기 때문에 샤드는 라우터를 통해서만 애플리케이션과 정보 교환이 가능합니다.

 

- Config Server

 # 애플리케이션 데이터를 제외하고 Shard Cluseter가 작동하기 위한 필요한 정보를 저장합니다.

 # 로그와 같은 정보를 보관하고 있습니다.

 

- MongoS

 # 직접적으로 드라이버의 명령을 받아 어떤 작업을 수행할 지 판단하고 결과물을 가져다 드라이버에 넘겨주는 역할을 합니다.

 # Config Server의 메타데이터를 캐싱하여 알맞은 Shard에 명령을 보내 원하는 정보를 가져옵니다.

 

- 폴더 4개를 생성해 줍니다.

 

C:\Windows\System32\drivers\etc 경로에 host 파일에 주석을 풀어줍니다.

수정이 안 된다면 메모장을 관리자 권한을 주어 열어주고 불러오기로 파일을 열고 수정 후 저장해 주면 됩니다.

 

mongod --shardsvr --dbpath c:\mongodb\shard1 --port 40001 --bind_ip localhost

mongod --shardsvr --dbpath c:\mongodb\shard2 --port 40002 --bind_ip localhost

mongod --shardsvr --dbpath c:\mongodb\shard3 --port 40003 --bind_ip localhost

Node 1을 위한 Shard Server를 활성화 시켜줍니다. ( 포트 번호 40001 )

 

 

Config 서버

mongod --configsvr --replSet rptconfig --dbpath c:\mongodb\config1 --port 50001 --bind_ip localhost

mongod --configsvr --replSet rptconfig --dbpath c:\mongodb\config2 --port 50002 --bind_ip localhost

mongod --configsvr --replSet rptconfig --dbpath c:\mongodb\config3 --port 50003 --bind_ip localhost

config 서버 3대를 활성화 합니다.

첫 서버가 장애가 발생하는 경우를 대비해 백업 서버로 2대를 추가로 설정합니다.

 

- config 서버는 샤딩 시스템의 필수 구조 중 하나입니다.

 

- 최소 1개가 요구되며 장애를 대비해 추가로 Config 서버의 설정이 필요합니다.

 # Config-1, Config-2, Config-3을 설정하게 되면 시스템 장애가 발생할 때 문제가 될 수 있으므로 적잘한 샤드 서버 쪽에 분산 배치해야 합니다.

 

- 2대 이상의 Config 서버를 운영하다 하나의 Config 서버에 장애가 발생하면 나머지 Config 서버는 읽지 전용이 되기 때문에 최소한의 샤딩 시스템이 운영이 가능해 집니다.

 

- Config 서버는 각 샤드 서버에 메타 데이터가 저장되어 있으며 MongoS가 데이터를 쓰고/읽기 작업을 수행할 때 Config 서버를 통해 수집합니다.

 

MongoS 프로세스

- 빅데이터를 샤드 서버로 분배해 주는 프로세스 입니다.

- 하나 이상의 프로세스가 활성화 됩니다.

- Application Server에서 실행 가능합니다.

- Config 서버로부터  Meta-Data를 캐시합니다.

 

mongo --host localhost --port 50001

구축된 Config 서버 중 하나의 서버에 접속해 각 Config 서버를 Replica Sets로 클러스터링 합니다.

 

use admin

어드민 유저로 바꿔줍니다.

 

rs.initiate(
{
	_id : "rptconfig",
	configsvr : true,
	members : [
		{ _id : 0, host : "localhost:50001"},
		{ _id : 1, host : "localhost:50002"},
		{ _id : 2, host : "localhost:50003"}
	]
}
)

 

 mongos --configdb rptconfig/localhost:50001,localhost:50002,localhost:50003 --port 20000

샤드 클러스터를 이용하기 위해 MongoS 인스턴스를 활성화 시켜줍니다.

반응형

'Data Base > NOSQL' 카테고리의 다른 글

[NOSQL] : 복제 서버의 추가, 삭제  (0) 2021.11.16
[NOSQL] : Fail Over  (0) 2021.11.16
[NOSQL] : Replica Sets 환경 설정  (0) 2021.11.09
[NOSQL] : Sharding 구축  (0) 2021.11.09
01 . MongoDB 서버 실행 및 클라이언트 접속  (0) 2021.08.31

댓글