Azure Cosmos DB for MongoDB vCore에서 지역 간 클러스터 복제본 만들기 및 사용
이 가이드에서는 DR(재해 복구) 용도로 Azure Cosmos DB for MongoDB vCore 클러스터에 대한 클러스터 복제본을 다른 지역에 만듭니다. 이 복제본 클러스터는 데이터베이스, 컬렉션, 문서 등 모든 MongoDB 리소스의 복사본을 다른 Azure 지역에 저장합니다. 복제본 클러스터는 다양한 도구와 SDK가 연결할 수 있는 고유한 엔드포인트를 제공하며, 기본 지역이 중단되는 경우 쓰기에 사용할 수 있도록 승격될 수 있습니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- MongoDB 셸
다른 지역에 새 클러스터 및 해당 복제본 만들기
Azure Cosmos DB for MongoDB vCore를 사용하여 다른 지역에 클러스터 읽기 복제본이 있는 MongoDB 클러스터를 만듭니다.
팁
이 가이드에서는 msdocs-cosmos-quickstart-rg
리소스 그룹 이름을 사용하는 것이 좋습니다.
Azure Portal에 로그인합니다.
Azure Portal 메뉴 또는 홈 페이지에서 리소스 만들기를 선택합니다.
새로 만들기 페이지에서 Azure Cosmos DB를 검색하여 선택합니다.
워크로드에 가장 적합한 API 페이지의 Azure Cosmos DB for MongoDB 섹션에서 만들기 옵션을 선택합니다.
어떤 유형의 리소스인가요? 페이지에서 vCore 클러스터 섹션 내에서 만들기 옵션을 선택합니다. 자세한 내용은 Azure Cosmos DB for MongoDB의 vCore 아키텍처에 대한 개요를 참조하세요.
Azure Cosmos DB for MongoDB 클러스터 만들기 페이지에서 클러스터 계층 내의 구성 옵션을 선택합니다.
크기 조정 페이지에서 옵션을 기본값으로 설정합니다.
설정 값 분할된 데이터베이스 수 분할된 데이터베이스 1대 클러스터 계층 M30 계층, vCore 2개, 8GiB RAM 스토리지 128GiB 고가용성 옵션을 선택 취소합니다. HA(고가용성) 승인 섹션에서 이해함을 선택합니다. 마지막으로 저장 을 선택하여 클러스터 구성에 대한 변경 내용을 유지합니다.
지역 내 고가용성에서는 클러스터에 있는 각 분할된 데이터베이스의 데이터 복사본이 동일한 지역에 있지만 다른 AZ(가용성 영역)에 있는 대기 대응으로 스트리밍되는 지역 내 솔루션을 제공합니다. 고가용성은 데이터 손실이 없는 동기 복제와 자동 오류 검색 및 장애 조치(failover) 후 연결 문자열을 그대로 보존하는 장애 조치(failover) 기능을 사용합니다. 실패로부터 추가적인 보호 계층을 위해 기본 클러스터에서 고가용성을 사용하도록 설정할 수 있습니다.
클러스터 페이지로 돌아가서 다음 정보를 입력합니다.
설정 값 Description 구독 구독 이름 이 Azure Cosmos DB for MongoDB 클러스터 및 해당 복제본 클러스터에 사용하려는 Azure 구독을 선택합니다. Resource group 리소스 그룹 이름 리소스 그룹을 선택하거나 새로 만들기를 선택한 후, 새 리소스 그룹에 고유한 이름을 입력합니다. 클러스터 이름 전역적으로 고유한 이름 Azure Cosmos DB for MongoDB 클러스터 계정을 식별하는 이름을 입력합니다. 이름은 mongodbcluster.cosmos.azure.com 이라는 접미사가 있는 FQDN(정규화된 도메인 이름)의 일부로 사용되므로 이름은 전역적으로 고유해야 합니다. 이름은 소문자, 숫자 및 하이픈(-) 문자만 포함할 수 있으며, 이름은 길이가 3자에서 40자 사이여야 합니다. 위치 사용자와 가장 가까운 지역 읽기 및 쓰기 기능이 있는 Azure Cosmos DB for MongoDB 클러스터(기본 클러스터)를 호스팅할 지리적 위치를 선택합니다. 데이터에 가장 빨리 액세스할 수 있도록 사용자와 가장 가까운 위치를 사용합니다. MongoDB 버전 클러스터에서 실행할 MongoDB 버전 이 값은 사용 가능한 최신 MongoDB 버전의 기본값으로 설정됩니다. 관리자 사용자 이름 클러스터에 액세스하기 위한 사용자 이름을 제공합니다 이 사용자는 클러스터에서 사용자 관리자로 만들어집니다. 암호 고유한 암호를 사용하여 사용자 이름과 페어링 암호는 8자 이상이어야 하며 최대 128자여야 합니다. 다음: 전역 배포를 선택합니다.
전역 배포 탭에서 다른 지역에서 읽기용 복제본 사용을 선택하여 이 새로운 기본 클러스터 프로비저닝의 일부로 클러스터 읽기 복제본을 만듭니다.
읽기 복제본 이름 필드에 클러스터 읽기 복제본의 이름을 입력합니다. 전역적으로 고유한 클러스터 이름이어야 합니다.
읽기 복제본 지역 드롭다운 목록에서 값을 선택합니다.
다음: 네트워킹을 선택합니다.
네트워킹 탭에서 현재 클라이언트 IP 주소 추가를 선택하여 Azure 시스템에서 인식하는 컴퓨터의 공용 IP 주소로 방화벽 규칙을 만듭니다.
구성을 저장하기 전에 사용자의 IP 주소를 확인합니다. 상황에 따라 Azure Portal에서 관찰하는 IP 주소는 인터넷 및 Azure 서비스에 액세스할 때 사용된 IP 주소와 다릅니다. 따라서 규칙 함수가 예상대로 작동하도록 시작 IP와 끝 IP를 변경해야 할 수도 있습니다. 검색 엔진 또는 다른 온라인 도구를 사용하여 사용자 고유의 IP 주소를 확인합니다. 예를 들어 내 IP란?을 검색합니다.
0.0.0.0 - 255.255.255.255 방화벽 규칙 추가를 선택하여 IP뿐만 아니라 전체 인터넷이 클러스터에 액세스할 수 있도록 허용할 수도 있습니다. 이 경우에도 클라이언트가 클러스터를 사용하려면 올바른 사용자 이름과 암호로 로그인해야 합니다. 그렇지만 전 세계 액세스는 짧은 기간 동안 프로덕션 이외 데이터베이스에 대해서만 허용하는 것이 가장 좋습니다.
검토 + 만들기를 선택합니다.
제공한 설정을 검토한 다음, 만들기를 선택합니다. 클러스터를 만드는 데 몇 분이 걸립니다. 포털 페이지에 배포가 완료됨이 표시될 때까지 기다린 다음, 계속 진행합니다.
리소스로 이동을 선택하여 Azure Cosmos DB for MongoDB 클러스터 페이지로 이동합니다.
주 클러스터에 연결 및 데이터 수집
Azure Portal에서 기본(읽기-쓰기) 클러스터에 연결하는 데 필요한 연결 문자열을 가져옵니다.
Azure Cosmos DB for MongoDB vCore 기본 클러스터 페이지에서 설정 아래 연결 문자열 탐색 메뉴 옵션을 선택합니다.
자체(항상 이 클러스터) 필드에서 값을 복사합니다.
명령줄에서 MongoDB 셸을 사용하여 연결 문자열을 사용하여 주 클러스터에 연결합니다.
mongosh "mongodb+srv://<user>@<primary_cluster_name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
데이터 수집
my_script.js 스크립트 파일을 만들어 MongoDB 셸에서 실행합니다.
let dogDocs = [
{
name: "pooch",
breed: "poodle",
weight: "6 lbs"
},
{
name: "mutt",
breed: "bulldog",
weight: "10 lbs"
}
];
let catDocs = [
{
name: "minni",
breed: "persian",
color: "white"
},
{
name: "tinkle",
breed: "bombay",
color: "black"
}
];
let dogIndex = { name : 1 };
let catIndex = { name : 1 };
let collInfoObjs = [
{ coll: "dogs", data: dogDocs, index: dogIndex },
{ coll: "cats", data: catDocs, index: catIndex }
];
for (obj of collInfoObjs) {
db[obj.coll].insertMany(obj.data);
db[obj.coll].createIndex(obj.index);
}
이 스크립트 파일은 두 개의 컬렉션을 만들고 데이터가 있는 문서를 해당 컬렉션에 삽입합니다. MongoDB 셸 세션에 액세스할 수 있는 폴더에 my_script.js 파일을 저장합니다.
기본 MongoDB 클러스터에 연결된 MongoDB 셸에서 스크립트를 실행합니다.
load(my_script.js);
주 MongoDB 클러스터에 연결된 MongoDB 셸에서 데이터베이스에서 데이터를 읽습니다.
db.dogs.find();
db.cats.find();
복제본 클러스터에 대한 액세스 사용
Important
복제본 클러스터는 항상 네트워킹 액세스를 사용하지 않도록 설정하여 만들어집니다. 읽기 작업을 사용하도록 설정하려면 방화벽 규칙을 만들거나 복제본 클러스터에 프라이빗 엔드포인트를 만들어야 합니다.
Azure Cosmos DB for MongoDB vCore 기본 클러스터 페이지에서 설정에서 전역 배포 페이지를 선택합니다.
읽기 복제본 필드에서 클러스터 복제본 이름을 선택하여 Azure Portal에서 클러스터 복제본 읽기 속성을 엽니다.
MongoDB vCore 복제본 클러스터 페이지의 설정아래에서 네트워킹을 선택합니다.
네트워킹 페이지에서 현재 클라이언트 IP 주소 추가를 선택하여 Azure 시스템에서 인식하는 컴퓨터의 공용 IP 주소로 방화벽 규칙을 만듭니다.
구성을 저장하기 전에 사용자의 IP 주소를 확인합니다. 상황에 따라 Azure Portal에서 관찰하는 IP 주소는 인터넷 및 Azure 서비스에 액세스할 때 사용된 IP 주소와 다릅니다. 0.0.0.0 - 255.255.255.255 방화벽 규칙 추가를 선택하여 IP뿐만 아니라 전체 인터넷이 클러스터에 액세스할 수 있도록 허용할 수도 있습니다. 이 경우에도 클라이언트가 클러스터를 사용하려면 올바른 사용자 이름과 암호로 로그인해야 합니다.
도구 모음에서 저장을 선택하여 설정을 저장합니다. 업데이트된 네트워킹 설정이 적용되려면 몇 분 정도 걸릴 수 있습니다.
다른 지역의 읽기 복제본 클러스터에 연결하여 데이터 읽기
다른 지역의 읽기 클러스터 복제본에 대한 연결 문자열을 가져옵니다.
복제본 클러스터 사이드바의 클러스터 관리 아래에서 연결 문자열을 선택합니다.
연결 문자열 필드에서 값을 복사합니다.
Important
읽기 복제본 클러스터의 연결 문자열에는 복제본을 만드는 동안 선택한 고유한 복제본 클러스터 이름이 포함됩니다. 읽기 복제본 클러스터의 사용자 이름 및 암호 값은 항상 주 클러스터의 사용자 이름과 동일합니다.
명령줄에서 MongDB 셸을 사용하여 연결 문자열을 사용하여 읽기 복제본 클러스터에 연결합니다.
mongosh "mongodb+srv://<user>@<cluster_replica_name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
복제본 클러스터에서 데이터 읽기
복제본 클러스터에 연결된 MongoDB 셸에서 데이터베이스에서 데이터를 읽습니다.
db.dogs.find();
db.cats.find();
복제본 클러스터 승격
클러스터 읽기 복제본을 읽기-쓰기 클러스터로 승격하려면 다음 단계를 수행합니다.
포털에서 읽기 복제본 클러스터를 선택합니다.
클러스터 사이드바의 클러스터 관리에서 전역 배포를 선택합니다.
전역 배포 페이지에서 도구 모음에서 승격을 선택하여 읽기-쓰기 클러스터에 대한 읽기 복제본 승격을 시작합니다.
클러스터 수준 올리기 팝업 창에서 복제본 승격의 작동 방식을 이해하고 수준 올리기를 선택합니다. 복제본 승격을 완료하는 데 몇 분 정도 걸릴 수 있습니다.
승격된 클러스터 복제본에 쓰기
복제본 승격이 완료되면 승격된 복제본을 쓰기에 사용할 수 있게 되고 이전 주 클러스터는 읽기 전용으로 설정됩니다.
명령줄에서 MongDB 셸을 사용하여 연결 문자열을 사용하여 승격된 복제본 클러스터에 연결합니다.
mongosh "mongodb+srv://<user>@<promoted_replica_cluster_name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
MongoDB 셸 세션에서 쓰기 작업을 수행합니다.
db.createCollection('foxes')
명령줄에서 MongDB 셸을 사용하여 연결 문자열을 사용하여 새 복제 클러스터(이전 기본 클러스터)에 연결합니다. 자체 연결 문자열 또는 전역 읽기/쓰기 연결 문자열 사용할 수 있습니다.
mongosh "mongodb+srv://<user>@<new_replica_cluster_name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
MongoDB 셸에서 새 복제본(이전 주 클러스터)에서 쓰기가 비활성화되어 있는지 확인합니다.
db.createCollection('bears')