MongoDB 5.0 설치 - 우분투 22.04 - ARM - Ubuntu ARM

Share

Last Updated on 2월 5, 2023 by Jade(정현호)

안녕하세요   
이번 글에서는 M1 ARM 맥북에서 가상화를 통해서 구동중인 우분투 ARM 아키텍처 22.04 버전 환경에서 MongoDB 5.0 버전 설치를 진행한 내역에 정리한 글이며, Ubuntu 22.04 x86-64 에서도 참고할 수 있는 글 입니다.

Platform Support

MongoDB 5.0 Community Edition 중에서 64-bit Ubuntu OS에 대해서는 LTS(Long-term support) 버전 대상으로 지원하고 있으며 상세한 정보는 아래와 같습니다.

  • 20.04 LTS("Focal")
  • 18.04 LTS(Bionic")
  • 16.04 LTS("Xenial")


MongoDB 는 이와 같은 플랫폼의 64비트 버전만 지원 하며, 문서 작성 기준으로 아래 2개에 대해서는 EOL 되었습니다.

  • x86_64의 Ubuntu 16.04
  • s390x 에서의 Ubuntu 18.04

그래서 작성 시점에서는 18.04 LTS 와 20.04 LTS 에 대해서 릴리즈 지원을 하고 있습니다.

문서에서는 아직 Ubuntu 22.04 에 대한 릴리즈나 Support 에 대한 내용은 없으나 설치 및 사용은 가능 합니다.

다만 Production 시스템에서 사용하려고 할 경우, 지원 목록에 있는 Ubuntu 20.04 를 사용하거나, 향후 릴리즈 목록에 Ubuntu 22.04가 확인 되면 Production 시스템에 사용하시기 바랍니다.


또한 Ubuntu 의 MongoDB 5.0 Community Edition은 일부 플렛폼에서 ARM64 아키텍처도 지원을 합니다.

자세한 내용은 플렛폼 지원 문서를 참조하시면 됩니다.


그 외 지원 및 Recommended Platforms 의 목록은 다음과 같습니다.

  • Amazon Linux 2
  • Debian 10
  • RHEL / CentOS 7 and 8
    • supported on Rocky Linux version 8.0+ and AlmaLinux version 8.0+
  • SLES 12 and 15
  • Ubuntu LTS 18.04 and 20.04
  • Windows Server 2016 and 2019


• 포스팅 설치 환경
- Ubuntu 22.04 ARM
- MongoDB 5.0.14

Ubuntu 22.04 의 x86-64 버전에서의 설치의 경우 방법은 동일하며, 아래 libssl1.1 설치 관련해서 x86-64 용으로 다운로드 받아서 설치 하시면 됩니다.
                  

OS 환경 구성

MongoDB 설치 진행 전에 사전에 OS에서 먼저 작업을 진행 하도록 하겠습니다.
           

패키지 설치

APT 로 설치

sudo apt install gnupg libcurl4 openssl liblzma5



별도로 다운로드 설치
사용하는 OS 아키텍처에 맞게 libssl1.1을 다운로드 및 설치를 진행 합니다.

• ARM

wget http://launchpadlibrarian.net/475575244/libssl1.1_1.1.1f-1ubuntu2_arm64.deb

sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_arm64.deb


• x86-64

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb

sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

           

THP 옵션 비활성화

Transparent Huge Page(THP) 기능을 비활성화가 필요하며 systemd 서비스를 생성하여 진행하겠습니다.

sudo vi /etc/systemd/system/disable-transparent-huge-pages.service

## 아래 내용으로 작성


[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled && echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=basic.target


systemd 서비스 파일 작성이 되었다면 아래 순서대로 서비스 활성화 및 시작을 진행 합니다.

sudo systemctl daemon-reload

sudo systemctl enable disable-transparent-huge-pages

sudo systemctl start disable-transparent-huge-pages


서비스를 시작 후 에 정상적으로 THP 기능이 비활성화 되었는지는 아래와 같이 확인 할 수 있습니다.

cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

[never] 로 선택되어 있다면 비활성화가 된 상태 입니다.
             

ulimit 설정

ulimit 의 open files 값이 64000 미만이면 MongoDB 시작시 오류가 발생될 수 있으므로 설정이 필요하며, 또한 권장 되는 nproc 값에 대해서도 수정 하도록 하겠습니다.

sudo vi /etc/security/limits.conf


## 아래 내용 입력

mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000

Ubuntu 에서 apt(패키지) 방식으로 설치시 자동으로 생성 되는 계정명이 mongodb 이고, 그에 따라서 포스팅에서는 mongodb로 설정하였습니다.

MongoDB 실행 유저가 mongodb 가 아닐 경우 사용하는 유저명으로 기재하면 됩니다.
             

유저 생성

해당 과정은 Tarball 방식으로 설치할 경우 필요한 과정이고 apt(apt-get) 으로 설치하려는 경우 생략해도 됩니다.
패키지로 설치시에는 그룹와 유저가 생성됩니다.

•그룹 및 유저 생성

sudo groupadd mongodb

sudo useradd -M -s /usr/sbin/nologin -g mongodb mongodb

-M 옵션을 사용해서 홈디렉토리를 생성하지 않고,
-s /bin/false 혹은 /usr/sbin/nologin 옵션을 사용해서 유저의 로그인쉘을 사용할 수 없게 하는 것입니다.

즉 mongodb 이라는 유저는 MongoDB 데몬을 실행하기 위한 유저이고, 서버의 보안강화 측면에서 외부에서 mongodb 유저로 쉘 로그인은 필요가 없습니다.
           

MongoDB 설치

MongoDB 설치는 apt(apt-get) 을 통한 패키지 설치Tarball 방식으로 설치를 진행하였습니다.
                

패키지 형식으로 설치(APT)

Import the public key

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



Create a list file for MongoDB

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



reload local pacakge
• GPG 키 복사

cd /etc/apt/
sudo cp trusted.gpg trusted.gpg.d/


• apt update

sudo apt update



latest stable version 설치
5.0 의 최신 버전을 설치하기 위해서는 아래와 같이 진행 하며, 특정 버전으로 설치를 원할 경우 다음(아래)의 방법으로 진행 합니다.

sudo apt install -y mongodb-org


특정 버전으로 설치
특정 버전으로 설치하려고 할 경우 아래와 같이 진행하며, 아래는 5.0.14 버전 설치의 예시 입니다.

sudo apt install -y mongodb-org=5.0.14 mongodb-org-database=5.0.14 mongodb-org-server=5.0.14 \
mongodb-org-shell=5.0.14 mongodb-org-mongos=5.0.14 mongodb-org-tools=5.0.14



MongoDB 시작

sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod



프로세스 확인 및 접속

# 프로세스 확인
ps -ef| grep mongod

# 접속
mongo


설치 후 MongoDB의 설정 파일인  /etc/mongod.conf 에서는 기본적으로는 인증 관련 된 설정이 별도로 되어 있지 않습니다.
설치 후 인증 없이 로그인이 가능하며, 인증 설정에 대한 정보가 필요하다면 다음 포스팅을 참조하시면 됩니다.

            

Tarball 방식으로 설치

파일 다운로드
파일을 먼저 다운로드 받도록 하겠습니다. 아래 링크를 클릭 합니다.


파일은 아래 이미지와 같이 다운로드 받으려면 버전과 OS 버전 과 아키텍처를 선택 후에 Package 에서 tgz 를 선택하시면 됩니다.
Download 버튼을 클릭하여 직접 다운로드 받거나, Copy link 버튼을 통해서 다운로드 링크를 복사 하여 wget 으로 받을 수 있습니다.


포스팅에서는 5.0.14 버전으로 진행하였고 직접 다운로드 주소는 아래와 같습니다.
https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2004-5.0.14.tgz

추가로 아래와 같은 MongoDB Database Utility 가 필요한 경우 별도로 다운로드 받을 수 있습니다.

  • bsondump
  • mongodump
  • mongoexport
  • mongofiles
  • mongoimport
  • mongorestore
  • mongostat
  • mongotop



압축 해제 및 디렉토리 복사
포스팅에서는 MongoDB의 엔진 바이너리 파일의 위치를 /usr/local 아래에 위치해두었으며, 해당 경로를 꼭 사용해야 하는 것은 아니므로 사용하는 환경에 맞게 경로를 지정해서 사용하시면 됩니다.

# 압축 해제
tar zxvf mongodb-linux-aarch64-ubuntu2004-5.0.14.tgz

# 디렉토리 복사
sudo cp -r mongodb-linux-aarch64-ubuntu2004-5.0.14 /usr/local/mongodb-5.0.14



추가 디렉토리 작업 및 환경 변수 설정
데이터 파일이 사용할 디렉토리 생성 및 소유권 변경 진행하도록 하겠으며, 해당 경로를 꼭 사용해야 하는 것은 아니므로 사용하는 환경에 맞게 경로를 지정해서 사용하시면 됩니다.

# 디렉토리 생성
sudo mkdir -p /mongodb_data
sudo mkdir -p /var/log/mongodb

# 소유권 변경
sudo chown -R mongodb:mongodb /mongodb_data
sudo chown -R mongodb:mongodb /var/log/mongodb


PATH 환경 변수 추가를 하도록 하겠습니다.

vi ~/.profile

# 아래 내용을 추가 

export PATH=$PATH:/usr/local/mongodb-5.0.14/bin


systemd 서비스 파일에서 사용할 용도로 심볼릭 링크를 하나 생성 하도록 하겠습니다.

sudo ln -s /usr/local/mongodb-5.0.14/bin/mongod /usr/bin/mongod



systemd 서비스 파일 작성
포스팅에서는 MongoDB의 시작, 종료를 systemd 를 통해서 진행하였고, 필요한 systemd 서비스 파일을 작성하도록 하겠습니다.

sudo vi /lib/systemd/system/mongod.service

## 아래 내용으로 파일을 작성

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network-online.target
Wants=network-online.target

[Service]
User=mongodb
Group=mongodb
PermissionsStartOnly=true
EnvironmentFile=-/etc/default/mongod
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongodb:mongodb /var/run/mongodb
PIDFile=/var/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 mongod as specified in
# https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings

[Install]
WantedBy=multi-user.target



mongod.conf 파일 작성
MongoDB 시작에 필요한 conf 파일을 작성하도록 하겠습니다.

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: /mongodb_data
  directoryPerDB: true
  journal:
    enabled: true
#  engine:
#  wiredTiger:

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

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


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

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

위의 conf 파일에는 mongodb 데이터파일의 위치를 /mongodb_data 하는 것으로 설정되어 있습니다.

사용하시는 환경에서 경로에 맞게 수정하시면 되며, 패키지 설치시에 자동으로 생성되는 conf 파일에서 "directoryPerDB: true" 만 추가한 conf 파일 입니다.



MongoDB 시작

sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod



프로세스 확인 및 접속

# 프로세스 확인
ps -ef| grep mongod

# 접속
mongo


설치 후 MongoDB의 설정 파일인  /etc/mongod.conf 에서는 기본적으로는 인증 관련 된 설정이 별도로 되어 있지 않습니다.
설치 후 인증 없이 로그인이 가능하며, 인증 설정에 대한 정보가 필요하다면 다음 포스팅을 참조하시면 됩니다.

             

Reference

Reference URL
mongodb.com/install-mongodb-on-ubuntu
mongodb.com/std-label-prod-notes-supported-platforms
mongodb.com/std-label-ubuntu-package-content
mongodb.com/transparent-huge-pages


관련된 다른 글

 

 

 

 

                   

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x