MongoDB Trasaction 지원 때문에 꽤나 시간을 썻다. 이게 replica set이랑 무슨 상관이 있나?

Spring - mongodb transaction을 하기 위해서는 replica set 구성이 필요하다고 한다.

관련해서 까먹지 않으려면 정보를 남겨야 할 것 같다.

아래 정리는 MongoDB는 설치되어 있다는 가정하에 진행하겠다.

1. 디비 저장할 폴더 2개 만들기.

MongoDB는 실행 시 데이터 저장할 곳을 정할 수 있다. 나는

위 처럼 mst(Master DB 저장될 곳) / sla(Slave DB 저장될 곳) 두 개의 폴더를 만들어서 구성하려고 했다.

2. MongoDB 실행하기

로그를 보기 위해서 nohup 없이 실행(나중에 정상적으로 된 후, nohup을 맨 앞에 붙여서 실행 해주면 됨)

[Master 실행]

nohup mongod --bind_ip 0.0.0.0 --port 27017 --dbpath /home/kaonsoft/push/mongoDB/mst -replSet rs0 --smallfiles --oplogSize 128 > /dev/null &

[Slave 실행]

nohup mongod --bind_ip 0.0.0.0 --port 27018 --dbpath /home/kaonsoft/push/mongoDB/sla -replSet rs0 --smallfiles --oplogSize 128 > /dev/null &

*참고 : 포트 27017 / 27018 은 다 열려있어야 한다.

3. 콘솔에 접속 해서 initiate 하기.

나는 Robo 3T 1.3.1 를 이용해서 접속했다.

우선 Master로 쓸 DB Console에 접속 해 rs.initiate() 실행한다.

그러면 replica value가 setting 되는데, rs.status() 로 확인 해 보면

Master mongoDB 에 primary 로 나타나는 것을 확인할 수 있다.

그 후 Master mongoDB shall 에 Secondary 로 쓸 mongoDB 정보를 추가한다.

rs.add("hostName:port")

* 나는 VM 하나에서 Replica Set을 구성한 것이기 때문에 hostName은 마스터에 등록되어있는 name의 ip영역 혹은 hostname으로 등록해줘야 한다.

이러면 기본적인 replica set이 완성된다.

추가적으로 아비터 붙이는 것은 다음에...

현재 MongoDB 공홈에 접속하면 Linux cent os 관련 버전은 찾을 수 없다. (사실 RHEL 버전 깔면 상관없긴하다.)

그래서 리눅스 커맨드 이용을 Putty 로 하고 파일 업로드를 FileZilla 로 하는 사람은 난감할 수 있다. (사실 RHEL 버전 업로드 하면 상관없긴하다.)

하지만 Cent OS 에서는 파일을 따로 업로드 받아서 푸는 형태로 하지 않아도 MongoDB를 설치 할 수 있다.

[1단계 – 몽고DB 리포지토리(repository) 추가하기]

mongodb-org 패키지가 CentOS의 기본 리포지토리에 포함되어 있지 않기 때문에 리포지토리 파일을 생성하여 추가해 주어야 한다.

$ sudo vi /etc/yum.repos.d/mongodb-org.repo

다음의 내용을 작성 후 저장한다. 이 때 몽고DB 문서 혹은 웹 사이트를 참조하여 적절한 버전을 기술해 준다.

[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

------------------------------------------------------------------------------------------------------------------------------------------------------------------

[추가!!]

MongoDB 4.0 이상 버전부터 Spring Transaction 기능을 사용할 수 있게됨으로써 위의 설정 정보를 4.0으로 올리고 몽고DB 설치를 해야 yum에서 4.0 버전을 설치 할 수 있다.

[mongodb-org-4.0]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Transaction이 필요하다면 위 설정 적용 필요

------------------------------------------------------------------------------------------------------------------------------------------------------------------

다음의 명령어를 이용하여 생성한 파일이 올바로 존재하는지 확인한다.

$ yum repolist

[2단계 – 몽고DB 설치하기]

앞서 작성한 mongodb-org 패키지를 yum을 이용해 실행한다.

$ sudo yum install mongodb-org

위의 명령을 입력하면 몽고DB 패키지를 설치할 것인지, 그리고 GPG 키를 임포트(imprt)할 것인지에 관련된 질문이 나타나며 수락하면 설치가 진행된다. 해당 프로세스가 끝나면 몽고DB의 설치는 완료된 것이며, 다음과 같은 명령어를 이용해 실행할 수 있다.

$ sudo systemctl start mongod

몽고DB를 중지하고자 할 경우 다음과 같은 명령어를 입력하면 된다.

$ sudo systemctl stop mongod

몽고DB 실행과 관련된 로그를 확인하고 싶을 경우에는 다음의 명령어를 이용한다.

$ sudo tail /var/log/mongodb/mongod.log

이와 같은 명령어들을 이용하여 몽고DB를 실행할 수 있다.

[3. 외부 접속 허용]

먼저 /etc/mongod.conf 파일에 접근하여 수정.

vi /etc/mongod.conf

맨 처음에는 기본 포트로 127.0.0.1 로 설정이 되어 있을 것인데, 이를 0.0.0.0으로 변경해야 함.

그리고 방화벽을 사용한다면 관련 Port 역시 오픈 시켜야 한다.

firewall-cmd --zone=public --permanent --add-port=27017/tcp

만약 Azure VM 혹은 Amazon 클라우드 사용하고 있다면 관련해서 Open처리를 해줘야 한다. Azure은 해봤는데 Amazon은 안 해 봤음...

+ Recent posts