1. บทนำ
Private Service Connect (PSC) ช่วยให้การใช้บริการเป็นไปอย่างปลอดภัยและเป็นส่วนตัว รูปแบบนี้ทำให้สถาปัตยกรรมเครือข่ายง่ายขึ้นอย่างมากด้วยการอนุญาตให้ผู้ใช้บริการเชื่อมต่อกับผู้ผลิตบริการในองค์กรต่างๆ แบบส่วนตัว และไม่จำเป็นต้องมีการเพียร์ Virtual Private Cloud รูปที่ 1 แสดงแอตทริบิวต์การเพียร์ VPC และ PSC
รูปที่ 1
ในฐานะผู้ใช้บริการ คุณมีความยืดหยุ่นในการเลือกวิธีจัดสรร IP ส่วนตัวให้กับบริการต่างๆ พร้อมทั้งยังช่วยคุณไม่ต้องแบกภาระในการจัดการช่วงซับเน็ตสำหรับ VPC ของผู้ผลิต ตอนนี้คุณก็กำหนด IP เสมือนที่เลือกจาก VPC ให้กับบริการดังกล่าวได้ง่ายๆ โดยใช้การเชื่อมต่อบริการ
ในโค้ดแล็บนี้ คุณจะได้สร้างสถาปัตยกรรม 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
- Flag
--allow-psc-global-access
เปิดใช้การเข้าถึงแบบรวมในปลายทาง Private Service Connect - การเข้าถึงแบบทั่วโลกช่วยให้ลูกค้าอยู่ในภูมิภาคอื่นจากกฎการส่งต่อ Private Service Connect ได้ แต่กฎการส่งต่อต้องยังอยู่ในภูมิภาคเดียวกับไฟล์แนบบริการที่เชื่อมต่ออยู่
- ไม่จำเป็นต้องมีการกําหนดค่าในไฟล์แนบบริการของโปรดิวเซอร์เพื่อเปิดใช้การเข้าถึงทั่วโลก ตัวเลือกนี้ใช้ได้กับผู้บริโภคเท่านั้น
นอกจากนี้ คุณยังเปิดหรือปิดการเข้าถึงส่วนกลางได้ทุกเมื่อสำหรับอุปกรณ์ปลายทางที่มีอยู่ การเชื่อมต่อที่ใช้งานอยู่จะไม่หยุดชะงักเมื่อเปิดใช้การเข้าถึงแบบทั่วโลกในอุปกรณ์ปลายทางที่มีอยู่ เปิดใช้การเข้าถึงแบบรวมในกฎการส่งต่อที่มีอยู่ด้วยคําสั่งต่อไปนี้
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
การปิดใช้การเข้าถึงแบบทั่วโลก
นอกจากนี้ คุณยังปิดใช้การเข้าถึงส่วนกลางในกฎการส่งต่อที่มีอยู่ได้ด้วยการใช้ Flag --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 ใช้งานได้หลายภูมิภาค
- วิธีสร้างปลายทางส่วนตัว
- วิธีเชื่อมต่อกับ MongoDB
- วิธีดำเนินการและตรวจสอบความถูกต้องของการเปลี่ยนเส้นทางข้อมูลเมื่อระบบไม่พร้อมใช้งานของ MongoDB แบบหลายภูมิภาค
สิ่งที่ต้องมี
- โปรเจ็กต์ Google Cloud
- ระบุซับเน็ต /26 ต่อภูมิภาค
- สิทธิ์เข้าถึง MongoDB Atlas ของเจ้าของโปรเจ็กต์หรือเจ้าขององค์กรเพื่อสร้างคลัสเตอร์ MongoDB ที่มีระดับคลัสเตอร์ M10 ขึ้นไป (โปรดใช้ GETATLAS เพื่อรับเครดิตฟรีสำหรับการเรียกใช้ PoV)
4. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์ให้รองรับ Codelab
Codelab นี้ใช้ตัวแปร $เพื่อช่วยให้การติดตั้งใช้งานการกําหนดค่า 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
สร้างปลายทางสำหรับผู้บริโภคของ us-west1 ใน Cloud Shell โดยทำดังนี้
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
สร้างปลายทางสำหรับผู้บริโภคของ us-west2 ใน Cloud Shell โดยทำดังนี้
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
การกำหนดค่าเราเตอร์ระบบคลาวด์และ NAT
ระบบใช้ Cloud NAT ในโค้ดแล็บสำหรับการติดตั้งแพ็กเกจซอฟต์แวร์ เนื่องจากอินสแตนซ์ 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. การสร้างปลายทางส่วนตัวสำหรับ us-west1
- เข้าสู่ระบบบัญชี Atlas แล้วไปที่โปรเจ็กต์
สร้างผู้ใช้ใหม่เพื่ออนุญาตให้เข้าถึงฐานข้อมูลแบบอ่าน/เขียน
ความปลอดภัย → การเข้าถึงฐานข้อมูล เลือกเพิ่มผู้ใช้ฐานข้อมูลใหม่ ต่อไปนี้เป็นตัวอย่างชื่อผู้ใช้และรหัสผ่านที่กําหนดค่าเป็น codelab ตรวจสอบว่าได้เลือกบทบาทการอ่านและเขียนที่มีอยู่ในฐานข้อมูล
- ในส่วนความปลอดภัย → การเข้าถึงเครือข่าย รายการการเข้าถึง IP ไม่จำเป็นต้องมีรายการ
เตรียมปลายทางส่วนตัวใน MongoDB Atlas
- เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว
ผู้ให้บริการระบบคลาวด์
- เลือก Google Cloud แล้วคลิกถัดไป
ไฟล์แนบบริการ
- เลือกภูมิภาค us-west1 แล้วคลิกถัดไป
ปลายทาง
- หากต้องการสร้างปลายทาง Private Service Connect ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ Google Cloud: เลือก "แสดงวิธีการ" เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west1
- คำนำหน้าปลายทาง Private Service Connect: psc-endpoint-us-west1
ตั้งค่าปลายทาง
ในส่วนต่อไปนี้ ระบบจะสร้างสคริปต์เชลล์ที่ควรบันทึกไว้ในเครื่องโดยใช้ชื่อ setup_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์เชลล์เพื่ออนุญาตให้เข้าถึง psc ทั่วโลก คุณดำเนินการนี้ภายใน Cloud Shell ของโปรเจ็กต์ Google Cloud ได้
- ตัวอย่างสคริปต์เชลล์ เอาต์พุตของคุณจะมีค่าแตกต่างกัน
- คัดลอกสคริปต์เชลล์จากคอนโซล MongoBD และบันทึกเนื้อหาในเทอร์มินัล Cloud Shell ของ Google Cloud โปรดตรวจสอบว่าได้บันทึกสคริปต์เป็น 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
เรียกใช้สคริปต์เชลล์
ไปที่สคริปต์ setup_psc.sh แล้วเรียกใช้ เมื่อเสร็จแล้ว ระบบจะสร้างไฟล์ชื่อ atlasEndpoints-psc-endpoint-us-west1.json ไฟล์ 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
ใน UI ของ MongoDB ให้ไปที่โปรเจ็กต์ ตามด้วยความปลอดภัย → การเข้าถึงเครือข่าย → ปลายทางส่วนตัว การเลือกแท็บ คลัสเตอร์เฉพาะ การเปลี่ยนสถานะอุปกรณ์ปลายทางเป็น "พร้อมใช้งาน" จะใช้เวลา 10 นาที
สถานะพร้อมใช้งาน
ในคอนโซล Google Cloud ให้ไปที่บริการเครือข่าย → Private Service Connect เลือกแท็บปลายทางที่เชื่อมต่อซึ่งแสดงสถานะปลายทางของผู้บริโภคที่เปลี่ยนจากรอดำเนินการเป็นยอมรับ ดังตัวอย่างด้านล่าง
8. การสร้างปลายทางส่วนตัวสำหรับ us-west2
- เข้าสู่ระบบบัญชี Atlas แล้วไปที่โปรเจ็กต์
เตรียมปลายทางส่วนตัวใน MongoDB Atlas
- เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว
ผู้ให้บริการระบบคลาวด์
- เลือก Google Cloud แล้วคลิกถัดไป
ไฟล์แนบบริการ
- เลือกภูมิภาค us-west2 แล้วเลือกถัดไป
ปลายทาง
- หากต้องการสร้างปลายทาง Private Service Connect ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ Google Cloud: เลือก "แสดงวิธีการ" เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west2
- คำนำหน้าปลายทาง Private Service Connect: psc-endpoint-us-west2
ตั้งค่าปลายทาง
ในส่วนต่อไปนี้ ระบบจะสร้างสคริปต์เชลล์ที่ควรบันทึกไว้ในเครื่องโดยใช้ชื่อ setup_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์เชลล์เพื่ออนุญาตให้ psc เข้าถึงทั่วโลก คุณดำเนินการนี้ภายใน Cloud Shell ของโปรเจ็กต์ Google Cloud ได้
- ตัวอย่างสคริปต์เชลล์ เอาต์พุตของคุณจะมีค่าแตกต่างกัน
- คัดลอกสคริปต์เชลล์จากคอนโซล MongoBD และบันทึกเนื้อหาในเทอร์มินัล Cloud Shell ของ Google Cloud โปรดตรวจสอบว่าได้บันทึกสคริปต์เป็น 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
เรียกใช้สคริปต์เชลล์
ไปที่สคริปต์ 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 เส้นขอบสีเทาแสดงการอัปเดตคลัสเตอร์ ดังนั้นการเชื่อมต่อกับปลายทางส่วนตัวจึงใช้งานไม่ได้
ระบุการใช้งานแล้วเลือก "เชื่อมต่อ" (โปรดทราบว่าไม่มีช่องสีเทาอีกต่อไป)
เลือกประเภทการเชื่อมต่อ → ปลายทางส่วนตัว เลือก "เลือกวิธีการเชื่อมต่อ"
เลือกเชื่อมต่อด้วย 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
ดำเนินการติดตั้งจากระบบปฏิบัติการ
ดำเนินการติดตั้งจากการเข้าสู่ระบบระบบปฏิบัติการ 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 ทั่วโลกช่วยให้การเชื่อมต่ออุปกรณ์ปลายทางของผู้บริโภคเป็นไปอย่างราบรื่นในภูมิภาคต่างๆ เพื่อช่วยให้ความพร้อมใช้งานสูงหรือเนื่องจากมีการหยุดทำงานระดับภูมิภาค ในโค้ดแล็บ เกิดระบบสำรองของ MongoDB ระดับภูมิภาคขึ้นในโหนดหลักที่อยู่ใน us-west1 ดังนั้นภูมิภาครอง us-west2 จึงรับช่วงมาจากภูมิภาคหลัก แม้ว่าคลัสเตอร์จะส่งผลให้เกิดข้อขัดข้องในภูมิภาค แต่ vm1 ของผู้บริโภคซึ่งอยู่ใน us-west1 เข้าถึงคลัสเตอร์หลักใหม่ใน us-west2 ได้สําเร็จ
12. ล้างข้อมูล
ลบปลายทางของผู้บริโภคจากคอนโซลระบบคลาวด์
ไปที่บริการเครือข่าย → Private Service Connect → ปลายทางที่เชื่อมต่อ
ใช้ตัวกรอง psc-endpoint เพื่อป้องกันการลบปลายทางของผู้บริโภคที่ไม่ใช่ห้องทดลอง เลือกปลายทางทั้งหมด → ลบ
ลบที่อยู่ IP ภายในแบบคงที่ที่เชื่อมโยงกับปลายทางของผู้บริโภค
ไปที่เครือข่าย VPC → consumer-vpc → ที่อยู่ IP ภายในแบบคงที่
ใช้ตัวกรอง 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 นาที เมื่อเสร็จแล้ว ให้สิ้นสุดคลัสเตอร์ โดยสังเกตเส้นขอบสีเทาที่บ่งบอกถึงการเปลี่ยนแปลงสถานะ
แทรกชื่อคลัสเตอร์ → สิ้นสุด
ลบปลายทางส่วนตัวที่เชื่อมโยงกับ us-west1 และ us-west2
จาก UI ของ Atlas ให้ไปที่ความปลอดภัย → การเข้าถึงเครือข่าย → ปลายทางส่วนตัว → เลือก "สิ้นสุด"
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 ภายใน
- การใช้ Private Service Connect ที่มีการกำหนดค่า DNS โดยอัตโนมัติ