1. 소개
Private Service Connect (PSC)는 서비스가 비공개로 안전하게 소비되는 방식을 간소화합니다. 이 모델을 사용하면 서비스 소비자가 조직 전반의 서비스 제작자와 비공개로 연결할 수 있어 네트워크 아키텍처가 훨씬 더 쉬워지고 가상 프라이빗 클라우드 피어링이 필요하지 않습니다. 그림 1은 VPC 피어링 및 PSC 속성을 보여줍니다.
그림 1.
서비스 소비자는 비공개 IP를 서비스에 할당하는 방법을 유연하게 선택할 수 있고 제작자 VPC의 서브넷 범위를 관리할 필요가 없습니다. 이제 서비스 연결을 사용하여 VPC에서 선택한 가상 IP를 이러한 서비스에 할당하기만 하면 됩니다.
이 Codelab에서는 MongoDB 아틀라스를 사용한 PSC 전역 액세스 사용 방법을 보여주는 포괄적인 Private Service Connect 아키텍처를 빌드합니다.
전역 액세스를 통해 클라이언트는 리전 경계를 넘어 PSC (Private Service Connect)에 연결할 수 있습니다. 이는 여러 리전에서 호스팅되는 관리형 서비스 전반에 걸쳐 고가용성을 만들거나 클라이언트가 클라이언트와 동일한 리전에 없는 서비스에 액세스하도록 허용하는 데 유용합니다.
2. 전역 액세스 사용 설정
전역 액세스는 소비자 측 전달 규칙에서 구성되는 선택적 기능입니다. 다음 명령어는 구성 방법을 보여줍니다.
gcloud beta compute forwarding-rules create psc-west \ --region=us-west1 \ --network=consumer-vpc \ --address=psc-west-address \ --target-service-attachment=projects/.../serviceAttachments/sa-west \ --allow-psc-global-access
--allow-psc-global-access
플래그는 Private Service Connect 엔드포인트에서 전역 액세스를 사용 설정합니다.- 전역 액세스를 사용하면 클라이언트가 Private Service Connect 전달 규칙과 다른 리전에 있을 수 있지만 전달 규칙은 연결된 서비스 연결과 동일한 리전에 있어야 합니다.
- 전역 액세스를 사용 설정하기 위해 프로듀서의 서비스 연결에 필요한 구성이 없습니다. 순수한 소비자 측 옵션입니다.
또한 기존 엔드포인트에 대한 전역 액세스는 언제든지 켜거나 끌 수 있습니다. 기존 엔드포인트에서 전역 액세스를 사용 설정할 때 활성 연결에 대한 트래픽 중단이 없습니다. 다음 명령어를 사용하여 기존 전달 규칙에 전역 액세스가 사용 설정되었습니다.
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
전역 액세스 사용 중지
--no-allow-psc-global-access
플래그를 사용하여 기존 전달 규칙에서 전역 액세스를 사용 중지할 수도 있습니다. 이 명령어를 실행하면 모든 활성 리전 간 트래픽이 종료됩니다.
gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access
3. 빌드할 항목
- 멀티 리전 MongoDB Atlas 클러스터 (그림 2에 설명된 토폴로지)가 us-west1에 각각 노드 1개와 us-west2 리전에 2개의 노드로 생성됩니다.
- us-west1 및 us-west2의 MongoDB 클러스터에 액세스하기 위한 소비자 VPC 및 관련 VM입니다.
- VPC 하나와 us-west1 및 us-west2 리전에 각각 VPC 1개와 서브넷 2개가 있으며 각 서브넷에 사용 가능한 IP 주소가 64개 이상 있습니다(/26 이하로 서브넷 만들기).
MongoDB 클라이언트는 소비자 VPC의 vm1에 설치됩니다. us-west1에서 기본 노드에 장애가 발생하면 클라이언트는 us-west2의 새 기본 노드를 통해 읽고 쓸 수 있습니다.
그림 2.
학습할 내용
- 두 리전에 배포된 VPC 및 서브넷을 만드는 방법
- 멀티 리전 MongoDB 아틀라스 클러스터를 배포하는 방법
- 비공개 엔드포인트를 만드는 방법
- MongoDB에 연결하는 방법
- 멀티 리전 MongoDB 장애 조치를 수행하고 검증하는 방법
필요한 항목
- Google Cloud 프로젝트
- 리전별 /26 서브넷 제공
- 클러스터 등급 M10 이상으로 MongoDB 클러스터를 만들 수 있는 MongoDB Atlas에 대한 프로젝트 소유자 또는 조직 소유자 액세스 권한 (GETATLAS를 사용하여 PoV 실행을 위한 무료 크레딧을 받으세요)
4. 시작하기 전에
Codelab을 지원하도록 프로젝트 업데이트
이 Codelab에서는 $variables를 사용하여 Cloud Shell에서 gcloud 구성을 구현하는 데 도움을 줍니다.
Cloud Shell 내에서 다음을 수행합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
5. 소비자 설정
소비자 VPC 만들기
Cloud Shell 내에서 다음을 수행합니다.
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
소비자 서브넷 만들기
Cloud Shell 내에서 다음을 수행합니다.
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
Cloud Shell 내에서 us-west1에 대한 소비자 엔드포인트를 만듭니다.
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
Cloud Shell 내에서 us-west2에 대한 소비자 엔드포인트를 만듭니다.
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
Cloud Router 및 NAT 구성
Cloud NAT는 Codelab에서 소프트웨어 패키지 설치에 사용됩니다. VM 인스턴스에 외부 IP 주소가 없기 때문입니다.
Cloud Shell 내에서 Cloud Router를 만듭니다.
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
Cloud Shell 내에서 NAT 게이트웨이를 만듭니다.
gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
인스턴스 vm1 구성
다음 섹션에서는 Compute Engine 인스턴스 vm1을 만듭니다.
Cloud Shell 내에서 vm1 인스턴스를 만듭니다.
gcloud compute instances create vm1 \
--project=$projectname \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=subnet=vm-subnet,no-address \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
IAP에서 VM 인스턴스에 연결할 수 있도록 허용하려면 다음과 같은 방화벽 규칙을 만듭니다.
- IAP를 사용하여 액세스할 수 있게 하려는 모든 VM 인스턴스에 적용됩니다.
- IP 범위 35.235.240.0/20에서 들어오는 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달에 사용하는 모든 IP 주소가 포함됩니다.
Cloud Shell 내에서 IAP 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create ssh-iap-consumer-vpc \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. 멀티 리전 MongoDB Atlas 클러스터 만들기
- PSC 설정을 시작하기 전에 Atlas 클러스터를 설정해야 합니다. 다음 두 가지 방법 중 하나로 MongoDB Atlas를 구독할 수 있습니다.
- Google Cloud 계정이 있는 경우 Google Cloud Marketplace를 통해 구매 구독을 설정하려면 문서를 참고하세요.
- Atlas 등록 페이지 사용
- Atlas에 가입한 후 아래와 같이 데이터베이스 구축 버튼을 클릭하세요.
- 새 클러스터 만들기 → 전용
- 클라우드 제공업체 및 리전 → Google Cloud
- 멀티 클라우드, 멀티 리전 및 워크로드 격리 → 선택됨 (파란색 확인)
- 선택 가능 노드 → us-west1 (노드 1개), us-west2 (노드 2개)
- 클러스터 등급 → M10, 다른 설정은 모두 기본값으로 유지
- 클러스터 이름 → psc-mongodb-uswest1-uswest2
- 선택 → 클러스터 만들기
- 데이터베이스 생성에 7~10분 소요
배포 후의 클러스터 뷰
7. us-west1용 비공개 엔드포인트 생성
- Atlas 계정에 로그인하고 프로젝트로 이동합니다.
모든 데이터베이스에 대한 읽기/쓰기 액세스 권한을 허용할 신규 사용자 만들기
보안 → 데이터베이스 액세스에서 '새 데이터베이스 사용자 추가'를 선택합니다. 다음은 Codelab으로 구성된 사용자 이름 및 비밀번호의 예입니다. 모든 데이터베이스 읽기 및 쓰기 기본 제공 역할을 선택해야 합니다.
- 보안 → 네트워크 액세스에서 IP 액세스 목록은 항목을 입력할 필요가 없습니다.
MongoDB Atlas에서 비공개 엔드포인트 준비하기
- 선택, 네트워크 액세스 → 비공개 엔드포인트 → 전용 클러스터 → 비공개 엔드포인트 추가
클라우드 제공업체
- Google Cloud를 선택한 후 다음을 선택합니다.
서비스 연결
- 리전, us-west1, 다음을 선택합니다.
엔드포인트
- Private Service Connect 엔드포인트를 만들려면 다음을 제공하세요.
- Google Cloud 프로젝트 ID: '안내 표시'를 선택합니다. 를 확인하세요.
- VPC 이름: consumer-vpc
- 서브넷 이름: psc-endpoint-us-west1
- Private Service Connect 엔드포인트 프리픽스: psc-endpoint-us-west1
엔드포인트 설정
다음 섹션에서는 setup_psc.sh라는 이름의 로컬에 저장해야 하는 셸 스크립트를 생성합니다. 저장되면 psc 전역 액세스를 허용하도록 셸 스크립트를 수정합니다. 이 작업은 Google Cloud 프로젝트 Cloud Shell 내에서 수행할 수 있습니다.
- 셸 스크립트 예시. 출력에 다른 값이 있음
- MongoBD 콘솔에서 셸 스크립트를 복사하고 Google Cloud Cloud Shell 터미널에 콘텐츠를 저장합니다. 스크립트를 setup_psc.sh로 저장해야 합니다.
업데이트 전의 예:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
전역 액세스를 지원하도록 셸 스크립트 업데이트
nano 또는 vi 편집기를 사용하여 아래 구문으로 셸 스크립트를 식별하고 업데이트합니다.
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
업데이트 후의 예:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
셸 스크립트 실행
atlasEndpoints-psc-endpoint-us-west1.json이라는 파일이 생성되면 setup_psc.sh 스크립트를 탐색하여 실행합니다. json 파일에는 배포의 다음 단계에 필요한 IP 주소 및 Private Service Connect 엔드포인트 이름의 목록이 포함되어 있습니다.
Cloud Shell 내에서 다음을 수행합니다.
sh setup_psc.sh
스크립트가 완료되면 Cloud Shell 편집기를 사용하여 atlasEndpoints-psc-endpoint-us-west1.json을 로컬에 다운로드합니다.
JSON 파일 업로드
이전에 저장한 json 파일 atlasEndpoints-psc-endpoint-us-west1.json을 업로드합니다.
만들기를 선택합니다.
Private Service Connect 엔드포인트 유효성 검사
MongoDB UI에서 프로젝트로 이동한 다음 보안 → 네트워크 액세스 → 비공개 엔드포인트로 이동합니다. 탭, 전용 클러스터를 선택하면 엔드포인트를 가용 상태로 전환하는 데 10분 정도 걸립니다.
사용 가능한 상태
Google Cloud 콘솔에서 네트워크 서비스 → Private Services Connect로 이동하여 소비자 엔드포인트 전환이 진행 중임을 나타내는 연결된 엔드포인트에서 대기 중 → 수락됨 탭을 선택합니다(아래 예 참고).
8. us-west2용 비공개 엔드포인트 생성
- Atlas 계정에 로그인하고 프로젝트로 이동합니다.
MongoDB Atlas에서 비공개 엔드포인트 준비하기
- 선택, 네트워크 액세스 → 비공개 엔드포인트 → 전용 클러스터 → 비공개 엔드포인트 추가
클라우드 제공업체
- Google Cloud를 선택한 후 다음을 선택합니다.
서비스 연결
- 리전, us-west2를 선택한 후 다음을 선택합니다.
엔드포인트
- Private Service Connect 엔드포인트를 만들려면 다음을 제공하세요.
- Google Cloud 프로젝트 ID: '안내 표시'를 선택합니다. 를 확인하세요.
- VPC 이름: consumer-vpc
- 서브넷 이름: psc-endpoint-us-west2
- Private Service Connect 엔드포인트 프리픽스: psc-endpoint-us-west2
엔드포인트 설정
다음 섹션에서는 setup_psc.sh라는 이름의 로컬에 저장해야 하는 셸 스크립트를 생성합니다. 저장되면 psc 전역 액세스를 허용하도록 셸 스크립트를 수정합니다. 이 작업은 Google Cloud 프로젝트 Cloud Shell 내에서 수행할 수 있습니다.
- 셸 스크립트 예시. 출력에 다른 값이 있음
- MongoBD 콘솔에서 셸 스크립트를 복사하고 Google Cloud Cloud Shell 터미널에 콘텐츠를 저장합니다. 스크립트를 setup_psc.sh로 저장해야 합니다.
업데이트 전의 예:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
전역 액세스를 지원하도록 셸 스크립트 업데이트
nano 또는 vi 편집기를 사용하여 아래 구문으로 셸 스크립트를 식별하고 업데이트합니다.
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
업데이트 후의 예:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
셸 스크립트 실행
atlasEndpoints-psc-endpoint-us-west2.json이라는 파일이 생성되면 setup_psc.sh 스크립트를 탐색하여 실행합니다. json 파일에는 배포의 다음 단계에 필요한 IP 주소 및 Private Service Connect 엔드포인트 이름의 목록이 포함되어 있습니다.
Cloud Shell 내에서 다음을 수행합니다.
sh setup_psc.sh
스크립트가 완료되면 Cloud Shell 편집기를 사용하여 atlasEndpoint-psc-endpoint-us-west2.json을 로컬로 다운로드합니다.
JSON 파일 업로드
이전에 저장한 json 파일 atlasEndpoints-psc-endpoint-us-west2.json을 업로드합니다.
만들기를 선택합니다.
Private Service Connect 엔드포인트 검증
MongoDB UI에서 프로젝트로 이동한 다음 보안 → 네트워크 액세스 → 비공개 엔드포인트로 이동합니다. 탭, 전용 클러스터를 선택하면 10분 후에 엔드포인트가 사용 가능한 상태로 전환됩니다.
사용 가능한 상태:
Google Cloud 콘솔에서 네트워크 서비스 → Private Services Connect로 이동하여 소비자 엔드포인트 전환이 진행 중임을 나타내는 연결된 엔드포인트에서 대기 중 → 수락됨 탭을 선택합니다(아래 예 참고). 총 100개의 엔드포인트가 소비자 엔드포인트에 배포됨 수락됨으로 전환되어야 합니다.
9. 비공개 엔드포인트에서 MongoDB 아틀라스에 연결
Private Service 연결이 수락되면 MongoDB 클러스터를 업데이트하는 데 추가 시간 (10~15분)이 필요합니다. MongoDB UI에서 회색 윤곽선은 클러스터 업데이트를 나타내므로 비공개 엔드포인트에 연결할 수 없습니다.
배포를 식별하고 연결을 선택합니다 (회색 상자는 더 이상 표시되지 않음).
연결 유형 선택 → 비공개 엔드포인트 선택, 연결 방법 선택 선택
'MongoDB 셸에 연결'을 선택합니다.
'MongoDB Shell'(Ubuntu 20.4)이 설치되어 있지 않고 1단계와 3단계의 내용을 메모장에 복사하도록 선택합니다.
10. Mongosh 애플리케이션 설치
설치하기 전에 1&3단계에서 얻은 이전에 복사한 값을 기반으로 명령 문자열을 만들어야 합니다. 그런 다음 Cloud Shell을 사용하여 vm1에 SSH로 연결한 다음 mongosh 애플리케이션을 설치하고 기본 데이터베이스 (us-west1)에 검증합니다. consumer-vpc에서 vm1을 생성할 때 Ubuntu 20.4 이미지가 설치되었습니다.
연결 방법 선택: 1단계, 다운로드 URL 복사
명령어 문자열 예를 맞춤 값으로 대체합니다.
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
연결 방법을 선택합니다(3단계).
명령어 문자열 예를 맞춤 값으로 대체합니다.
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
vm1에 로그인
Cloud Shell 내에서 다음을 수행합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell에서 IAP를 사용하여 vm1에 로그인하고 시간 초과가 발생하면 다시 시도합니다.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
OS에서 설치 수행
Cloud Shell OS 로그인에서 설치를 수행하고, 추가 세부정보를 볼 수 있음, 커스텀 문자열로 아래 구문을 업데이트합니다.
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
작업은
OK
.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update -y
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb
MongoDB 배포에 연결
Cloud Shell OS 로그인 내에서 다음을 수행합니다. 구성된 사용자 이름과 비밀번호는 Codelab입니다.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
예를 들어 다음과 같습니다.
데이터베이스에 대해 명령어 실행
Cloud Shell OS 로그인 내에서 다음을 수행합니다.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})
11. 활성 MongoDB 리전 장애 조치, us-west1
장애 조치를 수행하기 전에 us-west1이 기본이고 us-west2에 2개의 보조 노드가 있는지 확인합니다.
데이터베이스 → psc-mongodb-uswest1-uswest2 → 개요로 이동합니다.
다음 섹션에서 us-west1에 있는 vm1에 로그인하고 기본 MongoDB 클러스터 리전 us-west1에 장애 조치를 하고 us-west2의 MongoDB 클러스터에서 여전히 데이터베이스에 연결할 수 있는지 확인합니다.
Atlas UI에서 기본 및 리전 장애 조치를 모두 테스트할 수 있습니다.
- Atlas UI에 로그인합니다.
- 클러스터 이름 psc-mongodb-uswest1-uswest2 → Test Outage 옆에 있는 [...] 를 클릭합니다.
- 리전별 서비스 중단 → 리전 선택 선택
- 기본 리전인 us-west1→ 리전 서비스 중단 시뮬레이션을 선택합니다.
선택하면 3~4분 후에 클러스터에 중단 시뮬레이션이 표시됩니다.
창 닫기
us-west1이 다운되고 이제 us-west2가 기본 인스턴스로 인계되는지 확인합니다.
데이터베이스 → psc-mongodb-uswest1-uswest2 → 개요로 이동합니다.
새로운 기본 us-west2로 클러스터에 대한 연결 검증
us-west1에 있는 vm1에 로그인하고 us-west2의 mongodb에 액세스하여 비공개 서비스 연결 전역 액세스의 유효성을 검사합니다.
Cloud Shell 세션이 종료된 경우 다음을 수행합니다.
Cloud Shell 내에서 다음을 수행합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell에서 IAP를 사용하여 vm1에 로그인하고 시간 초과가 발생하면 다시 시도합니다.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
MongoDB 배포에 연결
Cloud Shell OS 로그인 내에서 다음을 수행합니다.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
예를 들어 다음과 같습니다.
데이터베이스에 대해 명령어 실행
Cloud Shell OS 로그인 내에서 다음을 수행합니다.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit
성공: PSC 글로벌 액세스가 리전 간 소비자 엔드포인트의 원활한 연결을 허용하여 고가용성을 지원하거나 리전별 서비스 중단을 방지하는 것을 검증했습니다. 이 Codelab에서는 MongoDB 리전 장애 조치가 us-west1에 있는 기본 노드에서 발생했으므로 보조 리전 us-west2가 기본 노드를 대신합니다. 클러스터로 인해 리전 서비스 중단이 발생했지만 us-west1에 있는 소비자 vm1은 us-west2의 새 기본 클러스터에 성공적으로 도달했습니다.
12. 삭제
Cloud 콘솔에서 소비자 엔드포인트를 삭제합니다.
네트워크 서비스 → Private Service Connect → 연결된 엔드포인트로 이동합니다.
psc-endpoint 필터를 사용하여 실험실이 아닌 소비자 엔드포인트의 삭제 가능성을 방지합니다. 모든 엔드포인트 선택 → 삭제
소비자 엔드포인트와 연결된 고정 내부 IP 주소를 삭제합니다.
VPC 네트워크로 이동 → consumer-vpc→ 고정 내부 IP 주소로 이동
psc-endpoint 필터를 사용하여 실험실 외의 소비자 엔드포인트가 삭제될 가능성을 방지하고 페이지당 행 수를 100개로 늘립니다. 모든 엔드포인트 선택 → 해제
Cloud Shell에서 Codelab 구성요소를 삭제합니다.
gcloud compute instances delete vm1 --zone=us-west1-a --quiet
gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute routers delete consumer-cr --region=us-west1 --quiet
gcloud compute networks delete consumer-vpc --quiet
Atlas UI에서 클러스터 psc-mongodb-uswest1-uswest2를 식별 → 시뮬레이션 종료
서비스 중단 시뮬레이션 종료를 선택합니다. —> 나가기
이제 클러스터가 us-west1을 기본으로 되돌리고 있으며, 이 프로세스는 3~4분 정도 걸립니다. 완료되면 클러스터를 종료합니다. 상태 변경을 나타내는 회색 윤곽선을 확인합니다.
클러스터 이름 삽입 → 종료
us-west1 및 us-west2와 연결된 비공개 엔드포인트 삭제
Atlas UI에서 Security(보안) → Network Access(네트워크 액세스) → Private Endpoint(사설 엔드포인트) → Terminate(종료)로 이동합니다.
13. 축하합니다
수고하셨습니다. 여러 리전에서 MongoDB에 대한 전역 액세스 권한이 있는 Private Service Connect 엔드포인트를 성공적으로 구성하고 검증했습니다. 소비자 VPC, 멀티 리전 MongoDB, 소비자 엔드포인트를 만들었습니다. us-west1에 위치한 VM이 리전별 장애 조치 시 us-west1 및 us-west2의 MongoDB에 성공적으로 연결되었습니다.
Cosmopup은 Codelab이 멋지다고 생각합니다.
다음 단계
다음 Codelab을 확인하세요.
- Private Service Connect를 소비하여 GKE로 서비스 게시 및 사용
- Private Service Connect를 소비한 서비스 게시 및 사용
- Private Service Connect 및 내부 TCP 프록시 부하 분산기를 사용하여 하이브리드 네트워킹을 통해 온프렘 서비스에 연결
- 자동 DNS 구성으로 Private Service Connect 사용