גישה ל-MongoDB Atlas במספר אזורים באמצעות Private Service Connect

1. מבוא

חברת Private Service Connect (PSC) מפשטת את האופן שבו משתמשים יכולים להשתמש בשירותים באופן מאובטח ופרטי. המודל הזה מאפשר לצרכני השירותים להתחבר באופן פרטי ליצרני שירותים בין ארגונים, וכך מפשט מאוד את הארכיטקטורה של הרשתות, ואין צורך לבצע קישור בין רשתות שכנות (peering) בענן וירטואלי פרטי. איור 1 ממחיש את מאפייני קישור בין רשתות שכנות (peering) של VPC ו-PSC.

איור 1. 4f9551fc32ed83f5.png

כצרכני שירות, היא מאפשרת לכם לבחור איך להקצות את כתובות ה-IP הפרטיות שלכם לשירותים, תוך הסרת העומס של ניהול טווחי תת-רשת של רשתות ה-VPC של היצרן. עכשיו אתם יכולים פשוט להשתמש ב-Service Connect כדי להקצות את כתובת ה-IP הווירטואלית שבחרתם מה-VPC שלכם לשירות כזה.

ב-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, אבל כלל ההעברה עדיין חייב להיות באותו אזור שבו נמצא הקובץ המצורף לשירות שאליו הוא מחובר.
  • לא נדרשת הגדרה בקובץ המצורף לשירות של היצרן כדי לאפשר גישה גלובלית. זו רק אפשרות בצד הצרכן.

אפשר להפעיל או להשבית את הגישה הגלובלית לנקודות קצה קיימות בכל שלב. כשמפעילים גישה גלובלית בנקודת קצה קיימת, אין הפרעה לתנועה של חיבורים פעילים. אפשר להפעיל גישה גלובלית בכלל העברה קיים באמצעות הפקודה הבאה:

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) ייווצר עם צומת אחד ב-us-west1 ושני צמתים באזורים us-west2, בהתאמה.
  2. VPC צרכני ו-vm משויך כדי לגשת לאשכולות MongoDB ב-us-west1 וב-us-west2.
  3. VPC ושתי רשתות משנה באזורים us-west1 ו-us-west2 בהתאמה, עם לפחות 64 כתובות IP חינמיות בכל רשת משנה (יצירת רשתות משנה עם /26 ומטה).

לקוח MongoDB יותקן ב-vm1 ב-vpc לצרכנים. כשהצומת הראשי נכשל ב-us-west1, הלקוח יוכל לקרוא/לכתוב דרך הצומת הראשי החדש ב-us-west2.

איור 2. ab6c2791514c4481.png

מה תלמדו

  • איך יוצרים VPC ורשתות משנה שפרוסות בשני אזורים
  • איך לפרוס אשכול אטלס של MongoDB במספר אזורים
  • איך יוצרים נקודת קצה פרטית
  • איך מתחברים ל-MongoDB
  • איך לבצע ולאמת יתירות כשל של MongoDB במספר אזורים

מה צריך להכין

  • פרויקט ב-Google Cloud
  • צריך לספק רשת משנה /26 לכל אזור
  • בעלי הפרויקט או בעלי הארגון מקבלים גישה ל-MongoDB Atlas כדי ליצור אשכול MongoDB עם אשכול M10 ואילך. (יש להשתמש ב-GETATLAS כדי לקבל קרדיטים בחינם על הפעלת ה-PoV)

4. לפני שמתחילים

עדכון הפרויקט כך שיתמוך ב-Codelab

ב-Codelab הזה נעשה שימוש ב-$variables כדי לעזור בהטמעת ההגדרות של gcloud ב-Cloud Shell.

Inside Cloud Shell מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

5. הגדרת הצרכן

יצירת ה-VPC לצרכנים

Inside Cloud Shell מבצעים את הפעולות הבאות:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

יצירת רשתות המשנה לצרכנים

Inside Cloud Shell מבצעים את הפעולות הבאות:

gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1

ב-Inside 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

ב-Inside 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 להתקנת חבילות תוכנה, כי למכונות הווירטואליות אין כתובת IP חיצונית.

יוצרים את הנתב Cloud Shell בתוך 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.

Inside Cloud Shell, יוצרים מכונה vm1.

gcloud compute instances create vm1 \
    --project=$projectname \
    --zone=us-west1-a \
    --machine-type=e2-micro \
    --network-interface=subnet=vm-subnet,no-address \
    --maintenance-policy=MIGRATE \
    --provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, יוצרים כלל של חומת אש:

  • המדיניות חלה על כל מכונות וירטואליות שרוצים לגשת אליהן באמצעות IAP.
  • תעבורת נתונים נכנסת (ingress) מטווח ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות להעברת TCP באמצעות IAP.

בתוך Cloud Shell, יוצרים את כלל חומת האש IAP.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. יצירת אשכול MongoDB Atlas במספר אזורים

  • לפני שנתחיל בהגדרה של PSC, אנחנו צריכים להגדיר אשכול Atlas. אפשר להירשם ל-MongoDB Atlas באחת משתי הדרכים הבאות:
  • באמצעות Google Cloud Marketplace אם יש לכם חשבון Google Cloud. אפשר להיעזר במסמכי העזרה כדי להגדיר את המינוי.
  • באמצעות דף הרישום של ה-Atlas.
  • לאחר ההרשמה ל-Atlas, לחצו על הלחצן Build a Database כפי שמוצג בהמשך.

796f5bda844bf400.png

  • יצירת אשכול חדש ← ייעודי

56c340661d86962c.png

  • ספק שירותי ענן אזור ← Google Cloud
  • מרובה עננים (multi-cloud), במספר אזורים וב- בידוד עומס עבודה ← נבחר (סימון כחול)

6c10293ffd9814ae.png

  • צמתים לבחירה ← us-west1 (צומת אחד), 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

נקודות קצה

  • כדי ליצור נקודת קצה (endpoint) מסוג Private Service Connect, צריך לספק את הפרטים הבאים:
  • מזהה הפרויקט ב-Google Cloud: בוחרים באפשרות 'הצגת ההוראות'. לפרטים
  • שם ה-VPC: Consumer-vpc
  • שם רשת המשנה: psc-endpoint-us-west1
  • קידומת נקודת הקצה של חיבור לשירות פרטי: psc-endpoint-us-west1

21d76af5367832f4.png

הגדרה של נקודות קצה

בקטע הבא נוצר סקריפט מעטפת, שאמור להישמר באופן מקומי בשם setup_psc.sh. לאחר השמירה, עורכים את סקריפט המעטפת כדי לאפשר גישה גלובלית של psc. אפשר לבצע את הפעולה הזו בפרויקט ב-Google Cloud ב-Cloud Shell.

  • סקריפט מעטפת לדוגמה, לפלט יהיו ערכים שונים

5c80cf7315a05c25.png

  • מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן בטרמינל Google Cloud Shell, וחשוב לשמור את הסקריפט בשם setup_psc.sh

דוגמה לפני העדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

עדכון סקריפט המעטפת כך שיתמוך בגישה גלובלית

משתמשים ב-nano או ב-vi Editor כדי לזהות ולעדכן את סקריפט המעטפת עם התחביר הבא:

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 ושמות של נקודות קצה (endpoint) של Private Service Connect, הנדרשים לשלב הבא של הפריסה.

Inside 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

בממשק המשתמש של MongoDB, עוברים לפרויקט ולוחצים על Security (אבטחה) ← Network access (גישה לרשת) ← Private endpoint (נקודת קצה פרטית). אם בוחרים את הכרטיסייה, האשכול הייעודי והמעבר של נקודת הקצה ל'זמין' נמשך 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

נקודות קצה

  • כדי ליצור נקודת קצה (endpoint) מסוג Private Service Connect, צריך לספק את הפרטים הבאים:
  • מזהה הפרויקט ב-Google Cloud: בוחרים באפשרות 'הצגת ההוראות'. לפרטים
  • שם ה-VPC: Consumer-vpc
  • שם רשת המשנה: psc-endpoint-us-west2
  • קידומת נקודת הקצה של חיבור לשירות פרטי: psc-endpoint-us-west2

17b5a056587ede8a.png

הגדרה של נקודות קצה

בקטע הבא נוצר סקריפט מעטפת, שאמור להישמר באופן מקומי בשם setup_psc.sh. לאחר השמירה, עורכים את סקריפט המעטפת כדי לאפשר גישה גלובלית של psc. אפשר לבצע את הפעולה הזו בפרויקט ב-Google Cloud ב-Cloud Shell.

  • סקריפט מעטפת לדוגמה, לפלט יהיו ערכים שונים

b021821e7d59f450.png

  • מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן בטרמינל Google Cloud Shell, וחשוב לשמור את הסקריפט בשם setup_psc.sh

דוגמה לפני עדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

עדכון סקריפט המעטפת כך שיתמוך בגישה גלובלית

משתמשים ב-nano או ב-vi Editor כדי לזהות ולעדכן את סקריפט המעטפת עם התחביר הבא:

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 ושמות של נקודות קצה (endpoint) של Private Service Connect, הנדרשים לשלב הבא של הפריסה.

Inside 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

בממשק המשתמש של MongoDB, עוברים לפרויקט ולוחצים על Security (אבטחה) ← Network access (גישה לרשת) ← Private endpoint (נקודת קצה פרטית). בחירת הכרטיסייה, האשכול הייעודי, המעבר לנקודת הקצה (endpoint) יהיה זמין אחרי 10 דקות.

סטטוס זמין:

8801df4f6b39d20a.png

במסוף Google Cloud, עוברים אל 'שירותי רשת' ← 'Private Services Connect' ובוחרים בכרטיסייה 'נקודת קצה מחוברת' שמציגה את המעבר של נקודות הקצה של הצרכן 'בהמתנה' ← 'אושר', דוגמה למטה. 100 נקודות קצה פרוסות בסך הכול בנקודת הקצה לצרכנים תצטרכו לעבור לסטטוס 'מאושר' לפני המעבר לשלב הבא.

6131abcdef5c1f49.png

9. התחברות לאטלס MongoDB מנקודות קצה פרטיות

אחרי אישור החיבורים לשירות הפרטי, נדרש זמן נוסף (10 עד 15 דקות) כדי לעדכן את אשכול MongoDB. בממשק המשתמש של MongoDB, המתאר האפור מייצג את העדכון לאשכול, ולכן לא ניתן להתחבר לנקודת הקצה הפרטית.

c1524d2c0c5765d1.png

מזהים את הפריסה ובוחרים באפשרות 'חיבור' (שימו לב שהתיבה האפורה כבר לא מופיעה)

3eea96af20bfad20.png

בחירת סוג החיבור ← נקודת קצה פרטית, בוחרים באפשרות 'בחירת שיטת חיבור'

16a9090e495640c7.png

בוחרים באפשרות Connect with the MongoDB Shell

35e422af16cb5ce0.png

Select, MongoDB Shell לא מותקן, Ubuntu 20.4. צריך לוודא שהתוכן מעתיק משלב 1 משלב 3 ומשלב 3 לפנקס.

51be47403c00bab4.png

10. התקנת אפליקציית mongosh

לפני ההתקנה צריך ליצור מחרוזת פקודה שמבוססת על הערכים שהועתקו קודם לכן בשלבים 1 ו-3. לאחר מכן, תוכלו להיכנס ל-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

Inside 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 ← סקירה כללית

64ca0395807b3ac.png

בקטע הבא, צריך להתחבר ל-vm1 שנמצא ב-us-west1, לבצע יתירות כשל באזור אשכול MongoDB הראשי us-west1 ולוודא שאפשר להגיע למסד הנתונים מאשכול MongoDB ב-us-west2.

אפשר לבדוק גם יתירות כשל ראשית וגם אזורית דרך ממשק המשתמש של Atlas.

  • מתחברים לממשק המשתמש של Atlas.
  • לוחצים על [...] שליד שם האשכול, psc-mongodb-uswest1-uswest2 ← Test Outage.

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 הסתיים:

Inside 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. בחירת כל נקודות הקצה ← DELETE

192548e374b444a1.png

מחיקת כתובות ה-IP הפנימיות הסטטיות המשויכות לנקודות הקצה של הצרכן

עוברים לרשת VPC ← צרכן-vpc ← staticIC INTERNAL IP ADDRESSES

השתמשו במסנן 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 מזהים את האשכול psc-mongodb-uswest1-uswest2 ← סימולציית סיום

f82e28ac984d9e20.png

בחירת סימולציה של הפסקה זמנית בשירות —> לצאת

38feaf055abdceea.png

האשכול מחזיר עכשיו את us-west1 כראשי, התהליך הזה יימשך 3-4 דקות. בסיום התהליך, סגרו את האשכול. שימו לב למתווה האפור שמציין שינוי סטטוס.

f249a61bcc966d41.png

9427a9349daa1fea.png

הוספת שם האשכול ← סיום

9ef6d3a6387c5b4b.png

מוחקים את נקודת הקצה הפרטית שמשויכת ל-us-west1 ול-us-west2

בממשק המשתמש של Atlas, עוברים אל 'אבטחה' ← 'גישה לרשת' ← 'נקודת קצה פרטית' ← בוחרים באפשרות 'סיום'

56415ea954b2fec9.png

13. מזל טוב

כל הכבוד! הגדרת בהצלחה ואימתת נקודת קצה של Private Service Connect עם גישה גלובלית ל-MongoDB בכל האזורים. יצרתם בהצלחה VPC לצרכנים, MongoDB במספר אזורים ונקודות קצה לצרכנים. מכונה וירטואלית שנמצאת ב-us-west1 מחוברת בהצלחה ל-MongoDB ב-us-west1 וגם ב-us-west2 אחרי יתירות כשל אזורית.

Cosmopup אומר ש-Codelabs מדהימים!

8c2a10eb841f7b01.jpeg

מה השלב הבא?

כדאי לנסות כמה מ-Codelabs האלה...

המשך קריאה סרטונים

מסמכי עזר