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

1. מבוא

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

איור 1. 4f9551fc32ed83f5.png

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

ב-codelab הזה תלמדו איך ליצור ארכיטקטורה מקיפה של Private Service Connect שממחישה את השימוש בגישה הגלובלית של PSC עם MongoDB atlas.

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

2. הפעלת גישה גלובלית

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

gcloud beta compute forwarding-rules create psc-west \
    --region=us-west1 \
    --network=consumer-vpc \
    --address=psc-west-address \
    --target-service-attachment=projects/.../serviceAttachments/sa-west \
    --allow-psc-global-access
  • הדגל --allow-psc-global-access מאפשר גישה גלובלית בנקודת קצה מסוג Private Service Connect
  • גישה גלובלית מאפשרת ללקוח להיות באזור שונה מזה של כלל ההעברה של Private Service Connect, אבל כלל ההעברה עדיין צריך להיות באותו אזור שבו נמצא צירוף השירות שאליו הוא מחובר.
  • אין צורך בהגדרה כלשהי בשירות המצורף של היוצר כדי לאפשר גישה גלובלית. זוהי אפשרות צד-צרכן בלבד.

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

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 של צרכן ומכונה וירטואלית משויכת כדי לגשת לאשכולות 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 Atlas במספר אזורים
  • איך יוצרים נקודת קצה פרטית
  • איך מתחברים ל-MongoDB
  • איך מבצעים ומאמתים יתירות של MongoDB במספר אזורים

מה צריך להכין

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

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

ב-Cloud Shell, יוצרים את נקודת הקצה של הצרכן ב-us-west1:

gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1

ב-Cloud Shell, יוצרים את נקודת הקצה של הצרכן ב-us-west2:

gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2

הגדרה של Cloud Router ו-NAT

ב-codelab נעשה שימוש ב-Cloud NAT להתקנת חבילות תוכנה, כי למכונות הווירטואליות אין כתובת 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

בקטע הבא תיצורו את המכונה vm1 ב-Compute Engine.

יוצרים את המכונה 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 שרוצים לגשת אליהן באמצעות IAP.
  • הכלל מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-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 במספר אזורים

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

796f5bda844bf400.png

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

56c340661d86962c.png

  • ספק הענן והאזור → Google 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

  • בקטע Security (אבטחה) → Network Access (גישה לרשת), לא נדרשת רשומה ב-IP Access List (רשימת הגישה ל-IP)

הכנה של נקודות קצה פרטיות ב-MongoDB Atlas

  • בוחרים באפשרות 'גישה לרשת' → 'נקודות קצה פרטיות' → 'אשכול ייעודי' → 'הוספת נקודת קצה פרטית' 88f5c1d9ae7e46d9.png

ספק ענן

  • בוחרים באפשרות Google Cloud ואז לוחצים על 'הבא'.

5503248bf4019a35.png

קובץ מצורף עם השירות

  • בוחרים את האזור, us-west1, ואז לוחצים על 'הבא'.

cb31aea7cad182f9.png

נקודות קצה

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • מעתיקים את סקריפט המעטפת מהמסוף של 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 באופן מקומי.

2856802dd6497f51.png b0059dc8e1558891.png

העלאת קובץ ה-JSON

מעלים את קובץ ה-JSON שנשמר קודם atlasEndpoints-psc-endpoint-us-west1.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

בוחרים באפשרות 'יצירה'.

אימות נקודות קצה של Private Service Connect

בממשק המשתמש של MongoDB, עוברים לפרויקט ואז ל'אבטחה' → 'גישה לרשת' → 'נקודת קצה פרטית'. בוחרים את הכרטיסייה 'אשכול ייעודי'. המעבר של נקודת הקצה לסטטוס 'זמינה' יימשך 10 דקות.

סטטוס זמין

972aff09d180d9de.png

במסוף Google Cloud, עוברים אל Network services (שירותי רשת) → Private Services Connect (Private Service Connect), בוחרים בכרטיסייה Connected endpoint (נקודת קצה מחוברת) שבה מוצגות נקודות קצה של צרכנים שעוברות מ-Pending (בהמתנה) ל-Accepted (אושרה). דוגמה בהמשך:

5472dd938604b3.png

8. יצירת נקודת קצה פרטית ב-us-west2

  • מתחברים לחשבון Atlas ועוברים לפרויקט.

הכנה של נקודות קצה פרטיות ב-MongoDB Atlas

  • בוחרים באפשרות 'גישה לרשת' → 'נקודות קצה פרטיות' → 'אשכול ייעודי' → 'הוספת נקודת קצה פרטית' 88f5c1d9ae7e46d9.png

ספק ענן

  • בוחרים באפשרות Google Cloud ואז לוחצים על 'הבא'.

5503248bf4019a35.png

קובץ מצורף עם השירות

  • בוחרים את האזור, us-west2, ואז לוחצים על 'הבא'.

fc0b7a8e4274be3b.png

נקודות קצה

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

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • מעתיקים את סקריפט המעטפת מהמסוף של 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 באופן מקומי.

2856802dd6497f51.png 6e3d944944718f13.png

העלאת קובץ ה-JSON

מעלים את קובץ ה-JSON שנשמר בעבר atlasEndpoints-psc-endpoint-us-west2.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

בוחרים באפשרות 'יצירה'.

אימות נקודות קצה של Private Service Connect

בממשק המשתמש של MongoDB, עוברים לפרויקט ואז ל'אבטחה' → 'גישה לרשת' → 'נקודת קצה פרטית'. בחירת הכרטיסייה, אשכול ייעודי, מעבר נקודת הקצה לזמינה אחרי 10 דקות.

סטטוס זמין:

8801df4f6b39d20a.png

במסוף Google Cloud, עוברים אל Network services (שירותי רשת) → Private Services Connect (Private Service Connect), בוחרים בכרטיסייה Connected endpoint (נקודת קצה מחוברת) שבה מוצגות נקודות קצה של צרכנים שעוברות מ-Pending (בהמתנה) ל-Accepted (אושרה), לדוגמה בהמשך. פורסים בסך הכול 100 נקודות קצה בנקודת הקצה של הצרכן, וצריך להעביר אותן לסטטוס 'אושר' לפני שממשיכים לשלב הבא.

6131abcdef5c1f49.png

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

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

בוחרים באפשרות Connect with the MongoDB Shell (התחברות באמצעות מעטפת MongoDB).

35e422af16cb5ce0.png

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

51be47403c00bab4.png

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

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

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 os login מבצעים את הפעולות הבאות. שם המשתמש והסיסמה שמוגדרים הם 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 os login מבצעים את הפעולות הבאות.

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

11. אזור MongoDB פעיל להחלפת חירום, us-west1

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

עוברים אל Database (מסד נתונים) → psc-mongodb-uswest1-uswest2 → Overview (סקירה כללית).

64ca0395807bb3ac.png

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

אפשר לבדוק את חלוקת העומסים (failover) ברמת האזור וגם ברמת המכונה הראשית דרך ממשק המשתמש של Atlas.

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

3a50da4381817975.png

  • בוחרים באפשרות 'הפסקה זמנית בשירות באזור מסוים' → בוחרים אזורים.

b8dfff376477bcbb.png

  • בוחרים את האזור הראשי, us-west1‏ → Simulate Regional Outage.

76494a750a040bc5.png

אחרי שבוחרים את האשכולות, הדמיית ההפסקה מוצגת תוך 3-4 דקות.

סגירת החלון

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

מוודאים ש-us-west1 לא פועל ושה-us-west2 מוגדר כעכשיו כ-primary

עוברים אל Database (מסד נתונים) → psc-mongodb-uswest1-uswest2 → Overview (סקירה כללית).

86fd7d5230715645.png

אימות החיבור לאשכולות באמצעות שרת ראשי חדש, 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 os login מבצעים את הפעולות הבאות.

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 os login מבצעים את הפעולות הבאות.

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

עוברים אל 'שירותי רשת' → 'Private Service Connect' → 'נקודות קצה מחוברות'.

משתמשים במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן ב-Lab. בוחרים את כל נקודות הקצה → מחיקה

192548e374b444a1.png

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

עוברים אל VPC network‏ → consumer-vpc‏ → STATIC INTERNAL IP ADDRESSES

משתמשים במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן במעבדה, ולהגדיל את מספר השורות בדף ל-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, עוברים אל Security (אבטחה) → Network Access (גישה לרשת) → Private Endpoint (נקודת קצה פרטית) → בוחרים באפשרות Terminate (סיום).

56415ea954b2fec9.png

13. מזל טוב

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

Cosmopup חושב שהקורסים של Codelab הם מדהימים!!

8c2a10eb841f7b01.jpeg

מה השלב הבא?

כדאי לעיין בחלק מהקורסים האלה ב-Codelab…

קריאה נוספת וסרטונים

מסמכי עזרה