웹사이트 검색

CentOS 7의 MongoDB 복제


이 페이지에서

  1. 1단계 - 서버 준비
  2. 2단계 - 모든 노드에 MongoDB 설치
  3. 3단계 - 방화벽 구성\n
  4. 4단계 - MongoDB 복제 세트 구성
  5. 5단계 - MongoDB 복제 세트 시작
  6. 6단계 - 복제 테스트
  7. 참조

MongoDB는 고성능, 고가용성 및 자동 확장을 제공하는 NoSQL 엔터프라이즈급 데이터베이스입니다. NoSQL 데이터베이스에서는 SQL(Structured Query Language)을 사용하여 데이터를 삽입하고 검색할 수 없으며 MySQL 또는 Postgres와 같은 테이블에 데이터를 저장하지 않습니다. 대신 데이터는 JSON 형식의 "문서" 구조(MongoDB에서는 BSON이라고 함)에 저장됩니다. MongoDB는 2009년에 처음 소개되었으며 현재 MongoDB Inc.에서 개발하고 있습니다.

이 튜토리얼에서는 MongoDB에서 복제본 세트를 단계별로 빌드하는 방법을 안내합니다. CentOS 7이 설치된 3개의 서버 노드를 사용한 다음 MongoDB를 설치 및 구성합니다.

전제 조건

  • CentOS 7이 설치된 서버 3대

10.0.15.21 mongo1
10.0.15.22 mongo2
10.0.15.23 mongo3

  • 루트 권한\n

1단계 - 서버 준비

이 튜토리얼에서는 MongoDB용 SELinux를 비활성화합니다. SELinux 구성 파일을 편집하고 강제 적용 값을 비활성화로 변경해야 합니다.

ssh로 모든 서버 노드에 연결합니다.

ssh 

vim으로 호스트 파일을 편집합니다.

vim /etc/hosts

아래에 호스트 구성을 붙여넣으십시오.

10.0.15.21  mongo1
10.0.15.22  mongo2
10.0.15.23  mongo3

파일을 저장하고 종료합니다.

다음으로 vim으로 구성 파일을 편집하여 SELinux를 비활성화합니다.

vim /etc/sysconfig/selinux

값 강제를 비활성화로 변경합니다.

SELINUX=disabled

저장하고 종료한 다음 서버를 재부팅합니다.

reboot

명령으로 SELinux 상태를 확인하십시오.

getenforce

결과적으로 비활성화됨을 확인하십시오.

2단계 - 모든 노드에 MongoDB 설치

이 단계에서는 공식 저장소에서 MongoDB를 설치합니다. 첫 번째 단계는 새 MongoDB 3.4 리포지토리를 /etc/yum.repos.d/ 디렉터리에 추가하는 것입니다.

아래 명령을 실행하여 저장소를 추가하십시오.

cat <<'EOF' >> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

EOF

다음으로 yum 명령어로 mongodb-org 패키지를 설치합니다.

sudo yum -y install mongodb-org

MongoDB는 모든 CentOS 7 노드에 설치되었습니다.

메모:

MongoDB 설치에 대한 전체 자습서를 보려면 이 링크를 참조하십시오.

3단계 - 방화벽 구성

첫 번째 단계에서 이미 SELinux를 비활성화했습니다. 보안상의 이유로 이제 모든 노드에서 방화벽을 활성화하고 MongoDB 및 SSH에서 사용하는 포트만 엽니다.

yum 명령으로 Firewalld를 설치합니다.

yum -y install firewalld

firewalld를 시작하고 부팅 시 시작되도록 활성화합니다.

systemctl start firewalld
systemctl enable firewalld

다음으로 ssh 포트와 MongoDB 기본 포트 27017을 엽니다.

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=27017/tcp

변경 사항을 적용하려면 firewalld를 다시 로드하십시오.

firewall-cmd --reload

4단계 - MongoDB 복제 세트 구성

복제본 세트는 동일한 데이터와 정보를 유지 관리하는 MongoDB의 mongod 프로세스 그룹입니다. 복제본 세트는 데이터베이스의 프로덕션 배포를 위한 고가용성 및 내결함성을 제공합니다.

mongodb의 복제는 mongod 프로세스를 실행하는 여러 MongoDB 서버 인스턴스로 구성되며 하나의 인스턴스만 PRIMARY로 실행되고 다른 모든 인스턴스는 SECONDARY로 실행됩니다. 데이터는 PRIMARY 인스턴스에만 기록되며 데이터 세트는 모든 SECONDARY 인스턴스에 복제됩니다.

이 단계에서는 MongoDB에서 복제본 세트를 구현하기 위해 모든 서버 노드를 준비합니다.

vim으로 MongoDB 구성 파일 mongod.conf 파일을 수정합니다.

vim /etc/mongod.conf

넷 섹션 라인 27에서 bindIP를 주석 처리합니다.

net:
  port: 27017
  # bindIP: 127.0.0.1

다음으로 복제 라인 36의 주석을 해제하고 복제 이름을 myreplica01로 설정합니다.

replication:
  replSetName: "myreplica01"

파일을 저장하고 vim을 종료합니다.

모든 노드에서 MongoDB를 다시 시작합니다.

systemctl restart mongod

이제 mongodb를 확인하고 localhost ipaddress가 아닌 서버 ipadress에서 실행 중인지 확인하십시오.

netstat -plntu

5단계 - MongoDB 복제 세트 시작

이 단계에서는 복제 세트를 생성합니다. mongo1 서버를 PRIMARY 노드로 사용하고 mongo2 및 mongo3를 SECONDARY 노드로 사용합니다.

mongo1 서버에 로그인하고 mongo 셸을 시작합니다.

ssh 
mongo

아래 쿼리를 사용하여 mongo1 서버에서 복제본 세트를 시작합니다.

rs.initiate()

ok 값이 1인지 확인하십시오.

이제 복제 세트에 mongo2 및 mongo3 노드를 추가하십시오.

rs.add("mongo2")
rs.add("mongo3")

아래 결과가 표시되고 오류가 없는지 확인합니다.

다음으로 아래 rs 쿼리로 복제본 세트 상태를 확인합니다.

rs.status()

상태를 확인하는 또 다른 쿼리는 다음과 같습니다.

rs.isMaster()

6단계 - 복제 테스트

PRIMARY 인스턴스 mongo1에서 SECONDARY 노드 mongo2 및 mongo3으로 데이터 세트 복제를 테스트하십시오.

이 단계에서는 PRIMARY 노드 mongo1에서 새 데이터베이스를 작성하거나 작성하려고 시도한 다음 SECONDARY 노드 mongo2 및 mongo3에서 데이터베이스를 확인하여 복제가 작동하는지 확인합니다.

mongo1 서버에 로그인하고 mongo 셸을 엽니다.

ssh 
mongo

이제 데이터베이스에 대한 새 데이터베이스 LEMP 및 새 스택 모음을 만듭니다.

use lemp
db.stack.save(
{
    "desc": "LEMP Stack",
    "apps":  ["Linux", "Nginx", "MySQL", "PHP"],
})

그런 다음 SECONDARY 노드 mongo2로 이동하여 mongo 셸을 엽니다.

ssh 
mongo

쿼리 rs.slaveOk()를 사용하여 SECONDARY 노드에서 읽기를 활성화한 다음 SECONDARY 노드에 lemp 데이터베이스가 있는지 확인합니다.

rs.slaveOk()
show dbs
use lemp
show collections
db.stack.find()

오류가 없으면 아래와 같은 결과가 표시됩니다.

PRIMARY 노드의 데이터베이스는 SECONDARY 노드로 복제되었으며 mongo1 인스턴스의 데이터베이스 lemp는 mongo2 및 mongo3 인스턴스로 성공적으로 복제되었습니다.

MongoDB 복제 세트가 성공적으로 생성되었습니다.

참조

  • https://docs.mongodb.com/manual/core/replica-set-members/