1. บทนำ
Private Service Connect (PSC) ช่วยให้การใช้บริการอย่างปลอดภัยและเป็นส่วนตัวง่ายขึ้น โมเดลนี้ช่วยให้สถาปัตยกรรมเครือข่ายง่ายขึ้นอย่างมากด้วยการอนุญาตให้ผู้ใช้บริการเชื่อมต่อกับผู้ผลิตบริการแบบส่วนตัวในองค์กรต่างๆ และไม่จำเป็นต้องใช้การเพียร์ Virtual Private Cloud รูปที่ 1 แสดงแอตทริบิวต์การ Peering ของ VPC และ PSC
รูปที่ 1 
ในฐานะผู้ใช้บริการ คุณจะเลือกวิธีจัดสรร IP ส่วนตัวให้กับบริการได้อย่างยืดหยุ่น ในขณะเดียวกันก็ไม่ต้องรับภาระในการจัดการช่วงซับเน็ตสำหรับ VPC ของผู้ผลิต ตอนนี้คุณสามารถกำหนด IP เสมือนที่เลือกจาก VPC ให้กับบริการดังกล่าวได้โดยใช้ Service Connect
ใน Codelab นี้ คุณจะได้สร้างสถาปัตยกรรม Private Service Connect ที่ครอบคลุมซึ่งแสดงให้เห็นการใช้การเข้าถึงส่วนกลางของ PSC กับ MongoDB Atlas
การเข้าถึงทั่วโลกช่วยให้ไคลเอ็นต์เชื่อมต่อกับ Private Service Connect (PSC) ได้ทั่วขอบเขตระดับภูมิภาค ซึ่งจะเป็นประโยชน์ในการสร้างความพร้อมใช้งานสูงในบริการที่มีการจัดการซึ่งโฮสต์ในหลายภูมิภาค หรืออนุญาตให้ไคลเอ็นต์เข้าถึงบริการที่ไม่ได้อยู่ในภูมิภาคเดียวกับไคลเอ็นต์
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 ได้ แต่กฎการส่งต่อยังคงต้องอยู่ในภูมิภาคเดียวกันกับ Service Attachment ที่เชื่อมต่ออยู่
- ไม่จำเป็นต้องกำหนดค่าใน Service Attachment ของผู้ผลิตเพื่อเปิดใช้การเข้าถึงทั่วโลก ซึ่งเป็นตัวเลือกสำหรับผู้บริโภคโดยเฉพาะ
นอกจากนี้ คุณยังเปิดหรือปิดการเข้าถึงทั่วโลกสำหรับอุปกรณ์ปลายทางที่มีอยู่ได้ทุกเมื่อ การรับส่งข้อมูลจะไม่ถูกรบกวนสำหรับการเชื่อมต่อที่ใช้งานอยู่เมื่อเปิดใช้การเข้าถึงทั่วโลกในอุปกรณ์ปลายทางที่มีอยู่ เปิดใช้การเข้าถึงส่วนกลางในกฎการส่งต่อที่มีอยู่ด้วยคำสั่งต่อไปนี้
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) โดยมี 1 โหนดในภูมิภาค us-west1 และ 2 โหนดในภูมิภาค us-west2 ตามลำดับ
- VPC ของผู้ใช้และ VM ที่เชื่อมโยงเพื่อเข้าถึงคลัสเตอร์ MongoDB ใน us-west1 และ us-west2
- VPC และซับเน็ต 2 รายการในภูมิภาค us-west1 และ us-west2 ตามลำดับ โดยมีที่อยู่ IP ที่ว่างอย่างน้อย 64 รายการในแต่ละซับเน็ต (สร้างซับเน็ตที่มี /26 และต่ำกว่า)
ระบบจะติดตั้งไคลเอ็นต์ MongoDB ใน vm1 ใน VPC สำหรับผู้บริโภค เมื่อโหนดหลักล้มเหลวใน us-west1 ไคลเอ็นต์จะอ่าน/เขียนผ่านโหนดหลักใหม่ใน us-west2 ได้
รูปที่ 2 
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้าง VPC และซับเน็ตที่ติดตั้งใช้งานใน 2 ภูมิภาค
- วิธีการทำให้ใช้งานได้คลัสเตอร์ MongoDB Atlas แบบหลายภูมิภาค
- วิธีสร้าง Private Endpoint
- วิธีเชื่อมต่อกับ MongoDB
- วิธีการดำเนินการและตรวจสอบเฟลโอเวอร์ของ MongoDB หลายภูมิภาค
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud
- ระบุซับเน็ต /26 ต่อภูมิภาค
- เจ้าของโปรเจ็กต์หรือเจ้าขององค์กรมีสิทธิ์เข้าถึง MongoDB Atlas เพื่อสร้างคลัสเตอร์ MongoDB ที่มีระดับคลัสเตอร์ M10 ขึ้นไป (โปรดใช้ GETATLAS เพื่อรับเครดิตฟรีสำหรับเรียกใช้ PoV)
4. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์เพื่อรองรับ Codelab
Codelab นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
ใน 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 Router ภายใน Cloud Shell
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
สร้างเกตเวย์ NAT ภายใน Cloud Shell
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
สร้างอินสแตนซ์ vm1 ภายใน Cloud Shell
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 ให้สร้างกฎไฟร์วอลล์ที่มีลักษณะดังนี้
- มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการให้เข้าถึงได้โดยใช้ IAP
- อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้มีที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP
สร้างกฎไฟร์วอลล์ IAP ภายใน Cloud Shell
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 แบบหลายภูมิภาค
- เราต้องตั้งค่าคลัสเตอร์ Atlas ก่อนที่จะเริ่มตั้งค่า PSC คุณสมัครใช้บริการ MongoDB Atlas ได้ 2 วิธีดังนี้
- ผ่าน Google Cloud Marketplace หากคุณมีบัญชี Google Cloud โปรดดูเอกสารประกอบเพื่อตั้งค่าการสมัครใช้บริการ
- ด้วยหน้าลงทะเบียน Atlas
- เมื่อสมัครใช้บริการ Atlas แล้ว ให้คลิกปุ่มสร้างฐานข้อมูลตามที่แสดงด้านล่าง

- สร้างคลัสเตอร์ใหม่ → เฉพาะ

- ผู้ให้บริการคลาวด์และภูมิภาค → Google Cloud
- มัลติคลาวด์ หลายภูมิภาค และการแยกปริมาณงาน → เลือกแล้ว (เครื่องหมายถูกสีน้ำเงิน)

- โหนดที่เลือกได้ → us-west1 (1 โหนด), us-west2 (2 โหนด)

- ระดับคลัสเตอร์ → M10 ปล่อยให้การตั้งค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น

- ชื่อคลัสเตอร์ → psc-mongodb-uswest1-uswest2

- เลือก → สร้างคลัสเตอร์

- การสร้างฐานข้อมูลใช้เวลา 7-10 นาที

มุมมองของคลัสเตอร์เมื่อติดตั้งใช้งานแล้ว

7. การสร้าง Private Endpoint สำหรับ us-west1
- เข้าสู่ระบบบัญชี Atlas แล้วไปที่โปรเจ็กต์
สร้างผู้ใช้ใหม่เพื่อให้สิทธิ์การเข้าถึงแบบอ่าน/เขียนไปยังฐานข้อมูล
ความปลอดภัย → การเข้าถึงฐานข้อมูล เลือกเพิ่มผู้ใช้ฐานข้อมูลใหม่ ตัวอย่างต่อไปนี้คือชื่อผู้ใช้และรหัสผ่านที่กำหนดค่าเป็น codelab ตรวจสอบว่าได้เลือกบทบาทแบบอ่านและเขียนที่มีในตัวไปยังฐานข้อมูลแล้ว

- ในส่วนความปลอดภัย → การเข้าถึงเครือข่าย รายการการเข้าถึง IP ไม่จำเป็นต้องมีรายการ
เตรียมปลายทางส่วนตัวใน MongoDB Atlas
- เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว

ผู้ให้บริการคลาวด์
- เลือก Google Cloud แล้วคลิกถัดไป

ไฟล์แนบบริการ
- เลือกภูมิภาค us-west1 แล้วคลิกถัดไป

ปลายทาง
- หากต้องการสร้างปลายทาง Private Service Connect ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google: เลือก 'แสดงวิธีการ' เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west1
- คำนำหน้าของปลายทาง Private Service Connect: psc-endpoint-us-west1

ตั้งค่าอุปกรณ์ปลายทาง
ในส่วนต่อไปนี้ ระบบจะสร้างสคริปต์ของ Shell ที่ควรบันทึกไว้ในเครื่องชื่อ setup_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์ของ Shell เพื่ออนุญาตการเข้าถึงแบบสากลของ psc คุณดำเนินการนี้ได้ภายใน Cloud Shell ของโปรเจ็กต์ Google Cloud
- สคริปต์ของ Shell ตัวอย่าง เอาต์พุตจะมีค่าแตกต่างกัน

- คัดลอกสคริปต์ของ Shell จากคอนโซล MongoDB และบันทึกเนื้อหาในเทอร์มินัล 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
อัปเดตสคริปต์ของ Shell เพื่อรองรับการเข้าถึงทั่วโลก
ใช้โปรแกรมแก้ไข nano หรือ vi เพื่อระบุและอัปเดตสคริปต์ของ Shell ด้วยไวยากรณ์ด้านล่าง
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
เรียกใช้สคริปต์ของ Shell
ไปที่และเรียกใช้สคริปต์ setup_psc.sh เมื่อเสร็จแล้ว ระบบจะสร้างไฟล์ชื่อ atlasEndpoints-psc-endpoint-us-west1.json ไฟล์ JSON มีรายการที่อยู่ IP และชื่อปลายทาง Private Service Connect ที่จำเป็นสำหรับขั้นตอนถัดไปของการทำให้ใช้งานได้
ใน Cloud Shell ให้ทำดังนี้
sh setup_psc.sh
เมื่อสคริปต์ทำงานเสร็จแล้ว ให้ใช้ Cloud Shell Editor เพื่อดาวน์โหลด atlasEndpoints-psc-endpoint-us-west1.json ในเครื่อง

อัปโหลดไฟล์ JSON
อัปโหลดไฟล์ JSON ที่บันทึกไว้ก่อนหน้านี้ atlasEndpoints-psc-endpoint-us-west1.json


เลือกสร้าง
ตรวจสอบความถูกต้องของปลายทาง Private Service Connect
ใน UI ของ MongoDB ให้ไปที่โปรเจ็กต์ ตามด้วยความปลอดภัย → การเข้าถึงเครือข่าย → ปลายทางส่วนตัว การเลือกแท็บ คลัสเตอร์เฉพาะ และการเปลี่ยนผ่านของปลายทางเป็นพร้อมใช้งานจะใช้เวลา 10 นาที
สถานะที่มี

ในคอนโซล Google Cloud ให้ไปที่บริการเครือข่าย → Private Service Connect แล้วเลือกแท็บ "ปลายทางที่เชื่อมต่อ" ซึ่งแสดงปลายทางของผู้บริโภคที่เปลี่ยนสถานะเป็น "รอดำเนินการ" → "ยอมรับ" ดังตัวอย่างด้านล่าง

8. การสร้างปลายทางส่วนตัวสำหรับ us-west2
- เข้าสู่ระบบบัญชี Atlas แล้วไปที่โปรเจ็กต์
เตรียมปลายทางส่วนตัวใน MongoDB Atlas
- เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว

ผู้ให้บริการคลาวด์
- เลือก Google Cloud แล้วคลิกถัดไป

ไฟล์แนบบริการ
- เลือกภูมิภาค us-west2 แล้วคลิกถัดไป

ปลายทาง
- หากต้องการสร้างปลายทาง Private Service Connect ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google: เลือก 'แสดงวิธีการ' เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west2
- คำนำหน้าของปลายทาง Private Service Connect: psc-endpoint-us-west2

ตั้งค่าอุปกรณ์ปลายทาง
ในส่วนต่อไปนี้ ระบบจะสร้างสคริปต์ของ Shell ที่ควรบันทึกไว้ในเครื่องชื่อ setup_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์ของ Shell เพื่ออนุญาตการเข้าถึงแบบสากลของ psc คุณดำเนินการนี้ได้ภายใน Cloud Shell ของโปรเจ็กต์ Google Cloud
- สคริปต์ของ Shell ตัวอย่าง เอาต์พุตจะมีค่าแตกต่างกัน

- คัดลอกสคริปต์ของ Shell จากคอนโซล MongoDB และบันทึกเนื้อหาในเทอร์มินัล 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
อัปเดตสคริปต์ของ Shell เพื่อรองรับการเข้าถึงทั่วโลก
ใช้โปรแกรมแก้ไข nano หรือ vi เพื่อระบุและอัปเดตสคริปต์ของ Shell ด้วยไวยากรณ์ด้านล่าง
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
เรียกใช้สคริปต์ของ Shell
ไปที่และเรียกใช้สคริปต์ setup_psc.sh เมื่อเสร็จแล้ว ระบบจะสร้างไฟล์ชื่อ atlasEndpoints-psc-endpoint-us-west2.json ไฟล์ JSON มีรายการที่อยู่ IP และชื่อปลายทาง Private Service Connect ที่จำเป็นสำหรับขั้นตอนถัดไปของการทำให้ใช้งานได้
ใน Cloud Shell ให้ทำดังนี้
sh setup_psc.sh
เมื่อสคริปต์ทำงานเสร็จแล้ว ให้ใช้โปรแกรมแก้ไข Cloud Shell เพื่อดาวน์โหลด atlasEndpoints-psc-endpoint-us-west2.json ในเครื่อง

อัปโหลดไฟล์ JSON
อัปโหลดไฟล์ JSON ที่บันทึกไว้ก่อนหน้านี้ atlasEndpoints-psc-endpoint-us-west2.json


เลือกสร้าง
ตรวจสอบความถูกต้องของปลายทาง Private Service Connect
ใน UI ของ MongoDB ให้ไปที่โปรเจ็กต์ ตามด้วยความปลอดภัย → การเข้าถึงเครือข่าย → ปลายทางส่วนตัว เมื่อเลือกแท็บ คลัสเตอร์เฉพาะ และการเปลี่ยนผ่านของอุปกรณ์ปลายทางแล้ว อุปกรณ์ปลายทางจะพร้อมใช้งานหลังจากผ่านไป 10 นาที
สถานะที่ใช้ได้

ในคอนโซล Google Cloud ให้ไปที่บริการเครือข่าย → Private Service Connect แล้วเลือกแท็บ "ปลายทางที่เชื่อมต่อ" ซึ่งแสดงปลายทางของผู้บริโภคที่เปลี่ยนสถานะเป็น "รอดำเนินการ" → "ยอมรับ" ดังตัวอย่างด้านล่าง ระบบจะติดตั้งใช้งานอุปกรณ์ปลายทางทั้งหมด 100 เครื่องในอุปกรณ์ปลายทางของผู้บริโภค และต้องเปลี่ยนไปเป็น "ยอมรับ" ก่อนที่จะไปยังขั้นตอนถัดไป

9. เชื่อมต่อกับ MongoDB Atlas จากปลายทางส่วนตัว
เมื่อยอมรับการเชื่อมต่อบริการส่วนตัวแล้ว คุณจะต้องใช้เวลาเพิ่มเติม (10-15 นาที) เพื่ออัปเดตคลัสเตอร์ MongoDB ใน UI ของ MongoDB เส้นขอบสีเทาแสดงถึงการอัปเดตคลัสเตอร์ จึงไม่สามารถเชื่อมต่อกับ Private Endpoint ได้

ระบุการติดตั้งใช้งานและเลือกเชื่อมต่อ (โปรดทราบว่าไม่มีกล่องสีเทาอีกต่อไป)

เลือกประเภทการเชื่อมต่อ → ปลายทางส่วนตัว แล้วเลือกเลือกวิธีการเชื่อมต่อ

เลือก เชื่อมต่อด้วย MongoDB Shell

เลือก "ฉันไม่ได้ติดตั้ง MongoDB Shell, Ubuntu 20.4" และตรวจสอบว่าได้คัดลอกเนื้อหาจากขั้นตอนที่ 1 และขั้นตอนที่ 3 ไปยัง Notepad แล้ว

10. ติดตั้งแอปพลิเคชัน mongosh
ก่อนการติดตั้ง คุณจะต้องสร้างสตริงคำสั่งตามค่าที่คัดลอกไว้ก่อนหน้านี้ในขั้นตอนที่ 1 และ 3 หลังจากนั้น คุณจะ SSH เข้าสู่ vm1 โดยใช้ Cloud Shell ตามด้วยการติดตั้งและการตรวจสอบแอปพลิเคชัน mongosh ในฐานข้อมูลหลัก (us-west1) ระบบได้ติดตั้งอิมเมจ Ubuntu 20.4 เมื่อสร้าง vm1 ใน consumer-vpc
เลือกวิธีการเชื่อมต่อ: ขั้นตอนที่ 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
เข้าสู่ระบบ vm1 โดยใช้ IAP ใน Cloud Shell แล้วลองอีกครั้งหากหมดเวลา
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
ทำการติดตั้งจากระบบปฏิบัติการ
ทำการติดตั้งจากการเข้าสู่ระบบ OS ของ Cloud Shell, รายละเอียดเพิ่มเติม, อัปเดตไวยากรณ์ด้านล่างด้วยสตริงที่กำหนดเอง
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 ให้ทำดังนี้ ชื่อผู้ใช้และรหัสผ่านที่กำหนดค่าคือ codelab
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
ตัวอย่างด้านล่าง

เรียกใช้คำสั่งกับฐานข้อมูล
ในระบบปฏิบัติการ Cloud Shell ให้ทำดังนี้
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 → ภาพรวม

ในส่วนต่อไปนี้ ให้เข้าสู่ระบบ vm1 ที่อยู่ใน us-west1 เฟลโอเวอร์ภูมิภาคคลัสเตอร์ MongoDB หลัก us-west1 และตรวจสอบว่ายังเข้าถึงฐานข้อมูลจากคลัสเตอร์ MongoDB ใน us-west2 ได้
คุณทดสอบทั้งการเฟลโอเวอร์หลักและการเฟลโอเวอร์ระดับภูมิภาคได้จาก UI ของ Atlas
- เข้าสู่ระบบ UI ของ Atlas
- คลิก [...] ข้างชื่อคลัสเตอร์ psc-mongodb-uswest1-uswest2 → ทดสอบการหยุดทำงาน

- เลือกการหยุดทำงานระดับภูมิภาค → เลือกภูมิภาค

- เลือกภูมิภาคหลัก us-west1→ จำลองการหยุดทำงานระดับภูมิภาค

เมื่อเลือกแล้ว คลัสเตอร์จะแสดงการจำลองการหยุดทำงานหลังจากผ่านไป 3-4 นาที
ปิดหน้าต่าง


ตรวจสอบว่า us-west1 หยุดทำงานและ us-west2 กลายเป็นภูมิภาคหลักแล้ว
ไปที่ฐานข้อมูล → psc-mongodb-uswest1-uswest2 → ภาพรวม

ตรวจสอบการเชื่อมต่อกับคลัสเตอร์โดยใช้คลัสเตอร์หลักใหม่ us-west2
เข้าสู่ระบบ vm1 ที่อยู่ใน us-west1 และเข้าถึง mongodb ใน us-west2 เพื่อตรวจสอบการเข้าถึงส่วนกลางของ Private Service Connect
หากเซสชัน Cloud Shell สิ้นสุดลง ให้ทำดังนี้
ใน Cloud Shell ให้ทำดังนี้
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
เข้าสู่ระบบ vm1 โดยใช้ IAP ใน Cloud Shell แล้วลองอีกครั้งหากหมดเวลา
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
เชื่อมต่อกับการติดตั้งใช้งาน MongoDB
ในระบบปฏิบัติการ Cloud Shell ให้ทำดังนี้
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
ตัวอย่างด้านล่าง

เรียกใช้คำสั่งกับฐานข้อมูล
ในระบบปฏิบัติการ Cloud Shell ให้ทำดังนี้
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

สำเร็จ: คุณได้ตรวจสอบแล้วว่าการเข้าถึงแบบสากลของ PSC ช่วยให้การเชื่อมต่ออุปกรณ์ปลายทางของผู้บริโภคเป็นไปอย่างราบรื่นในภูมิภาคต่างๆ เพื่อช่วยให้มีความพร้อมใช้งานสูงหรือเนื่องจากระบบขัดข้องในภูมิภาค ใน Codelab เฟลโอเวอร์ระดับภูมิภาคของ MongoDB เกิดขึ้นในโหนดหลักที่ตั้งอยู่ใน us-west1 ดังนั้นภูมิภาครอง us-west2 จึงเข้ามาแทนที่โหนดหลัก แม้ว่าคลัสเตอร์จะทำให้เกิดการหยุดทำงานระดับภูมิภาค แต่ VM1 สำหรับผู้บริโภคซึ่งอยู่ใน us-west1 ก็เข้าถึงคลัสเตอร์หลักใหม่ใน us-west2 ได้สำเร็จ
12. ล้างข้อมูล
ลบปลายทางผู้ใช้จาก Cloud Console
ไปที่บริการเครือข่าย → Private Service Connect → ปลายทางที่เชื่อมต่อ
ใช้ตัวกรอง psc-endpoint เพื่อป้องกันการลบปลายทางสำหรับผู้ใช้ทั่วไปที่ไม่ได้อยู่ในห้องทดลอง เลือกอุปกรณ์ปลายทางทั้งหมด → ลบ

ลบที่อยู่ IP ภายในแบบคงที่ที่เชื่อมโยงกับปลายทางของผู้บริโภค
ไปที่เครือข่าย VPC → consumer-vpc → STATIC INTERNAL IP ADDRESSES
ใช้ตัวกรอง psc-endpoint เพื่อป้องกันการลบอุปกรณ์ปลายทางสำหรับผู้ใช้ทั่วไปที่ไม่ใช่ในห้องทดลอง และเพิ่มจำนวนแถวต่อหน้าเป็น 100 เลือกปลายทางทั้งหมด → เผยแพร่

ลบคอมโพเนนต์ของ Codelab จาก Cloud Shell
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
จาก UI ของ Atlas ให้ระบุคลัสเตอร์ psc-mongodb-uswest1-uswest2 → สิ้นสุดการจำลอง

เลือกสิ้นสุดการจำลองการหยุดทำงาน —> ออก

ตอนนี้คลัสเตอร์กำลังเปลี่ยนกลับไปใช้ us-west1 เป็นคลัสเตอร์หลัก ซึ่งกระบวนการนี้จะใช้เวลา 3-4 นาที เมื่อเสร็จสมบูรณ์แล้ว ให้สิ้นสุดคลัสเตอร์และสังเกตเส้นขอบสีเทาที่แสดงการเปลี่ยนแปลงสถานะ


แทรกชื่อคลัสเตอร์ → สิ้นสุด

ลบ Private Endpoint ที่เชื่อมโยงกับ us-west1 และ us-west2
จาก UI ของ Atlas ให้ไปที่ความปลอดภัย → การเข้าถึงเครือข่าย → Private Endpoint → เลือกสิ้นสุด

13. ขอแสดงความยินดี
ยินดีด้วย คุณกำหนดค่าและตรวจสอบปลายทาง Private Service Connect ที่มีการเข้าถึง MongoDB ทั่วโลกในภูมิภาคต่างๆ เรียบร้อยแล้ว คุณสร้าง VPC ของผู้ใช้, MongoDB แบบหลายภูมิภาค และปลายทางของผู้ใช้เรียบร้อยแล้ว VM ที่อยู่ใน us-west1 เชื่อมต่อกับ MongoDB ในทั้ง us-west1 และ us-west2 ได้สำเร็จเมื่อมีการเฟลโอเวอร์ในระดับภูมิภาค
Cosmopup คิดว่า Codelab นั้นยอดเยี่ยม!!

สิ่งต่อไปที่ควรทำ
ลองใช้ Codelab เหล่านี้
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการกับ GKE
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการ
- เชื่อมต่อกับบริการภายในองค์กรผ่านระบบเครือข่ายแบบไฮบริดโดยใช้ Private Service Connect และตัวจัดสรรภาระงาน TCP Proxy ภายใน
- การใช้ Private Service Connect ที่มีการกำหนดค่า DNS อัตโนมัติ