1. מבוא
Private Service Connect (PSC) מפשט את הדרך שבה נעשה שימוש בשירותים באופן מאובטח ופרטי. המודל הזה מפשט מאוד את ארכיטקטורת הרשת, כי הוא מאפשר לצרכני שירות להתחבר באופן פרטי לבעלי שירותים בארגונים שונים, ומבטל את הצורך בקישור בין רשתות ענן וירטואלי פרטי (VPC). איור 1 מציג את מאפייני ה-VPC peering וה-PSC.
איור 1. 
בתור צרכני שירות, אתם יכולים לבחור איך להקצות כתובות IP פרטיות לשירותים, בלי שתצטרכו לנהל טווחי רשתות משנה עבור רשתות VPC של בעלי שירותים. עכשיו אפשר פשוט להקצות כתובת 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, אבל כלל ההעברה עדיין צריך להיות באותו אזור שבו נמצאת נקודת החיבור לשירות שאליה הוא מחובר.
- כדי להפעיל גישה גלובלית, לא נדרשת הגדרה ב-Service Attachment של שירות היצרן. זו אפשרות שזמינה רק למשתמשים.
אפשר גם להפעיל או להשבית את הגישה הגלובלית בכל שלב עבור נקודות קצה קיימות. לא תהיה הפרעה בתנועה לחיבורים פעילים כשמפעילים גישה גלובלית בנקודת קצה קיימת. כדי להפעיל גישה גלובלית בכלל העברה קיים, משתמשים בפקודה הבאה:
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) עם צומת אחד באזור us-west1 ושני צמתים באזור us-west2.
- רשת VPC של צרכן ומכונה וירטואלית משויכת כדי לגשת לאשכולות MongoDB באזורים us-west1 ו-us-west2.
- רשת VPC ושתי תת-רשתות באזורים us-west1 ו-us-west2 בהתאמה, עם לפחות 64 כתובות IP פנויות בכל אחת מהתת-רשתות (צריך ליצור תת-רשתות עם /26 ומטה).
לקוח MongoDB יותקן ב-VM1 ב-VPC של הצרכן. אם הצומת הראשי ב-us-west1 ייכשל, הלקוח יוכל לקרוא ולכתוב דרך הצומת הראשי החדש ב-us-west2.
איור 2. 
מה תלמדו
- איך יוצרים VPC ותת-רשתות שמוצבים בשני אזורים
- איך פורסים אשכול MongoDB Atlas מרובה אזורים
- איך יוצרים נקודת קצה פרטית
- איך מתחברים ל-MongoDB
- איך מבצעים ומאמתים מעבר לגיבוי בענן של MongoDB בכמה אזורים
מה תצטרכו
- פרויקט ב-Google Cloud
- צריך לספק תת-רשת מסוג /26 לכל אזור
- גישה ל-MongoDB Atlas בתור בעלי הפרויקט או בעלי הארגון כדי ליצור אשכול MongoDB ברמה M10 או ברמה גבוהה יותר. (כדי לקבל קרדיטים בחינם להפעלת ה-PoV, צריך להשתמש ב-GETATLAS)
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
ב-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 Shell, יוצרים את Cloud Router.
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
ב-Cloud Shell, יוצרים את שער ה-NAT.
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.
ב-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 להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
ב-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 (יצירת מסד נתונים) כמו שמוצג למטה.

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

- ספק שירותי ענן ואזור → Google Cloud
- Multi-cloud, multi-region & workload isolation → Selected (blue check)

- צמתים שאפשר לבחור בהם → us-west1 (צומת אחד), us-west2 (שני צמתים)

- רמת האשכול → M10, משאירים את כל שאר ההגדרות כברירת מחדל

- שם האשכול ← psc-mongodb-uswest1-uswest2

- בוחרים באפשרות ← יצירת אשכול

- יצירת מסד הנתונים נמשכת 7-10 דקות

תצוגה של האשכול אחרי הפריסה

7. יצירת נקודת קצה פרטית עבור us-west1
- מתחברים לחשבון Atlas ועוברים לפרויקט.
יצירת משתמש חדש כדי לאפשר גישת קריאה/כתיבה לכל מסד נתונים
בקטע 'אבטחה' → 'גישה למסד נתונים', בוחרים באפשרות 'הוספת משתמש חדש למסד נתונים'. בדוגמה הבאה, שם המשתמש והסיסמה מוגדרים כ-codelab. חשוב לבחור את התפקיד המובנה 'קריאה וכתיבה לכל מסד נתונים'.

- בקטע Security (אבטחה) → Network Access (גישה לרשת), לא נדרש ערך ב-IP Access List (רשימת גישה לכתובות IP)
הכנת נקודות קצה פרטיות ב-MongoDB Atlas
- בוחרים באפשרות Network access (גישה לרשת) → Private Endpoints (נקודות קצה פרטיות) → Dedicated cluster (אשכול ייעודי) → Add private endpoint (הוספת נקודת קצה פרטית)

ספק שירותי ענן
- בוחרים באפשרות Google Cloud ולוחצים על 'הבא'.

קובץ מצורף עם השירות
- בוחרים באזור us-west1 ולוחצים על 'הבא'.

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

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

- מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן במסוף Google Cloud 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 כדי לזהות את סקריפט המעטפת ולעדכן אותו באמצעות התחביר שבהמשך:
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
דוגמה אחרי העדכון:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
הרצת סקריפט מעטפת
עוברים אל הסקריפט setup_psc.sh ומריצים אותו. בסיום, נוצר קובץ בשם atlasEndpoints-psc-endpoint-us-west1.json. קובץ ה-JSON מכיל רשימה של כתובות IP ושמות של נקודות קצה של Private Service Connect שנדרשים לשלב הבא של הפריסה.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
sh setup_psc.sh
אחרי שהסקריפט מסתיים, משתמשים בכלי לעריכת Cloud Shell כדי להוריד את הקובץ atlasEndpoints-psc-endpoint-us-west1.json באופן מקומי.

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


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

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

8. יצירת נקודת קצה פרטית עבור us-west2
- מתחברים לחשבון Atlas ועוברים לפרויקט.
הכנת נקודות קצה פרטיות ב-MongoDB Atlas
- בוחרים באפשרות Network access (גישה לרשת) → Private Endpoints (נקודות קצה פרטיות) → Dedicated cluster (אשכול ייעודי) → Add private endpoint (הוספת נקודת קצה פרטית)

ספק שירותי ענן
- בוחרים באפשרות Google Cloud ולוחצים על 'הבא'.

קובץ מצורף עם השירות
- בוחרים באזור us-west2 ולוחצים על 'הבא'.

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

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

- מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן במסוף Google Cloud 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 כדי לזהות את סקריפט המעטפת ולעדכן אותו באמצעות התחביר שבהמשך:
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 Editor כדי להוריד את atlasEndpoints-psc-endpoint-us-west2.json באופן מקומי.

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


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

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

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

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

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

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

בוחרים באפשרות I do not have the MongoDB Shell installed, Ubuntu 20.4 (לא מותקן אצלי MongoDB Shell, Ubuntu 20.4) ומקפידים להעתיק את התוכן משלב 1 ומשלב 3 לפנקס רשימות.

10. התקנת האפליקציה mongosh
לפני ההתקנה, צריך ליצור מחרוזת פקודה על סמך הערכים שהועתקו קודם בשלבים 1 ו-3. לאחר מכן, תתחברו ל-VM1 באמצעות SSH דרך 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 OS, מבצעים את הפעולות הבאות. שם המשתמש והסיסמה שהוגדרו הם codelab.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
דוגמה:

הפעלת פקודות במסד הנתונים
בתוך הכניסה ל-Cloud Shell OS, מבצעים את הפעולות הבאות.
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 (סקירה כללית)

בקטע הבא מתחברים ל-vm1 שנמצא באזור us-west1, מבצעים מעבר ליתירות כשל באזור הראשי של אשכול MongoDB, us-west1, ומוודאים שאפשר עדיין לגשת למסד הנתונים מאשכול MongoDB באזור us-west2.
אפשר לבדוק את המעבר לגיבוי (failover) גם של השרת הראשי וגם של השרת האזורי דרך ממשק המשתמש של Atlas.
- מתחברים לממשק המשתמש של Atlas.
- לוחצים על […] לצד שם האשכול, psc-mongodb-uswest1-uswest2 → Test Outage.

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

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

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


מוודאים שהאזור us-west1 מושבת והאזור us-west2 השתלט עליו והפך לראשי
עוברים אל Database (מסד נתונים) → psc-mongodb-uswest1-uswest2 → Overview (סקירה כללית)

אימות הקישוריות לאשכול באמצעות השרת הראשי החדש, 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, מבצעים את הפעולות הבאות.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
דוגמה:

הפעלת פקודות במסד הנתונים
בתוך הכניסה ל-Cloud Shell OS, מבצעים את הפעולות הבאות.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

הצלחה: אימתתם שגישה גלובלית ל-PSC מאפשרת קישוריות חלקה לנקודות קצה של צרכנים באזורים שונים, כדי לשפר את הזמינות הגבוהה או בגלל הפסקות חשמל אזוריות. ב-codelab, מעבר אזורי ליתירות כשל ב-MongoDB התרחש בצומת הראשי שנמצא באזור us-west1, ולכן האזור המשני us-west2 השתלט על הראשי. למרות שהאשכול גרם להפסקה זמנית בשירות אזורית, מכונת ה-VM הצרכנית vm1 שנמצאת ב-us-west1 הצליחה להגיע לאשכול הראשי החדש ב-us-west2.
12. הסרת המשאבים
במסוף Cloud, מוחקים את נקודות הקצה של הצרכן
עוברים אל Network services (שירותי רשת) → Private Service Connect (חיבור פרטי לשירות) → CONNECTED ENDPOINTS (נקודות קצה מחוברות)
כדי למנוע מחיקה של נקודות קצה של צרכנים שלא שייכות למעבדה, משתמשים במסנן psc-endpoint. בוחרים באפשרות 'כל נקודות הקצה' ← 'מחיקה'.

מחיקת כתובות ה-IP הפנימיות הסטטיות שמשויכות לנקודות הקצה של הצרכנים
עוברים אל רשת VPC ← consumer-vpc← STATIC INTERNAL IP ADDRESSES
משתמשים במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן במעבדה, ומגדילים את מספר השורות בכל דף ל-100. בחירה של כל נקודות הקצה ← פרסום

מ-Cloud Shell, מוחקים את רכיבי ה-codelab.
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 → מסיימים את הסימולציה

בוחרים באפשרות 'סיום סימולציית הפסקת השירות' > 'יציאה'.

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


מזינים את שם האשכול → סיום

מחיקת נקודת הקצה הפרטית שמשויכת לאזורים us-west1 ו-us-west2
בממשק המשתמש של Atlas, עוברים אל Security (אבטחה) → Network Access (גישה לרשת) → Private Endpoint (נקודת קצה פרטית) → Select Terminate (בחירה בסיום).

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

מה השלב הבא?
כדאי לעיין ב-Codelabs הבאים…
- שימוש ב-Private Service Connect לפרסום ולצריכה של שירותים ב-GKE
- שימוש ב-Private Service Connect לפרסום ולצריכה של שירותים
- התחברות לשירותים מקומיים דרך רשת היברידית באמצעות Private Service Connect ומאזן עומסים פנימי של TCP Proxy
- שימוש ב-Private Service Connect עם הגדרת DNS אוטומטית