Red Hat 또는 CentOS에 MongoDB Community Edition 설치
이 페이지의 내용
참고
MongoDB Atlas
MongoDB Atlas 는 클라우드에서 호스팅되는 MongoDB 서비스 옵션으로, 설치 오버헤드가 필요하지 않으며 프리 티어을 제공하여 바로 시작할 수 있습니다.
개요
이 튜토리얼을 사용하여 MongoDB 5.0 을 설치합니다. MongoDB Community Edition Red Hat Enterprise Linux, CentOS Linux 또는 Oracle Linux [1] 에서 yum
패키지 관리자를 사용하는 .
MongoDB 버전
이 튜토리얼에서는 MongoDB 5.0 MongoDB Community Edition을 설치합니다. 다른 버전의 MongoDB Community를 설치하려면 페이지 왼쪽 상단의 버전 드롭다운 메뉴에서 해당 버전에 대한 문서를 선택하세요.
고려 사항
플랫폼 지원
참고
EOL Notice
MongoDB 5.0 MongoDB Community Edition 64 LinuxCentOS LinuxOracle Linux 1은 Linux x86에서 Red Hat64 Enterprise (RHEL), , [ ] , Rocky 및 AlmaLinux [2] 의 비트 버전을 지원합니다. _ 아키텍처:
RHEL / CentOS / Oracle / Rocky / AlmaLinux 8
RHEL / CentOS / Oracle 7
MongoDB 5.0 MongoDB Community Edition 은 64 RHEL / CentOS / Oracle / Rocky / AlmaLinux 8 에서 ARM 아키텍처도 지원합니다.
자세한 정보는 플랫폼 지원에서 확인할 수 있습니다.
[1] | (1, 2) MongoDB는 Red Hat 호환 커널(RHCK)을 실행하는 Oracle Linux만 지원합니다. MongoDB는 UEK(Unbreakable Enterprise Kernel)를 지원하지 않습니다 . |
[2] | RHEL 버전 8.0 이상을 지원하도록 출시된 MongoDB 온프레미스 제품은 해당 배포판이 완전한 RHEL 호환성을 제공할 의무를 충족하는 경우 Rocky Linux 버전 8.0 이상과 AlmaLinux 버전 8.0 이상을 호환 및 지원합니다. |
프로덕션 정보
프로덕션 MongoDB 배포에 대한 성능 고려 사항 및 구성 권장 사항을 제공하는 자체 관리형 배포를 위한 프로덕션 노트 문서를 검토한 이후에 프로덕션 환경에 MongoDB를 배포합니다.
MongoDB Community Edition 설치
다음 단계에 따라 yum
패키지 관리자를 사용하여 MongoDB Community Edition을 설치합니다.
리포지토리를 구성합니다.
yum
을 사용하여 MongoDB를 직접 설치할 수 있도록 /etc/yum.repos.d/mongodb-org-5.0.repo
파일을 생성합니다.
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-5.0.asc
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-5.0.asc
MongoDB 리포지토리에서 .rpm
파일을 직접 다운로드할 수도 있습니다. 다운로드는 Red Hat/CentOS 버전(예: 9
), MongoDB 릴리스 버전 (예: 5.0
), 아키텍처(예: x86_64
) 순으로 정리되어 있습니다.
MongoDB 5.0 이전에는 4.3
등 MongoDB의 홀수 릴리스 버전이 개발 릴리스였습니다. MongoDB 5.1부터 MongoDB는 분기별로 빠른 릴리스를 제공합니다. 신속한 지원 릴리스와 장기 지원 릴리스의 차이점에 대한 자세한 내용은 MongoDB 버전 관리에서 확인 가능합니다.
MongoDB Community 서버를 설치합니다.
안정적인 최신 버전의 MongoDB를 설치하려면 다음 명령을 실행합니다.
sudo yum install -y mongodb-org
또는 MongoDB의 특정 릴리스를 설치하려면 다음 예시와 같이 각 구성 요소 패키지를 개별적으로 지정하고 패키지 이름에 버전 번호를 추가합니다.
sudo yum install -y mongodb-org-5.0.29 mongodb-org-database-5.0.29 mongodb-org-server-5.0.29 mongodb-org-shell-5.0.29 mongodb-org-mongos-5.0.29 mongodb-org-tools-5.0.29
참고
yum
은 최신 버전을 사용할 수 있게 되면 패키지를 자동으로 업그레이드합니다. MongoDB 업그레이드를 방지하려면 /etc/yum.conf
파일에 다음 exclude
지시문을 추가하여 패키지를 고정합니다.
exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-mongosh,mongodb-org-mongos,mongodb-org-tools
MongoDB Community Edition 실행
전제 조건
ulimit
대부분의 Unix 계열 운영 체제는 프로세스 가 사용할 수 있는 시스템 리소스를 제한합니다. 이러한 제한은 MongoDB 작업에 부정적인 영향 수 있으므로 조정해야 합니다. 플랫폼에 권장 되는 설정은 자체 관리 배포서버를 위한 UNIX ulimit
설정을 참조하세요.
참고
열려 있는 파일 수의 ulimit
값이 64000
미만인 경우 MongoDB가 시작 경고를 생성합니다.
디렉토리 경로
다음과 같이 기본 디렉터리를 사용하세요.
기본적으로 MongoDB는 mongod
사용자 계정을 사용하여 실행되며 다음 기본 디렉토리를 사용합니다.
/var/lib/mongo
(데이터 디렉토리)/var/log/mongodb
(로그 디렉토리)
패키지 관리자는 설치 과정에서 기본 디렉토리를 생성합니다. 소유자 및 그룹 이름은 mongod
입니다.
기본 디렉토리 사용
기본 디렉토리 이외의 데이터 디렉토리 및 로그 디렉토리를 사용하려면 다음을 실행합니다.
새 디렉토리를 하나 이상 생성합니다.
구성 파일
/etc/mongod.conf
를 편집하고 그에 따라 다음 필드를 수정합니다.storage.dbPath
로 새로운 데이터 디렉토리 경로 지정(예:/some/data/directory
)systemLog.path
로 새로운 로그 파일 경로 지정(예:/some/log/directory/mongod.log
)
MongoDB를 실행하는 사용자가 디렉토리에 액세스할 수 있는지 확인합니다.
sudo chown -R mongod:mongod <directory> MongoDB 프로세스를 실행하는 사용자를 변경하려면 새로운 사용자에게 디렉토리 액세스 권한을 부여해야 합니다.
적용되는 경우 SELinux를 구성합니다. SELinux 구성을 참고합니다.
SELinux 구성
중요
SELinux가 enforcing
모드인 경우 다음 두 가지 정책 조정을 수행하여 MongoDB에 대한 SELinux 정책을 사용자 지정해야 합니다.
다음에 대한 액세스 허용 cgroup
현재 SELinux 정책은 MongoDB 프로세스가 시스템에서 사용 가능한 메모리를 결정하는 데 필요한 /sys/fs/cgroup
에 접근하는 것을 허용하지 않습니다.enforcing
모드에서 SELinux를 실행하려면 SELinux 정책을 다음과 같이 조정해야 합니다.
시스템에
checkpolicy
패키지가 설치되어 있는지 확인합니다:sudo yum install checkpolicy 사용자 지정 정책 파일
mongodb_cgroup_memory.te
을 만듭니다.cat > mongodb_cgroup_memory.te <<EOF module mongodb_cgroup_memory 1.0; require { type cgroup_t; type mongod_t; class dir search; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir search; allow mongod_t cgroup_t:file { getattr open read }; EOF 생성되면 다음 세 가지 명령을 실행하여 사용자 지정 정책 모듈을 컴파일하고 로드합니다.
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod sudo semodule -i mongodb_cgroup_memory.pp
이제 SELinux를 enforcing
로 설정하여 MongoDB 프로세스가 올바른 파일에 액세스할 수 있습니다.
FTDC에 대한 액세스 허용<a class=\" \" href=\" \" title=\" \"><svg netstat
xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
현재 SELinux 정책은 MongoDB 프로세스가 FTDC (풀타임 진단 데이터 캡처)에 필요한 /proc/net/netstat
을 열고 읽는 것을 허용하지 않습니다.enforcing
모드에서 SELinux를 실행하려면 SELinux 정책을 다음과 같이 조정해야 합니다.
시스템에
checkpolicy
패키지가 설치되어 있는지 확인합니다:sudo yum install checkpolicy 사용자 지정 정책 파일
mongodb_proc_net.te
을 만듭니다.cat > mongodb_proc_net.te <<EOF module mongodb_proc_net 1.0; require { type cgroup_t; type configfs_t; type file_type; type mongod_t; type proc_net_t; type sysctl_fs_t; type var_lib_nfs_t; class dir { search getattr }; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir { search getattr } ; allow mongod_t cgroup_t:file { getattr open read }; allow mongod_t configfs_t:dir getattr; allow mongod_t file_type:dir { getattr search }; allow mongod_t file_type:file getattr; allow mongod_t proc_net_t:file { open read }; allow mongod_t sysctl_fs_t:dir search; allow mongod_t var_lib_nfs_t:dir search; EOF 생성되면 다음 세 가지 명령을 실행하여 사용자 지정 정책 모듈을 컴파일하고 로드합니다.
checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod sudo semodule -i mongodb_proc_net.pp
중요
위의 내용 외에도 SELinux가 enforcing
모드인 경우 다음 두 가지 경우에 SELinux 정책을 추가로 사용자 지정해야 합니다.
RHEL 에서 기본값
pidFilePath
,systemLog.path
또는dbPath
을(를) 사용하는 대신 사용자 지정 디렉토리 경로 를 사용하고 7 있습니다. 이상0 및/또는기본 MongoDB 포트를 사용하는 대신 사용자 지정 포트 를 사용하고 있습니다.
사용자 정의 MongoDB 디렉토리 경로 사용하기
mongod
서비스가 새 디렉터리를 사용할 수 있도록 SELinux 정책을 업데이트하세요.sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*> 여기서 다음 유형 중 하나를 적절히 지정합니다.
mongod_var_lib_t
데이터 디렉토리의 경우mongod_log_t
로그 파일 디렉토리의 경우mongod_var_run_t
pid 파일 디렉토리의 경우
참고
디렉토리 끝에
.*
을 포함하는 것을 잊지 마세요.새 디렉터리에 대한 SELinux 사용자 정책을 업데이트하세요.
sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory> 여기서 다음 유형 중 하나를 적절히 지정합니다.
mongod_var_lib_t
데이터 디렉토리의 경우mongod_log_t
로그 디렉토리의 경우mongod_var_run_t
pid 파일 디렉토리의 경우
업데이트된 SELinux 정책을 디렉터리에 적용합니다.
sudo restorecon -R -v </some/MongoDB/directory>
예를 들면 다음과 같습니다.
팁
semanage fcontext
작업의 경우 디렉터리 끝에 .*
를 반드시 포함시키세요.
/mongodb/data
의 기본이 아닌 MongoDB 데이터 경로를 사용하는 경우:sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*' sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data' sudo restorecon -R -v '/mongodb/data' 기본값이 아닌
/mongodb/log
의 MongoDB 로그 디렉터리를 사용하는 경우 (예: 로그 파일 경로가/mongodb/log/mongod.log
인 경우):sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*' sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log' sudo restorecon -R -v '/mongodb/log'
사용자 지정 MongoDB 포트 사용하기
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>
참고
사용자 지정 포트를 인식하려면 mongod
를 다시 시작해야 할 수도 있습니다.
절차
다음 단계에 따라 시스템에서 MongoDB Community Edition을 실행합니다. 이 지침은 기본 설정을 사용한다고 가정합니다.
init 시스템
mongod
을 실행하고 관리하기 위해 운영 체제에 내장된 init 시스템을 사용하게 됩니다. 최신 버전의 Linux는 systemctl
명령을 사용하는 systemd를 사용하는 경향이 있는 반면, 구버전은 service
명령을 사용하는 System V init를 주로 사용합니다.
플랫폼에서 사용하는 init 시스템을 정확히 알 수 없다면 다음 명령을 실행합니다.
ps --no-headers -o comm 1
이후 결과에 따라 아래에서 적절한 탭을 선택합니다.
systemd
- 아래의 systemd(systemctl) 탭을 선택합니다.init
- 아래의 System V Init(서비스) 탭을 선택합니다.
MongoDB가 성공적으로 시작되었는지 확인합니다.
다음 명령을 실행하여 mongod
프로세스가 성공적으로 시작되었는지 확인할 수 있습니다:
sudo systemctl status mongod
선택적으로 다음 명령을 실행하여 시스템 재부팅 후 MongoDB가 시작되도록 할 수 있습니다.
sudo systemctl enable mongod
MongoDB를 중지합니다.
필요에 따라 다음 명령을 실행하여 mongod
프로세스를 중지할 수 있습니다.
sudo systemctl stop mongod
MongoDB를 다시 시작합니다.
다음 명령을 실행하여 mongod
프로세스를 다시 시작할 수 있습니다:
sudo systemctl restart mongod
/var/log/mongodb/mongod.log
파일의 출력을 확인하여 오류나 중요한 메시지에 대한 프로세스 상태를 따를 수 있습니다.
MongoDB 사용을 시작합니다.
mongod
와 동일한 호스트 머신에서 mongosh
세션을 시작합니다. 명령줄 옵션 없이 mongosh
를 실행하여 기본 포트 27017에서 localhost에서 실행 중인 mongod
에 연결할 수 있습니다.
mongosh
다른 호스트 및/또는 포트에서 실행하는 mongod
인스턴스에 연결하는 등 mongosh
(을)를 사용하여 연결하는 방법에 대한 자세한 내용은 mongosh 문서를 참조하세요.
MongoDB는 사용을 시작하는 데 도움이 되도록 다양한 드라이버 에디션에 대해 시작 가이드를 제공합니다. 드라이버 설명서는 MongoDB로 개발 시작하기를 참조하세요.
MongoDB를 시작합니다.
다음 명령을 실행하여 mongod
프로세스를 시작할 수 있습니다:
sudo service mongod start
MongoDB가 성공적으로 시작되었는지 확인합니다.
/var/log/mongodb/mongod.log
의 로그 파일 내용을 확인하여 mongod
프로세스가 성공적으로 시작되었는지 확인할 수 있습니다.
[initandlisten] waiting for connections on port <port>
여기서 <port>
는 기본적으로 /etc/mongod.conf
, 27017
에 구성된 포트입니다.
선택적으로 다음 명령을 실행하여 시스템 재부팅 후 MongoDB가 시작되도록 할 수 있습니다.
sudo chkconfig mongod on
MongoDB를 중지합니다.
필요에 따라 다음 명령을 실행하여 mongod
프로세스를 중지할 수 있습니다.
sudo service mongod stop
MongoDB를 다시 시작합니다.
다음 명령을 실행하여 mongod
프로세스를 다시 시작할 수 있습니다:
sudo service mongod restart
/var/log/mongodb/mongod.log
파일의 출력을 확인하여 오류나 중요한 메시지에 대한 프로세스 상태를 따를 수 있습니다.
MongoDB 사용을 시작합니다.
mongod
와 동일한 호스트 머신에서 mongosh
세션을 시작합니다. 명령줄 옵션 없이 mongosh
를 실행하여 기본 포트 27017에서 localhost에서 실행 중인 mongod
에 연결할 수 있습니다.
mongosh
다른 호스트 및/또는 포트에서 실행하는 mongod
인스턴스에 연결하는 등 mongosh
(을)를 사용하여 연결하는 방법에 대한 자세한 내용은 mongosh 문서를 참조하세요.
MongoDB는 사용을 시작하는 데 도움이 되도록 다양한 드라이버 에디션에 대해 시작 가이드를 제공합니다. 드라이버 설명서는 MongoDB로 개발 시작하기를 참조하세요.
MongoDB Community Edition 제거
시스템에서 MongoDB를 완전히 제거하려면 MongoDB 애플리케이션 자체와 구성 파일 및 데이터와 로그가 포함된 모든 디렉토리를 제거해야 합니다. 다음 섹션에서는 필요한 단계를 안내합니다.
경고
이 프로세스는 MongoDB와 그 구성, 모든 데이터베이스를 완전히 제거합니다. 이 프로세스는 되돌릴 수 없으므로 모든 구성과 데이터의 백업 여부를 확인한 이후에 진행해야 합니다.
MongoDB를 중지합니다.
다음 명령을 실행하여 mongod
프로세스를 중지합니다.
sudo service mongod stop
추가 정보
기본 로컬 호스트 바인딩
By default, MongoDB launches with bindIp
set to 127.0.0.1
, which binds to the localhost network interface. This means that the mongod
can only accept connections from clients that are running on the same machine. Remote clients will not be able to connect to the mongod
, and the mongod
will not be able to initialize a replica set unless this value is set to a valid network interface which is accessible from the remote clients.
이 값은 다음 중 한 가지 방법으로 구성할 수 있습니다.
경고
로컬 호스트가 아닌 에 바인딩하기 전에(예: 공개적으로 액세스할 수 있는) IP 주소 인 경우 무단 액세스 로부터 클러스터 를 보호했는지 확인합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버를 위한 보안 체크리스트를 참조하세요. 최소한 인증 을 활성화 하고 네트워크 인프라를 강화하는 것을 고려하세요.
bindIp
구성에 대한 자세한 내용 은 자체 관리 배포서버의 IP 바인딩을 참조하세요.
MongoDB Community Edition 패키지
MongoDB Community Edition은 자체 전용 리포지토리에서 사용할 수 있으며 다음과 같은 공식 지원 패키지를 포함합니다.
패키지 이름 | 설명 | ||||||
---|---|---|---|---|---|---|---|
mongodb-org | metapackage 는 아래 나열된 구성요소 패키지를 자동으로 설치합니다. | ||||||
mongodb-org-database | |||||||
mongodb-mongosh | MongoDB Shell( mongosh )을 포함합니다. | ||||||
mongodb-org-tools |
|