몽고디비 클러스터 구성하기(mongodb shard cluster)
테스트 환경
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal몽고디비 클러스트 구성


mongodb 계정 생성
groupadd -g 5000 dbauseradd -m -c "MongoDB Service Account" -d /home/mongo -s /bin/bash -u 5000 -g 5000 mongoecho 'mongo ALL=(ALL:ALL) ALL' >> /etc/sudoers기본 에디터 변경(vim editor)
update-alternatives --config editor쉘 프롬프트 변경(PS1)
echo 'export PS1="\[\e[33m\]\u\[\e[m\]\[\e[37m\]@\[\e[m\]\[\e[34m\]\h\[\e[m\]:\[\033[01;31m\]\W\[\e[m\]$ "' >> ~/.bashrc시스템 타임 존 설정
timedatectl set-timezone Asia/SeoulAPT 저장소(repository) 변경하기
에러 ㅠㅠ
sed -i 's/ports.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list원복하였습니다.
sed -i 's/mirror.kakao.com/ports.ubuntu.com/g' /etc/apt/sources.list도커 엔진 설치
기존 도커 삭제
apt remove -y docker docker-engine docker.io containerd runc최신 도커 엔진 설치
apt install -y apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/nullapt updateapt install -y docker-cedocker versionsystemctl --now enable docker$ docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:20 2022
 OS/Arch:           linux/arm64
 Context:           default
 Experimental:      true
Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:00:44 2022
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0docker-compose 설치
apt install -y docker-compose$ docker-compose version
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020ctop 설치
echo "deb http://packages.azlux.fr/debian/ buster main" | tee /etc/apt/sources.list.d/azlux.listwget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -apt updateapt install -y docker-ctopctop -v$ ctop -v
ctop version 0.7.7, build 11a1cb1 go1.18MongoDB Shard Cluster(Sharded Cluster)
MongoDB sharded cluster는 다음 구성 요소로 구성됩니다.
shard : 각 샤드는 샤딩된 데이터의 하위 집합을 포함합니다. 각 샤드는 replica set로 배포할 수 있습니다.
config servers : 구성 서버는 클러스터에 대한 메타데이터 및 구성 설정을 저장합니다.
mongos : mongos는 쿼리 라우터 역할을 하여 클라이언트 애플리케이션과 sharded cluster 사이에 인터페이스를 제공합니다. MongoDB 4.4부터 mongos는 지연 시간을 최소화하기 위해 hedged reads를 지원할 수 있습니다.
다음 그래픽은 sharded cluster 내 구성 요소의 상호 작용을 설명합니다.

MongoDB는 collection 수준에서 데이터를 샤드하여 클러스터의 샤드 전체에 컬렉션 데이터를 배포합니다.
Sharded Cluster 구성
| ServerName | router(mongos) | Config 서버 | Shard 서버(PSA방식) | 비고 | 
| node1 | 27017 | 27018 | 27011 | |
| 27012 | ||||
| node2 | 27017 | 27018 | 27011 | |
| 27012 | ||||
| node3 | 27017 | 27018 | 27011 | |
| 27012 | ||||
| 27013 | 
도커 컨테이너로 mongodb 클러스터(Sharded Cluster) 구성
github에서 docker-sharded-cluster 클론
mkdir /docker-container; cd $_git clone https://github.com/anti1346/docker-sharded-cluster.git각 서버에 alias 등록
[node1]
echo "alias mongodb='cd /docker-container/docker-sharded-cluster/node1'" >> ~/.bashrc[node2]
echo "alias mongodb='cd /docker-container/docker-sharded-cluster/node2'" >> ~/.bashrc[node3]
echo "alias mongodb='cd /docker-container/docker-sharded-cluster/node3'" >> ~/.bashrcmongodb 디렉터리 생성 및 오너 변경
mongodbmkdir mongodb; chown -R 999:999 mongodb
- 참고사이트
Sharded Cluster : https://www.mongodb.com/docs/manual/sharding/
'리눅스' 카테고리의 다른 글
| [리눅스] 도커 컨테이너로 몽고디비 클러스터 구성하기(mongodb shard cluster) (0) | 2023.01.02 | 
|---|---|
| MongoDB 5.0+에는 AVX를 지원하는 CPU가 필요함 (0) | 2023.01.01 | 
| 레디스 서버 설정(redis backup) (0) | 2022.12.29 | 
| HTML 리다이렉션 (0) | 2022.12.29 | 
| [리눅스] Anaconda 설치(conda 명령) (0) | 2022.12.27 | 
 
                  
                 
                  
                 
                  
                