MongoDB 인기 있는 오픈 소스 고성능 NoSQL 데이터베이스입니다. 이 문서에서는 Azure CLI를 사용하여 Linux VM에 MongoDB를 설치하고 구성하는 방법을 보여줍니다. 다음 방법을 자세히 설명하는 예제가 나와 있습니다.
- 기본 MongoDB 인스턴스 수동으로 설치 및 구성
- Resource Manager 템플릿 사용하여 기본 MongoDB 인스턴스 만들기
- Resource Manager 템플릿 사용하여 복제본 집합이 있는 복잡한 MongoDB 분할 클러스터 만들기
VM에 MongoDB 수동 설치 및 구성
MongoDB Red Hat/CentOS, SUSE, Ubuntu 및 Debian을 비롯한 Linux 배포판에 대한 설치 지침을 제공합니다. 다음 예제에서는 CentOS VM을 만듭니다. 이 환경을 만들려면 최신 Azure CLI 설치하고 az login사용하여 Azure 계정에 로그인해야 합니다.
az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
az vm create로 VM을 만듭니다. 다음 예제에서는 SSH 공개 키 인증을 사용하여 myVM이라는 이름의 VM을 azureuser 사용자와 함께 만듭니다.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image CentOS \
--admin-username azureuser \
--generate-ssh-keys
사용자 고유의 사용자 이름과 이전 단계의 출력에 나열된 publicIpAddress 사용하여 VM에 SSH합니다.
ssh azureuser@<publicIpAddress>
MongoDB에 대한 설치 원본을 추가하려면 다음과 같이 yum 리포지토리 파일을 만듭니다.
sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo
편집용 MongoDB 리포지토리 파일(예: vi 또는 nano)을 엽니다. 다음 줄을 추가합니다.
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
다음과 같이 yum 사용하여 MongoDB를 설치합니다.
sudo yum install -y mongodb-org
기본적으로 SELinux는 MongoDB에 액세스하지 못하게 하는 CentOS 이미지에 적용됩니다. 정책 관리 도구를 설치하고 다음과 같이 MongoDB가 기본 TCP 포트 27017에서 작동할 수 있도록 SELinux를 구성합니다.
sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017
다음과 같이 MongoDB 서비스를 시작합니다.
sudo service mongod start
로컬 mongo 클라이언트를 사용하여 연결하여 MongoDB 설치를 확인합니다.
mongo
이제 일부 데이터를 추가한 다음 검색하여 MongoDB 인스턴스를 테스트합니다.
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
원하는 경우 시스템을 다시 부팅하는 동안 자동으로 시작되도록 MongoDB를 구성합니다.
sudo chkconfig mongod on
템플릿을 사용하여 CentOS에서 기본 MongoDB 인스턴스 만들기
GitHub에서 다음 Azure 빠른 시작 템플릿을 사용하여 단일 CentOS VM에 기본 MongoDB 인스턴스를 만들 수 있습니다. 이 템플릿은 Linux용 사용자 지정 스크립트 확장을 사용하여 새로 만든 CentOS VM에 yum 리포지토리를 추가한 다음 MongoDB를 설치합니다.
이 환경을 만들려면 최신 Azure CLI 설치하고 az login사용하여 Azure 계정에 로그인해야 합니다. 먼저 az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
다음으로, MongoDB 템플릿을 az deployment group create을 사용하여 배포합니다. 메시지가 표시되면 newStorageAccountName, dnsNameForPublicIP및 관리자 사용자 이름 및 암호에 고유한 값을 입력합니다.
az deployment group create --resource-group myResourceGroup \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
VM의 공용 DNS 주소를 사용하여 VM에 로그온합니다. az vm show사용하여 공용 DNS 주소를 볼 수 있습니다.
az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv
사용자 고유의 사용자 이름 및 공용 DNS 주소를 사용하여 VM에 SSH:
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com
다음과 같이 로컬 mongo 클라이언트를 사용하여 연결하여 MongoDB 설치를 확인합니다.
mongo
이제 다음과 같이 일부 데이터를 추가하고 검색하여 인스턴스를 테스트합니다.
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
템플릿을 사용하여 CentOS에서 복잡한 MongoDB 분할된 클러스터 만들기
GitHub에서 다음 Azure 빠른 시작 템플릿을 사용하여 복잡한 MongoDB 분할된 클러스터를 만들 수 있습니다. 이 템플릿은 중복성과 고가용성을 제공하기 위해 MongoDB 분할 클러스터 모범 사례를 따릅니다. 템플릿은 각 복제본 집합에 3개의 노드가 있는 두 개의 분할된 데이터베이스를 만듭니다. 또한 3개의 노드가 있는 하나의 구성 서버 복제본 집합과 두 개의 mongos 라우터 서버를 만들어 분할된 데이터베이스 전체의 애플리케이션에 일관성을 제공합니다.
- CentOS에서의 MongoDB 샤딩 클러스터 - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
경고
이 복잡한 MongoDB 분할된 클러스터를 배포하려면 20개 이상의 코어가 필요하며, 이는 일반적으로 구독의 지역당 기본 코어 수입니다. 핵심 수를 늘리려면 Azure 지원 요청을 엽니다.
이 환경을 만들려면 최신 Azure CLI 설치하고 az login사용하여 Azure 계정에 로그인해야 합니다. 먼저 az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
다음으로, MongoDB 템플릿을 az deployment group create을 사용하여 배포합니다. 필요한 경우 mongoAdminUsername, sizeOfDataDiskInGB, 및 configNodeVmSize와 같은 고유한 리소스 이름과 크기를 정의하십시오.
az deployment group create --resource-group myResourceGroup \
--parameters '{"adminUsername": {"value": "azureuser"},
"adminPassword": {"value": "P@ssw0rd!"},
"mongoAdminUsername": {"value": "mongoadmin"},
"mongoAdminPassword": {"value": "P@ssw0rd!"},
"dnsNamePrefix": {"value": "mypublicdns"},
"environment": {"value": "AzureCloud"},
"numDataDisks": {"value": "4"},
"sizeOfDataDiskInGB": {"value": 20},
"centOsVersion": {"value": "7.0"},
"routerNodeVmSize": {"value": "Standard_DS3_v2"},
"configNodeVmSize": {"value": "Standard_DS3_v2"},
"replicaNodeVmSize": {"value": "Standard_DS3_v2"},
"zabbixServerIPAddress": {"value": "Null"}}' \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json \
--name myMongoDBCluster \
--no-wait
이 배포는 모든 VM 인스턴스를 배포하고 구성하는 데 1시간 이상 걸릴 수 있습니다.
--no-wait 플래그는 Azure 플랫폼에서 템플릿 배포를 수락한 후 명령 프롬프트에 제어를 반환하기 위해 이전 명령의 끝에 사용됩니다. 그런 다음 az deployment group show사용하여 배포 상태를 볼 수 있습니다. 다음 예제에서는 myResourceGroup 리소스 그룹에서 myMongoDBCluster 배포의 상태를 확인합니다.
az deployment group show \
--resource-group myResourceGroup \
--name myMongoDBCluster \
--query [properties.provisioningState] \
--output tsv
다음 단계
이 예제에서는 VM에서 MongoDB 인스턴스에 로컬로 연결합니다. 다른 VM 또는 네트워크에서 MongoDB 인스턴스에 연결하려면 적절한 네트워크 보안 그룹 규칙이만들어지도록 합니다.
이러한 예제에서는 개발 목적으로 핵심 MongoDB 환경을 배포합니다. 사용자 환경에 필요한 보안 구성 옵션을 적용합니다. 자세한 내용은 MongoDB 보안 문서참조하세요.
템플릿을 사용하여 만드는 방법에 대한 자세한 내용은 Azure Resource Manager 개요참조하세요.
Azure Resource Manager 템플릿은 사용자 지정 스크립트 확장을 사용하여 VM에서 스크립트를 다운로드하고 실행합니다. Azure 사용자 지정 스크립트 확장을 Linux 가상 머신과 함께 사용하는 방법에 대한 자세한 내용은 을(를) 참조하고을(를) 참조하세요.