การเข้าถึง MongoDB Atlas แบบหลายภูมิภาคด้วย Private Service Connect

1. บทนำ

Private Service Connect (PSC) ช่วยลดความซับซ้อนในการใช้งานบริการอย่างปลอดภัยและเป็นส่วนตัว โมเดลนี้ช่วยให้สถาปัตยกรรมเครือข่ายง่ายขึ้นอย่างมาก โดยให้ผู้ใช้บริการเชื่อมต่อกับผู้ผลิตบริการในองค์กรต่างๆ ได้อย่างเป็นส่วนตัว และลดความจำเป็นในการเพียร์ Private Cloud รูปที่ 1 แสดงแอตทริบิวต์การเพียร์ VPC และ PSC

รูปที่ 1 4f9551fc32ed83f5.png

ในฐานะผู้ใช้ทั่วไป บริการนี้จะช่วยให้คุณเลือกวิธีจัดสรร 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. สิ่งที่คุณจะสร้าง

  1. คลัสเตอร์ MongoDB Atlas แบบหลายภูมิภาค (โทโพโลยีที่อธิบายไว้ในรูปที่ 2) จะสร้างขึ้นโดยมี 1 โหนดใน us-west1 และ 2 โหนดในภูมิภาค us-west2 ตามลำดับ
  2. VPC สำหรับผู้บริโภคและ VM ที่เชื่อมโยงเพื่อเข้าถึงคลัสเตอร์ MongoDB ใน us-west1 และ us-west2
  3. VPC และซับเน็ต 2 รายการในภูมิภาค us-west1 และ us-west2 ตามลำดับ โดยมีที่อยู่ IP ฟรีอย่างน้อย 64 รายการในเครือข่ายย่อยแต่ละเครือข่าย (สร้างเครือข่ายย่อยที่มี /26 และต่ำกว่า)

ไคลเอ็นต์ MongoDB จะได้รับการติดตั้งบน vm1 ใน VM ของผู้บริโภค เมื่อโหนดหลักล้มเหลวใน us-west1 ไคลเอ็นต์จะสามารถอ่าน/เขียนผ่านโหนดหลักใหม่ใน us-west2 ได้

รูปที่ 2 ab6c2791514c4481.png

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้าง 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 คลิกปุ่ม สร้างฐานข้อมูล ดังที่แสดงด้านล่าง

796f5bda844bf400.png

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

56c340661d86962c.png

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

6c10293ffd9814ae.png

  • โหนดที่ควบคุมได้ → us-west1 (1 โหนด), us-west2 (2 โหนด)

e652bd944d785871.png

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

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

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

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

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

1f0ec6a401578650.png

7. การสร้างปลายทางส่วนตัวสำหรับ us-west1

  • เข้าสู่ระบบบัญชี Atlas และไปที่โปรเจ็กต์

สร้างผู้ใช้ใหม่เพื่ออนุญาตการเข้าถึงแบบอ่าน/เขียนฐานข้อมูลทั้งหมด

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

f622ab14ddc96fc7.png

  • ในหัวข้อความปลอดภัย → การเข้าถึงเครือข่าย รายการเข้าถึง IP ไม่จำเป็นต้องมีรายการ

เตรียมปลายทางส่วนตัวใน MongoDB Atlas

  • เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว 88f5c1d9ae7e46d9.png

ผู้ให้บริการคลาวด์

  • เลือก Google Cloud แล้วเลือกถัดไป

5503248bf4019a35.png

ไฟล์แนบบริการ

  • เลือกภูมิภาค us-west1 จากนั้นเลือกถัดไป

cb31aea7cad182f9.png

ปลายทาง

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

21d76af5367832f4.png

ตั้งค่าปลายทาง

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

  • ตัวอย่างสคริปต์ Shell เอาต์พุตจะมีค่าต่างกัน

5c80cf7315a05c25.png

  • คัดลอกสคริปต์เชลล์จากคอนโซล 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 ในเครื่อง

2856802dd6497f51.png b0059dc8e1558891.png

อัปโหลดไฟล์ JSON

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

เลือกสร้าง

ตรวจสอบปลายทางของ Private Service Connect

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

สถานะที่มี

972aff09d180d9de.png

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

5472dd938604b3.png

8. การสร้างปลายทางส่วนตัวสำหรับ us-west2

  • เข้าสู่ระบบบัญชี Atlas และไปที่โปรเจ็กต์

เตรียมปลายทางส่วนตัวใน MongoDB Atlas

  • เลือกการเข้าถึงเครือข่าย → ปลายทางส่วนตัว → คลัสเตอร์เฉพาะ → เพิ่มปลายทางส่วนตัว 88f5c1d9ae7e46d9.png

ผู้ให้บริการคลาวด์

  • เลือก Google Cloud แล้วเลือกถัดไป

5503248bf4019a35.png

ไฟล์แนบบริการ

  • เลือกภูมิภาค us-west2 จากนั้นเลือกถัดไป

fc0b7a8e4274be3b.png

ปลายทาง

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

17b5a056587ede8a.png

ตั้งค่าปลายทาง

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

  • ตัวอย่างสคริปต์ Shell เอาต์พุตจะมีค่าต่างกัน

b021821e7d59f450.png

  • คัดลอกสคริปต์เชลล์จากคอนโซล 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 ในเครื่อง

2856802dd6497f51.png 6e3d944944718f13.png

อัปโหลดไฟล์ JSON

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

เลือกสร้าง

ตรวจสอบปลายทางของ Private Service Connect

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

สถานะที่ใช้ได้:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

9. เชื่อมต่อกับแผนที่ MongoDB จากปลายทางส่วนตัว

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

เลือก "เชื่อมต่อกับ MongoDB Shell"

35e422af16cb5ce0.png

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

51be47403c00bab4.png

10. ติดตั้งแอปพลิเคชัน mongosh

ก่อนการติดตั้ง คุณจะต้องสร้างสตริงคำสั่งตามค่าที่คัดลอกมาจากขั้นตอนที่ 1 และ 3 หลังจากนั้น คุณจะนำ SSH ไปยัง vm1 โดยใช้ Cloud Shell ตามด้วยการติดตั้งและการตรวจสอบแอปพลิเคชัน mongosh ไปยังฐานข้อมูลหลัก (us-west1) ติดตั้งอิมเมจ Ubuntu 20.4 เมื่อสร้าง vm1 ใน consumer-vpc

เลือกวิธีการเชื่อมต่อ: ขั้นตอนที่ 1 คัดลอก URL ดาวน์โหลด

5da980ff86265dd8.png

ตัวอย่างสตริงคำสั่ง แทนที่ด้วยค่าที่กำหนดเอง

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

เลือกวิธีการเชื่อมต่อ ขั้นตอนที่ 3

698286bdf3dee3c7.png

ตัวอย่างสตริงคำสั่ง แทนที่ด้วยค่าที่กำหนดเอง

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

ตัวอย่างด้านล่าง

d5d0324a273b4d5e.png

เรียกใช้คำสั่งกับฐานข้อมูล

ภายในการเข้าสู่ระบบระบบปฏิบัติการ 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 → ภาพรวม

64ca0395807bb3ac.png

ในส่วนต่อไปนี้ ให้เข้าสู่ระบบ vm1 ที่อยู่ใน us-west1 เฟลโอเวอร์ของคลัสเตอร์ MongoDB หลักในภูมิภาค us-west1 และยืนยันว่าฐานข้อมูลยังคงเข้าถึงได้จากคลัสเตอร์ MongoDB ใน us-west2

คุณสามารถทดสอบเฟลโอเวอร์ทั้งหลักและระดับภูมิภาคได้จาก Atlas UI

  • เข้าสู่ระบบ Atlas UI
  • คลิกที่ [...] ข้างชื่อคลัสเตอร์ psc-mongodb-uswest1-uswest2 → ทดสอบการหยุดชะงัก

3a50da4381817975.png

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

b8dfff376477bcbb.png

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

76494a750a040bc5.png

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

ปิดหน้าต่าง

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

ตรวจสอบว่า us-west1 ลดลงและ us-west2 ถูกยึดเป็นหลัก

ไปที่ฐานข้อมูล → psc-mongodb-uswest1-uswest2 → ภาพรวม

86fd7d5230715645.png

ตรวจสอบการเชื่อมต่อกับคลัสเตอร์ด้วยคีย์หลักใหม่ 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

ตัวอย่างด้านล่าง

d262800a557b41a3.png

เรียกใช้คำสั่งกับฐานข้อมูล

ภายในการเข้าสู่ระบบระบบปฏิบัติการ Cloud Shell จะดำเนินการต่อไปนี้

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()

exit

20c2571d84c0661d.png

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

12. ล้างข้อมูล

ลบปลายทางของผู้ใช้จาก Cloud Console

ไปที่บริการเครือข่าย → Private Service Connect → ปลายทางที่เชื่อมต่อ

ใช้ตัวกรอง psc-endpoint เพื่อกําจัดการลบปลายทางของผู้ใช้ที่ไม่ใช่ Lab ที่อาจเกิดขึ้น เลือกปลายทางทั้งหมด → ลบ

192548e374b444a1.png

ลบที่อยู่ IP ภายในแบบคงที่ที่เชื่อมโยงกับปลายทางของผู้บริโภค

ไปที่เครือข่าย VPC → Consumer-vpc→ ที่อยู่ IP ภายในแบบคงที่

ใช้ตัวกรอง psc-endpoint เพื่อกำจัดศักยภาพการลบปลายทางของผู้ใช้ที่ไม่ใช่ Lab และเพิ่มแถวต่อหน้าเป็น 100 เลือกปลายทางทั้งหมด → เปิดตัว

4cebf164c4fecd83.png

ลบคอมโพเนนต์ 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 → การจำลองสิ้นสุด

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

ลบปลายทางส่วนตัวที่เชื่อมโยงกับ us-west1 และ us-west2

จาก Atlas UI ให้ไปที่ความปลอดภัย → การเข้าถึงเครือข่าย → อุปกรณ์ปลายทางส่วนตัว → เลือกสิ้นสุด

56415ea954b2fec9.png

13. ขอแสดงความยินดี

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

Cosmopup คิดว่า Codelab ยอดเยี่ยมมาก!!

8c2a10eb841f7b01.jpeg

สิ่งที่ต้องทำต่อไป

ลองดู Codelab เหล่านี้...

อ่านเพิ่มเติมและ วิดีโอ

เอกสารอ้างอิง