MongoDB EC2로 배포하기

인스턴스 만들기

✅ AMI : Ubuntu Server 24.04 LTS(HVM), SSD Volume Type 선택
✅ 아키텍처 : 64비트(x86)
✅ 인스턴스 유형 : t2.micro (다른 유형을 선택하면 과금발생가능)
✅ 키 페어 : RSA 유형, .pem파일로 생성
        EC2인스턴스에 접근하기 위한 보안키
        키페어를 생성하지 않으면 인스턴스에 암호가 없으므로 안전하게 접속하기 위해 키페어를 생성
        그리고 이후에 ssh를 사용하여 EC2인스턴스에 접근할 때 설정한 키페어를 사용하여 접속
✅ 보안그룹(인바운드) : SSH유형, 22포트, 0.0.0.0
         이후에 로컬에서 SSH로 접속할 것이므로 SSH의 22번 포트를 열기

 

EC2 접속하고 MongoDB 설치하기

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

 

List 파일 만들기

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

명령어가 `|` 연산자를 기준으로 2개로 나뉘는데 각각 살펴보도록 합시다.

  1. `echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse"`
    이 부분은 MongoDB 패키지 저장소를 정의하는 문자열을 출력합니다.
    • `deb`: Debian 계열의 패키지 저장소를 추가한다는 의미입니다.
    • `[ arch=amd64,arm64 ]`: 이 저장소가 64비트 아키텍처(amd64)와 ARM 아키텍처(arm64)를 지원한다는 것을 나타냅니다.
    • `https://repo.mongodb.org/apt/ubuntu`: MongoDB 패키지가 호스팅된 공식 저장소의 URL입니다.
    • `jammy`: 이 명령어가 Ubuntu 22.04 (Jammy Jellyfish)를 대상으로 함을 나타냅니다.
    • `mongodb-org/6.0`: MongoDB의 6.0 버전 패키지에 접근하기 위한 경로입니다.
    • `multiverse`: 이 저장소가 비자유 소프트웨어 또는 상업적 소프트웨어를 포함할 수 있음을 나타내는 옵션입니다.
  2. `sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list`
    • `sudo`: 관리자 권한으로 명령어를 실행합니다.
    • `tee`: 입력된 내용을 지정된 파일에 저장하고 동시에 출력하는 명령어입니다.
    • `/etc/apt/sources.list.d/mongodb-org-6.0.list`: 이 파일은 새로 추가된 MongoDB 패키지 저장소에 대한 정보를 저장할 파일 경로입니다.

 

패키지 관리자 업데이트

sudo apt update
sudo apt upgrade
  1. `sudo apt update`
    패키지 목록을 업데이트합니다.
  2. `sudo apt upgrade`
    시스템에 설치된 패키지를 최신 버전으로 업그레이드합니다.

데몬 설치

sudo apt install -y mongodb-org

 

MongoDB 설치

sudo systemctl start mongod
sudo systemctl status mongod
  1. `sudo systemctl start mongod`
    MongoDB 서버를 시작합니다.
  2. `sudo systemctl status mongod`
    MongoDB 서버의 현재 상태를 확인합니다.

 

접속 후 외부 접속 허용하도록 mongodb 설정 파일 수정하기

mongosh

`mongosh`는 MongoDB Shell의 새로운 버전으로, MongoDB에 연결하고 데이터베이스 명령을 실행하기 위한 인터랙티브 쉘 환경을 제공합니다. 접속이 잘 되었는지 확인을 하면 `exit`로 빠져나옵시다.

 

이제 mongodb의 설정을 수정해서 외부에서 접속이 가능하도록 합시다

sudo vi /etc/mongod.conf

 

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

 

bindIp를 0.0.0.0으로 수정해보면 어떤 ip에서도 접근이 가능해지는 것이죠.

 

그리고, DB에 접속해서 DB를 관리할 수 있는 유저를 만들어봅시다.

mongosh 
 
use admin

db.createUser({
  user:'사용할 유저이름',
  pwd: '사용할 패스워드',
  roles: [{role: 'root', db:'admin'}]
})

 

보안 규칙 수정 - 인바운드 설정 추가

EC2의 인바운드도 다음과 같이 수정해줘야 합니다.

외부에서 접속되는지 확인하기

 

 

위와 같이 수정했으면 EC2의 mongodb에 원격으로 접속이 됩니다. 다음 명령어를 입력해서 확인해보도록 하죠

mongosh --host <EC2 Public IP(http생략)> --port 27017 -u <여러분이름> -p <여러분비밀번호> --authenticationDatabase admin