1. บทนำ
Private Service Connect (PSC) ช่วยลดความซับซ้อนในการใช้งานบริการอย่างปลอดภัยและเป็นส่วนตัว โมเดลนี้ช่วยให้สถาปัตยกรรมเครือข่ายง่ายขึ้นอย่างมาก โดยให้ผู้ใช้บริการเชื่อมต่อกับผู้ผลิตบริการในองค์กรต่างๆ ได้อย่างเป็นส่วนตัว และลดความจำเป็นในการเพียร์ Private Cloud รูปที่ 1 แสดงแอตทริบิวต์การเพียร์ VPC และ PSC
รูปที่ 1
ในฐานะผู้ใช้ทั่วไป บริการนี้จะช่วยให้คุณเลือกวิธีจัดสรร IP ส่วนตัวไปยังบริการได้อย่างยืดหยุ่น พร้อมลดภาระในการจัดการช่วงซับเน็ตสำหรับ VPC ของผู้ผลิต ตอนนี้คุณเพียงแค่กำหนด IP เสมือนที่เลือกไว้จาก VPC ให้กับบริการดังกล่าวโดยใช้การเชื่อมต่อบริการ
ใน Codelab นี้ คุณจะสร้างสถาปัตยกรรม Private Service Connect ที่ครอบคลุม ซึ่งแสดงภาพการใช้การเข้าถึงทั่วโลกของ PSC ด้วยแผนที่ MongoDB
การเข้าถึงส่วนกลางช่วยให้ลูกค้าเชื่อมต่อกับ 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 แต่กฎการส่งต่อยังคงต้องอยู่ในภูมิภาคเดียวกับไฟล์แนบของบริการที่เชื่อมต่อ
- ไฟล์แนบบริการของผู้ผลิตไม่จำเป็นต้องมีการกำหนดค่าเพื่อเปิดใช้การเข้าถึงส่วนกลาง ฟีเจอร์นี้อยู่ในฝั่งผู้บริโภคเท่านั้น
นอกจากนี้ คุณยังเปิดหรือปิดการเข้าถึงส่วนกลางได้ทุกเมื่อสำหรับปลายทางที่มีอยู่ จะไม่ทำให้การรับส่งข้อมูลหยุดชะงักสำหรับการเชื่อมต่อที่ใช้งานอยู่เมื่อเปิดใช้การเข้าถึงส่วนกลางในปลายทางที่มีอยู่ มีการเปิดใช้การเข้าถึงส่วนกลางในกฎการส่งต่อที่มีอยู่ด้วยคำสั่งต่อไปนี้
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 ใน VM ของผู้บริโภค เมื่อโหนดหลักล้มเหลวใน us-west1 ไคลเอ็นต์จะสามารถอ่าน/เขียนผ่านโหนดหลักใหม่ใน us-west2 ได้
รูปที่ 2
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้าง VPC และซับเน็ตที่ทำให้ใช้งานได้ใน 2 ภูมิภาค
- วิธีทำให้คลัสเตอร์ MongoDB แบบหลายภูมิภาคใช้งานได้
- วิธีสร้างปลายทางส่วนตัว
- วิธีเชื่อมต่อกับ 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
สร้างปลายทางผู้บริโภคสำหรับ 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
การกำหนดค่า Cloud Router และ NAT
มีการใช้ Cloud NAT ใน Codelab สำหรับการติดตั้งแพ็กเกจซอฟต์แวร์เนื่องจากอินสแตนซ์ VM ไม่มีที่อยู่ IP ภายนอก
สร้างเราเตอร์ระบบคลาวด์ใน 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 ได้ด้วย 1 ใน 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 จากนั้นเลือกถัดไป
ปลายทาง
- หากต้องการสร้างปลายทางการเชื่อมต่อบริการส่วนตัว ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ Google Cloud: เลือก "แสดงวิธีการ" เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west1
- คำนำหน้าปลายทางการเชื่อมต่อบริการส่วนตัว: psc-endpoint-us-west1
ตั้งค่าปลายทาง
ในส่วนต่อไปนี้ จะมีการสร้างสคริปต์ Shell ที่ควรบันทึกไว้ในตัวเครื่องชื่อ settings_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์ Shell เพื่ออนุญาตการเข้าถึงทั่วโลกของ psc คุณจะดำเนินการนี้ได้ในโปรเจ็กต์ Google Cloud Cloud Shell
- ตัวอย่างสคริปต์ Shell เอาต์พุตจะมีค่าต่างกัน
- คัดลอกสคริปต์เชลล์จากคอนโซล MongoBD และบันทึกเนื้อหาในเทอร์มินัล Google Cloud Shell และอย่าลืมบันทึกสคริปต์เป็น settings_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 เพื่อรองรับการเข้าถึงทั่วโลก
ใช้ตัวแก้ไขนาโนหรือ 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 เพื่อดาวน์โหลด atlasEndpoints-psc-endpoint-us-west1.json ในเครื่อง
อัปโหลดไฟล์ JSON
อัปโหลดไฟล์ JSON ที่บันทึกไว้ก่อนหน้านี้ atlasEndpoints-psc-endpoint-us-west1.json
เลือกสร้าง
ตรวจสอบปลายทางของ Private Service Connect
ใน UI ของ MongoDB ให้ไปที่โปรเจ็กต์ ตามด้วยความปลอดภัย → การเข้าถึงเครือข่าย → ปลายทางส่วนตัว การเลือกแท็บสำหรับคลัสเตอร์เฉพาะ การเปลี่ยนปลายทางเป็นพร้อมใช้งานจะใช้เวลา 10 นาที
สถานะที่มี
ในคอนโซล Google Cloud ให้ไปที่บริการเครือข่าย → Private Services Connect แล้วเลือกแท็บปลายทางที่เชื่อมต่อซึ่งแสดงปลายทางของผู้บริโภคที่กำลังเปลี่ยนผ่าน รอดำเนินการ → ยอมรับแล้ว ตามตัวอย่างด้านล่าง
8. การสร้างปลายทางส่วนตัวสำหรับ us-west2
- เข้าสู่ระบบบัญชี Atlas และไปที่โปรเจ็กต์
เตรียมปลายทางส่วนตัวใน MongoDB Atlas
- เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว
ผู้ให้บริการคลาวด์
- เลือก Google Cloud แล้วเลือกถัดไป
ไฟล์แนบบริการ
- เลือกภูมิภาค us-west2 จากนั้นเลือกถัดไป
ปลายทาง
- หากต้องการสร้างปลายทางการเชื่อมต่อบริการส่วนตัว ให้ระบุข้อมูลต่อไปนี้
- รหัสโปรเจ็กต์ Google Cloud: เลือก "แสดงวิธีการ" เพื่อดูรายละเอียด
- ชื่อ VPC: consumer-vpc
- ชื่อซับเน็ต: psc-endpoint-us-west2
- คำนำหน้าปลายทางของการเชื่อมต่อบริการส่วนตัว: psc-endpoint-us-west2
ตั้งค่าปลายทาง
ในส่วนต่อไปนี้ จะมีการสร้างสคริปต์ Shell ที่ควรบันทึกไว้ในตัวเครื่องชื่อ settings_psc.sh เมื่อบันทึกแล้ว ให้แก้ไขสคริปต์ Shell เพื่ออนุญาตการเข้าถึงทั่วโลกของ psc คุณจะดำเนินการนี้ได้ในโปรเจ็กต์ Google Cloud Cloud Shell
- ตัวอย่างสคริปต์ Shell เอาต์พุตจะมีค่าต่างกัน
- คัดลอกสคริปต์เชลล์จากคอนโซล MongoBD และบันทึกเนื้อหาในเทอร์มินัล Google Cloud Shell และอย่าลืมบันทึกสคริปต์เป็น settings_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 เพื่อรองรับการเข้าถึงทั่วโลก
ใช้ตัวแก้ไขนาโนหรือ 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 Services Connect แล้วเลือกแท็บปลายทางที่เชื่อมต่อซึ่งแสดงปลายทางของผู้บริโภคที่กำลังเปลี่ยนผ่าน รอดำเนินการ → ยอมรับแล้ว ตามตัวอย่างด้านล่าง มีการทำให้ปลายทางทั้งหมด 100 รายการใช้งานได้ในปลายทางสำหรับผู้บริโภค และ คุณต้องเปลี่ยนเป็น "ยอมรับแล้ว" ก่อนที่จะไปยังขั้นตอนถัดไป
9. เชื่อมต่อกับแผนที่ MongoDB จากปลายทางส่วนตัว
เมื่อยอมรับการเชื่อมต่อบริการส่วนตัวแล้ว (10-15 นาที) จะต้องใช้เวลาอัปเดตคลัสเตอร์ MongoDB ใน UI ของ MongoDB เส้นขอบสีเทาแสดงถึงการอัปเดตคลัสเตอร์ ดังนั้นการเชื่อมต่อกับปลายทางส่วนตัวจึงไม่พร้อมใช้งาน
ระบุการทำให้ใช้งานได้และเลือก "เชื่อมต่อ" (โปรดทราบว่าไม่มีกล่องสีเทาอีกต่อไป)
เลือกประเภทการเชื่อมต่อ → ปลายทางส่วนตัว แล้วเลือกเลือกวิธีการเชื่อมต่อ
เลือก "เชื่อมต่อกับ MongoDB Shell"
เลือก ฉันไม่มี MongoDB Shell ติดตั้งอยู่ Ubuntu 20.4 และตรวจสอบว่าได้คัดลอกเนื้อหาจากขั้นตอนที่ 1 และขั้นตอนที่ 3 ไปยังกระดาษโน้ตแล้ว
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 มีโหนดรองสองโหนด
ไปที่ฐานข้อมูล → psc-mongodb-uswest1-uswest2 → ภาพรวม
ในส่วนต่อไปนี้ ให้เข้าสู่ระบบ vm1 ที่อยู่ใน us-west1 เฟลโอเวอร์ของคลัสเตอร์ MongoDB หลักในภูมิภาค us-west1 และยืนยันว่าฐานข้อมูลยังคงเข้าถึงได้จากคลัสเตอร์ MongoDB ใน us-west2
คุณสามารถทดสอบเฟลโอเวอร์ทั้งหลักและระดับภูมิภาคได้จาก Atlas UI
- เข้าสู่ระบบ Atlas UI
- คลิกที่ [...] ข้างชื่อคลัสเตอร์ psc-mongodb-uswest1-uswest2 → ทดสอบการหยุดชะงัก
- เลือกการหยุดทำงานระดับภูมิภาค → เลือกภูมิภาค
- เลือกภูมิภาคหลัก us-west1→ จำลองการหยุดทำงานระดับภูมิภาค
เมื่อเลือกคลัสเตอร์แล้ว คลัสเตอร์จะแสดงการจำลองการหยุดทำงานหลังจากผ่านไป 3-4 นาที
ปิดหน้าต่าง
ตรวจสอบว่า us-west1 ลดลงและ us-west2 ถูกยึดเป็นหลัก
ไปที่ฐานข้อมูล → psc-mongodb-uswest1-uswest2 → ภาพรวม
ตรวจสอบการเชื่อมต่อกับคลัสเตอร์ด้วยคีย์หลักใหม่ us-west2
เข้าสู่ระบบ vm1 ที่อยู่ใน us-west1 และเข้าถึง mongodb ใน us-west2 เพื่อตรวจสอบบริการส่วนตัวเชื่อมต่อกับการเข้าถึงทั่วโลก
หากเซสชัน 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 เพื่อกําจัดการลบปลายทางของผู้ใช้ที่ไม่ใช่ Lab ที่อาจเกิดขึ้น เลือกปลายทางทั้งหมด → ลบ
ลบที่อยู่ IP ภายในแบบคงที่ที่เชื่อมโยงกับปลายทางของผู้บริโภค
ไปที่เครือข่าย VPC → Consumer-vpc→ ที่อยู่ IP ภายในแบบคงที่
ใช้ตัวกรอง psc-endpoint เพื่อกำจัดศักยภาพการลบปลายทางของผู้ใช้ที่ไม่ใช่ Lab และเพิ่มแถวต่อหน้าเป็น 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
จาก Atlas UI ให้ระบุคลัสเตอร์ psc-mongodb-uswest1-uswest2 → การจำลองสิ้นสุด
เลือกการจำลองการสิ้นสุดการหยุดชะงัก —> ออก
ตอนนี้คลัสเตอร์กำลังเปลี่ยน us-west1 เป็นหน่วยหลัก ขั้นตอนนี้จะใช้เวลา 3-4 นาที เมื่อคลัสเตอร์เสร็จเรียบร้อยแล้ว ให้สิ้นสุดคลัสเตอร์ สังเกตเส้นขอบสีเทาที่แสดงถึงการเปลี่ยนแปลงสถานะ
แทรกชื่อคลัสเตอร์ → สิ้นสุด
ลบปลายทางส่วนตัวที่เชื่อมโยงกับ us-west1 และ us-west2
จาก Atlas UI ให้ไปที่ความปลอดภัย → การเข้าถึงเครือข่าย → อุปกรณ์ปลายทางส่วนตัว → เลือกสิ้นสุด
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 อัตโนมัติ