728x90
몽고디비 클러스터 구성하기(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 dba
useradd -m -c "MongoDB Service Account" -d /home/mongo -s /bin/bash -u 5000 -g 5000 mongo
echo '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/Seoul
APT 저장소(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-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "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/null
apt update
apt install -y docker-ce
docker version
systemctl --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: de40ad0
docker-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 2020
ctop 설치
echo "deb http://packages.azlux.fr/debian/ buster main" | tee /etc/apt/sources.list.d/azlux.list
wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -
apt update
apt install -y docker-ctop
ctop -v
$ ctop -v
ctop version 0.7.7, build 11a1cb1 go1.18
MongoDB 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'" >> ~/.bashrc
mongodb 디렉터리 생성 및 오너 변경
mongodb
mkdir mongodb; chown -R 999:999 mongodb
- 참고사이트
Sharded Cluster : https://www.mongodb.com/docs/manual/sharding/
728x90
'리눅스' 카테고리의 다른 글
[리눅스] mongodb secondary show dbs 에러 (0) | 2022.06.08 |
---|---|
[리눅스] 애플 맥북 실리콘 M1에서 도커 빌드시 오류 (0) | 2022.06.07 |
[리눅스] mongodb(router) - 3 (0) | 2022.05.31 |
[리눅스] mongodb(shard) - 2 (0) | 2022.05.31 |
[리눅스] mongodb(config) - 1 (0) | 2022.05.31 |