MongoDB Community Edition 4.2 설치 - ARM64 Ubuntu/Debian Armbian

MongoDB에 관련 글

MongoDB Community Edition Installations 시리즈:ㅇ

  1. MongoDB Community Edition 4.2 설치 - ARM64 Ubuntu/Debian Armbian
  2. MongoDB 구성 설정 과 사용자 인증 사용

MongoDB Tutorials 시리즈:

  1. MongoDB Tutorials: collections
  2. MongoDB Tutorial

MongoDB와 Middleware Platform:

  1. NodeJS Mongoose
  2. Mongodb mongoose-middleware

이전 버전과 기타 자료:

  1. MongoDB User Authentication
  2. MongoDB Community Edition 3.6 on Ubuntu(ARM64)
  3. Mongodb 3.4 install on Armv8
  4. Raspberry Pi 3 64bit OS openSUSE: Build MongoDB 3.4


Install MongoDB 4.2 Community edition 설치

이 문서는 Arm64 기반 CPU를 사용하는 Raspberry Pi, Odroid, PINE64, OrangePi 등 SBC 지원 보드 계열 위에서 Ubuntu/Debian 에서 설치 및 사용 가능한 MongoDB Community Edition 4.2 버전을 설치하고 구성하는 과정을 정리하고 있다.

MongoDB Community Edition 버전 Amd64, Arm64 의 설치는 Install MongoDB Community Edition on Debian 에서 제공하고 있다.

하지만 Arm64를 지원하는 Odroid C2, PINE64, OragePi 등 SBC 브드의 Armbian, Ubuntu 오에스에서 MongoDB Community Edition 을 저장소에서 apt 명령으로 직접 설치가 안되서 작은 트릭 이 필요하다.

  • MongoDB Community Edition 4.2 설치
  • systemd 사용이 가능한 mongod Unit 파일 구성

MongoDB Community Edition 은

MongoDB Community Edition 은 다음 패키지를 지원하고 있다:

  • mongodb-org : 다음 패키지를 설치하기 위한 메타 패키지
  • mongodb-org-server : mongod daemon 과 구성 및 초기 스크립트.
  • mongodb-org-mongos : mongos daemon.
  • mongodb-org-shell : mongo shell.
  • mongodb-org-tools : MongoDB 유틸리티.
    • mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongoperf, mongorestore, mongostat, and mongotop.

테스트한 플랫폼

64bit Arm을 지원하는 Armbian/Ubuntu 배포본을 사용했다.

Armbian 기반:

  • PINE64: 64bit, Armbian
  • Hardkernel Odroid C2: 64bit, Armbian

사전준비

설치를 위해 MongoDB Community Edition 을 지원하는 저장소를 위한 키 저장소를 구성해

레포지토리 등록

인증된 .dpkg, .apt 패키지를 설치하기 위해, 아래 처럼 서버의 키를 등록한다.

키 서버 등록

Install MongoDB Community Edition on Debian 에 있는데로 apt 저장소를 위한 키 서버를 등록한다.

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

사용한 키가 필요 없어서 키 서버 저장소 목록을 지우려면 apt-key 명령으로 삭제할 키 해시 8자리 코드를 확인한다.

1
2
3
4
$ sudo apt-key list

pub 4096R/A15703C6 2016-01-11 [expires: 2018-01-10]
uid MongoDB 3.4 Release Signing Key <packaging@mongodb.com>

이 키를 삭제한다.

1
$ sudo apt-key del A15703C6

MongoDB용 소스 리스트 추가

키 서버를 등록했으면 apt의 source list에 mongodb repository를 등록해야 한다. Ubuntu 16.04, 18.04 그리고 Debian Stretch/Buster with Armbian 에서 MongoDB Community Edition에 대한 저장소 source list 를 아래 같이 등록해서 사용하겠다.

아래 명령은 /etc/apt/sources.list.d/mongodb-org-4.2.list 파일을 생성하고 apt 소스 목록을 추가한다. 단, 저장소의 구분 이름인 multiverse 를 꼭 지정해 주자.

1
echo "deb [ arch=arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

보통 APT 계열의 저장소를 위한 소스 리스트는 아래 같이 구성된다.

deb URL 배포판명 구분명
마지막 구분명은 쓰이는 용도에 따라 main, universe, multiverse 등으로 구분이 되어 있다.




설치

apt 명령으로 저장소 소스의 캐시를 갱신하고 mongodb-org 커뮤니티 버전 mongodb를 설치한다.

1
2
$ sudo apt update
$ sudo apt install -y mongodb-org

설치 중에 mongodb 3.x, 4.x 버전은 데이터를 저장하는 파일 시스템으로 xfs 를 권장하고 있어서 경고 메시지를 출력하는데 일단 무시한다.

apt로 특정 버전을 설치하려면 다음 같이 버전을 명시한다.

1
$ sudo apt-get install -y mongodb-org=4.1

무사히 설치를 완료하면 systemd 의 유니트가 추가되어 mongod 서비스를 통해 관리할 수 있다.

설치 확인

systemctl 로 mongod 데몬이 동작을 확인해 보자, systemctl 로 서비스를 종료했다 재시작 해보자

1
2
$ sudo systemctl stop mongod.service
$ sudo systemctl start mongod.service

mongod 가 정상적으로 동작하는지 status 상태를 확인해 보자.

1
2
3
4
5
6
7
8
9
$ systemctl status mongod.service
* mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2019-12-19 15:38:14 UTC; 3 weeks 6 days ago
Docs: https://docs.mongodb.org/manual
Main PID: 2051 (mongod)
Memory: 191.3M
CGroup: /system.slice/mongod.service
`-2051 /usr/bin/mongod --config /etc/mongod.conf

여기까지 Arm64 기반 Debian Buster인 Armbian 시스템에 Mongodb Community Edition 4.2 버전을 설치하는 과정을 진행했다.

mongod 서비스가 제대로 실행됐으면 mongo 클라이언트로 테스트해 볼 수 있으면 접속해 볼 수 있는데, 연결을 위해 mondod.conf 라는 구성 파일을 다루어 보자.

설치 위치

MongoDB Community Edition이 설치되면 요구되는 파일 및 폴더가 다음 위치에 생성된다.

  • /var/lib/mongodb : 기본 데이터 파일 위치
  • /var/log/mongodb : 기본 로그 저장 폴더
  • /etc/mongod.conf : mongod 구성 파일. 로그, 데이터 위치 등을 변경 가능

이제 데이터베이스 시스템을 사용하기 위한 데이터 파일, 네트워크 구성 및 인증 방법을 구성해야 한다. 실제 데이터 베이스 운영을 위해서 구성 파일인 mongod.conf 파일을 사용이 필요하면 이어지는 글을 참조하자.



만약 MongoDB community edition을 위 방법같이 설치를 했는데 systemctl 명령으로 찾지 못하면 아래 systemd unit 파일에 대한 글을 참조해서 추가해 주면 된다.



systemd unit 파일

Armbian 에서 설치중 systemd unit 설정 파일과 MongoDB 시스템 계정 등이 생성되지 않는 경우가 있었다.

  • mongodb-org 설치후 systemd Unit 파일이 /etc/init.d에 복사되지 않는 경우
  • 여기서는 odroid-c2 armbian 설치 상태, 일반 리눅스 배포본은 잘 된다.

systemd 를 사용하기 위해서 MongoDB 서버 Daemon을 위한 Unit 파일을 아래를 따라 손으로 생성해 주면 systemctl 명령으로 서비스를 관리할 수 있다.

  1. MongoDB Daemon 사용자 추가
  2. Service Unit File 작성
  3. 활성화
  4. 퍼미션 확인
  5. Run

1. MongoDB Daemon 사용자 추가

mongod 데몬은 mongodb user account 계정으로 실행된다. systemctl 명령으로 mongod 를 시작하고 사용하기 위해서는 mongod-org 서비스를 위해서 사용자 mongodb 가 추가되야 한다. 만약 생성되지 않았으면, 새로 만든다.

1
$ sudo adduser --disabled-password --gecos "" --no-create-home --disabled-password --disabled-login mongodb

2. systemd service entry

데비안/우분투 에서 systemd 서비스 파일은 /lib/systemd/system/ 밑에 위치한다. Mongodb Community Edition 의 Unit 파일은 mongod.service 이다.

Mongodb Community Edition 설치시 Unit 파일이 복사되는데 파일이 있는지 확인한다.

1
$ ls -l /lib/systemd/system/mongod.service

만약 mongod.service 가 없으면 새로 생성해야 한다.


Unit 파일

다음은 Mongodb Community Edition 설치시 기본으로 제공되는 유니트 파일이다. 만약 mongod.service 파일이 없으면 /lib/systemd/system/mongod.service 에 생성해서 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongodb
Group=mongodb
EnvironmentFile=-/etc/default/mongod
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
#PIDFile=/var/run/mongodb/mongod.pid
PIDFile=/run/mongodb/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

3. 활성화

mongod.service 가 있으면 활성화 여부, 즉 systemd 에 mongod.service 가 등록 됐는지 확인한다. /lib/systemd/system/mongod.service 파일을 다음 같이 활성화 시켜준다.

1
2
$ sudo systemctl list-unit-files --type=service |grep mongod
mongodb.service disabled

disable 상태면 systemctl 명령으로 enable 시킨다.

1
2
$ cd /lib/systemd/system
$ sudo systemctl enable mongodb.service

4. 퍼미션 확인

MongoDB Community Editon을 소스 빌드로 설치하면 데이터 및 로그 디렉토리를 생성하고 사용자 퍼미션이 설정되야 한다.

예를 들어 로그 디렉토리 /var/log/mongo 그리고 데이터 디렉토리 /data/mongodata 라면 해당 디렉토리에 시스템 몽고디비 사용자 mongodb 가 쓸 수 있는 퍼미션을 준다.

1
2
$ sudo chown mongodb.mongodb /var/log/mongodb
$ sudo chown mongodb.mongodb /data/mongodata

5. Run

systemctl 명령으로 mongod 를 시작한다.

1
2
$ sudo systemctl start mongod
$ sudo systemctl status mongod

실행한 mongod를 확인해 보면

1
2
$ ps -ef |grep mongod
mongodb 15385 1 1 12:06 ? 00:00:00 /usr/bin/mongod --config /etc/mongod.conf

mongod 서비스가 제대로 실행됐으면 mongo 클라이언트로 테스트해 볼 수 있으면 접속해 볼 수 있다.

참조

[^1]: Install mongodb on Ubuntu

MongoDB Community Edition 4.2 설치 - ARM64 Ubuntu/Debian Armbian

https://blog.thinkbee.kr/2019-12-20-mongodb-4.2-install_arm64-d7c98dd6a70e/

Author

Gangtai Goh

Posted on

2019-12-20

Updated on

2023-05-12

Licensed under

댓글