1. מבוא
Private Service Connect (PSC) מפשט את הדרך שבה שירותים נצרכים באופן מאובטח ופרטי. המודל הזה מפשט מאוד את ארכיטקטורת הרשת, כי הוא מאפשר לצרכני שירות להתחבר באופן פרטי לבעלי שירותים בארגונים שונים, ומבטל את הצורך בקישור בין רשתות VPC שכנות (peering). איור 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
- איך מבצעים ומאמתים מעבר לגיבוי בענן (failover) של 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 מרובה אזורים
- צריך להגדיר אשכול Atlas לפני שמתחילים בהגדרת PSC. אפשר להירשם ל-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. חשוב לבחור את התפקיד המובנה read and write to any database (קריאה וכתיבה בכל מסד נתונים).

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

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

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

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

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

- מעתיקים את סקריפט המעטפת ממסוף 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 ושמות של נקודות קצה (endpoints) של 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 ולוחצים על 'הבא'.

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

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

- מעתיקים את סקריפט המעטפת ממסוף 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 ושמות של נקודות קצה (endpoints) של 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, עוברים אל Network services (שירותי רשת) → Private Services Connect (חיבור שירותים פרטיים), בוחרים בכרטיסייה Connected endpoint (נקודת קצה מחוברת) שבה מוצגות נקודות קצה של צרכנים במעבר Pending (בהמתנה) → Accepted (התקבלה), כמו בדוגמה שלמטה. בנקודת הקצה של הצרכן נפרסו 100 נקודות קצה, וצריך להעביר אותן למצב 'התקבל' לפני שעוברים לשלב הבא.

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

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

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

בוחרים באפשרות 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. מעבר אוטומטי לגיבוי (failover) באזור פעיל של MongoDB, us-west1
לפני שנבצע את המעבר לגיבוי, נבדוק שאזור us-west1 הוא האזור הראשי ושבאזור us-west2 יש שני צמתים משניים.
עוברים אל Database (מסד נתונים) → psc-mongodb-uswest1-uswest2 → Overview (סקירה כללית)

בקטע הבא מתחברים ל-vm1 שנמצא באזור us-west1, מבצעים מעבר ליתירות כשל באזור הראשי של אשכול MongoDB, us-west1, ומוודאים שאפשר עדיין לגשת למסד הנתונים מאשכול MongoDB באזור us-west2.
אפשר לבדוק את יתירות הכשל גם של הנתונים הראשיים וגם של הנתונים האזוריים דרך ממשק המשתמש של 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
עוברים אל 'שירותי רשת' ← Private Service Connect ← 'נקודות קצה מחוברות'.
כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן מעבדה, משתמשים במסנן psc-endpoint. בוחרים את כל נקודות הקצה ← לוחצים על DELETE (מחיקה).

מחיקת כתובות ה-IP הפנימיות הסטטיות שמשויכות לנקודות הקצה של הצרכנים
עוברים אל VPC network (רשת VPC) → consumer-vpc (רשת VPC של צרכן) → STATIC INTERNAL IP ADDRESSES (כתובות IP פנימיות סטטיות)
משתמשים במסנן 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. מזל טוב
הגדרתם ואימתתם בהצלחה נקודת קצה (endpoint) של Private Service Connect עם גישה גלובלית ל-MongoDB באזורים שונים. יצרתם בהצלחה רשת VPC לצרכן, MongoDB מרובה אזורים ונקודות קצה לצרכן. מכונה וירטואלית שנמצאת באזור us-west1 התחברה בהצלחה ל-MongoDB באזורים us-west1 ו-us-west2 אחרי מעבר לגיבוי אזורי.
Cosmopup חושב ש-codelabs הם מדהימים!!

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