1. מבוא
חברת Private Service Connect (PSC) מפשטת את האופן שבו משתמשים יכולים להשתמש בשירותים באופן מאובטח ופרטי. המודל הזה מאפשר לצרכני השירותים להתחבר באופן פרטי ליצרני שירותים בין ארגונים, וכך מפשט מאוד את הארכיטקטורה של הרשתות, ואין צורך לבצע קישור בין רשתות שכנות (peering) בענן וירטואלי פרטי. איור 1 ממחיש את מאפייני קישור בין רשתות שכנות (peering) של VPC ו-PSC.
איור 1.
כצרכני שירות, היא מאפשרת לכם לבחור איך להקצות את כתובות ה-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. מה תפַתחו
- אשכול MongoDB Atlas רב-אזורי (טופולוגיה שמתוארת באיור 2) ייווצר עם צומת אחד ב-us-west1 ושני צמתים באזורים us-west2, בהתאמה.
- VPC צרכני ו-vm משויך כדי לגשת לאשכולות MongoDB ב-us-west1 וב-us-west2.
- VPC ושתי רשתות משנה באזורים us-west1 ו-us-west2 בהתאמה, עם לפחות 64 כתובות IP חינמיות בכל רשת משנה (יצירת רשתות משנה עם /26 ומטה).
לקוח MongoDB יותקן ב-vm1 ב-vpc לצרכנים. כשהצומת הראשי נכשל ב-us-west1, הלקוח יוכל לקרוא/לכתוב דרך הצומת הראשי החדש ב-us-west2.
איור 2.
מה תלמדו
- איך יוצרים 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 כפי שמוצג בהמשך.
- יצירת אשכול חדש ← ייעודי
- ספק שירותי ענן אזור ← Google Cloud
- מרובה עננים (multi-cloud), במספר אזורים וב- בידוד עומס עבודה ← נבחר (סימון כחול)
- צמתים לבחירה ← us-west1 (צומת אחד), us-west2 (2 צמתים)
- רמת אשכול ← M10, משאירים את כל שאר ההגדרות כברירת מחדל
- שם האשכול ← psc-mongodb-uswest1-uswest2
- בחירה ← יצירת אשכול
- יצירת מסד הנתונים נמשכת 7-10 דקות
הצגת האשכול לאחר הפריסה
7. יצירה של נקודות קצה פרטיות ל-us-west1
- מתחברים לחשבון Atlas ומנווטים לפרויקט.
יצירת משתמש חדש כדי לאפשר גישת קריאה/כתיבה לכל מסד נתונים
אבטחה ← גישה למסד הנתונים: בחירת משתמש חדש למסד הנתונים. הדוגמה הבאה היא שם משתמש וסיסמה שהוגדרו כ-Codelab. חשוב לבחור באפשרות 'קריאה וכתיבה' של תפקיד מובנה בכל מסד נתונים.
- בקטע 'אבטחה' ← 'גישה לרשת', לא נדרשת רשומה לרשימת הגישה לכתובת IP
הכנת נקודות קצה פרטיות ב-MongoDB Atlas
- בחירה, גישה לרשת ← נקודות קצה פרטיות ← אשכול ייעודי ← הוספה של נקודת קצה פרטית
ספק שירותי ענן
- בוחרים ב-Google Cloud ובהמשך
קובץ מצורף לשירות
- בוחרים את האזור, us-west1 ואז הבא
נקודות קצה
- כדי ליצור נקודת קצה (endpoint) מסוג Private Service Connect, צריך לספק את הפרטים הבאים:
- מזהה הפרויקט ב-Google Cloud: בוחרים באפשרות 'הצגת ההוראות'. לפרטים
- שם ה-VPC: Consumer-vpc
- שם רשת המשנה: psc-endpoint-us-west1
- קידומת נקודת הקצה של חיבור לשירות פרטי: psc-endpoint-us-west1
הגדרה של נקודות קצה
בקטע הבא נוצר סקריפט מעטפת, שאמור להישמר באופן מקומי בשם setup_psc.sh. לאחר השמירה, עורכים את סקריפט המעטפת כדי לאפשר גישה גלובלית של psc. אפשר לבצע את הפעולה הזו בפרויקט ב-Google Cloud ב-Cloud Shell.
- סקריפט מעטפת לדוגמה, לפלט יהיו ערכים שונים
- מעתיקים את סקריפט המעטפת ממסוף 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 באופן מקומי.
מעלים את קובץ ה-JSON
מעלים את קובץ ה-json שנשמר בעבר, atlasEndpoints-psc-endpoint-us-west1.json
בוחרים באפשרות 'יצירה'
אימות נקודות הקצה של Private Service Connect
בממשק המשתמש של MongoDB, עוברים לפרויקט ולוחצים על Security (אבטחה) ← Network access (גישה לרשת) ← Private endpoint (נקודת קצה פרטית). אם בוחרים את הכרטיסייה, האשכול הייעודי והמעבר של נקודת הקצה ל'זמין' נמשך 10 דקות.
סטטוס זמין
במסוף Google Cloud, עוברים אל 'שירותי רשת' ← 'Private Services Connect' ובוחרים בכרטיסייה 'נקודת קצה מחוברת' שמציגה את המעבר של נקודות הקצה של הצרכנים בהמתנה ← 'אושרה', לדוגמה:
8. יצירה של נקודות קצה פרטיות ל-us-west2
- מתחברים לחשבון Atlas ומנווטים לפרויקט.
הכנת נקודות קצה פרטיות ב-MongoDB Atlas
- בחירה, גישה לרשת ← נקודות קצה פרטיות ← אשכול ייעודי ← הוספה של נקודת קצה פרטית
ספק שירותי ענן
- בוחרים ב-Google Cloud ובהמשך
קובץ מצורף לשירות
- בוחרים את האזור, us-west2 ואז הבא
נקודות קצה
- כדי ליצור נקודת קצה (endpoint) מסוג Private Service Connect, צריך לספק את הפרטים הבאים:
- מזהה הפרויקט ב-Google Cloud: בוחרים באפשרות 'הצגת ההוראות'. לפרטים
- שם ה-VPC: Consumer-vpc
- שם רשת המשנה: psc-endpoint-us-west2
- קידומת נקודת הקצה של חיבור לשירות פרטי: psc-endpoint-us-west2
הגדרה של נקודות קצה
בקטע הבא נוצר סקריפט מעטפת, שאמור להישמר באופן מקומי בשם setup_psc.sh. לאחר השמירה, עורכים את סקריפט המעטפת כדי לאפשר גישה גלובלית של psc. אפשר לבצע את הפעולה הזו בפרויקט ב-Google Cloud ב-Cloud Shell.
- סקריפט מעטפת לדוגמה, לפלט יהיו ערכים שונים
- מעתיקים את סקריפט המעטפת ממסוף 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.
מעלים את קובץ ה-JSON
מעלים את קובץ ה-json שנשמר בעבר, atlasEndpoints-psc-endpoint-us-west2.json
בוחרים באפשרות 'יצירה'
אימות נקודות קצה של Private Service Connect
בממשק המשתמש של MongoDB, עוברים לפרויקט ולוחצים על Security (אבטחה) ← Network access (גישה לרשת) ← Private endpoint (נקודת קצה פרטית). בחירת הכרטיסייה, האשכול הייעודי, המעבר לנקודת הקצה (endpoint) יהיה זמין אחרי 10 דקות.
סטטוס זמין:
במסוף Google Cloud, עוברים אל 'שירותי רשת' ← 'Private Services Connect' ובוחרים בכרטיסייה 'נקודת קצה מחוברת' שמציגה את המעבר של נקודות הקצה של הצרכן 'בהמתנה' ← 'אושר', דוגמה למטה. 100 נקודות קצה פרוסות בסך הכול בנקודת הקצה לצרכנים תצטרכו לעבור לסטטוס 'מאושר' לפני המעבר לשלב הבא.
9. התחברות לאטלס MongoDB מנקודות קצה פרטיות
אחרי אישור החיבורים לשירות הפרטי, נדרש זמן נוסף (10 עד 15 דקות) כדי לעדכן את אשכול MongoDB. בממשק המשתמש של MongoDB, המתאר האפור מייצג את העדכון לאשכול, ולכן לא ניתן להתחבר לנקודת הקצה הפרטית.
מזהים את הפריסה ובוחרים באפשרות 'חיבור' (שימו לב שהתיבה האפורה כבר לא מופיעה)
בחירת סוג החיבור ← נקודת קצה פרטית, בוחרים באפשרות 'בחירת שיטת חיבור'
בוחרים באפשרות Connect with the MongoDB Shell
Select, MongoDB Shell לא מותקן, Ubuntu 20.4. צריך לוודא שהתוכן מעתיק משלב 1 משלב 3 ומשלב 3 לפנקס.
10. התקנת אפליקציית mongosh
לפני ההתקנה צריך ליצור מחרוזת פקודה שמבוססת על הערכים שהועתקו קודם לכן בשלבים 1 ו-3. לאחר מכן, תוכלו להיכנס ל-vm1 באמצעות 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
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
דוגמה:
להריץ פקודות כנגד מסד הנתונים
בתוך ההתחברות ל-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 ← סקירה כללית
בקטע הבא, צריך להתחבר ל-vm1 שנמצא ב-us-west1, לבצע יתירות כשל באזור אשכול MongoDB הראשי us-west1 ולוודא שאפשר להגיע למסד הנתונים מאשכול MongoDB ב-us-west2.
אפשר לבדוק גם יתירות כשל ראשית וגם אזורית דרך ממשק המשתמש של Atlas.
- מתחברים לממשק המשתמש של Atlas.
- לוחצים על [...] שליד שם האשכול, psc-mongodb-uswest1-uswest2 ← Test Outage.
- בוחרים השבתה אזורית ← בחירת אזורים.
- בוחרים את האזור הראשי, us-west1 ← סימולציה של ההשבתה האזורית.
לאחר הבחירה באשכול, תופיע סימולציה של הפסקה זמנית בשירות אחרי 3-4 דקות
סגירת החלון
צריך לוודא שהשדה us-west1 לא פועל וש-us-west2 מוגדר עכשיו כראשי
עוברים למסד נתונים ← psc-mongodb-uswest1-uswest2 ← סקירה כללית
אימות הקישוריות לאשכול באמצעות פרוטוקול ראשי חדש, 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
דוגמה:
להריץ פקודות כנגד מסד הנתונים
בתוך ההתחברות ל-Cloud Shell, מבצעים את הפעולות הבאות.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit
הצלחה: אימתת שהגישה הגלובלית ל-PSC מאפשרת קישוריות חלקה של נקודות קצה לצרכנים בין אזורים, כדי לסייע בזמינות גבוהה או עקב הפסקות זמניות בשירות באזור. ב-Codelab, יתירות הכשל האזורית של MongoDB התרחשה בצומת הראשי us-west1, ולכן האזור המשני us-west2 השתלט על האזור הראשי. למרות שהאשכול גרם להפסקה אזורית של הבעיה, גרסה vm1 לצרכנים שממוקמת ב-us-west1 הגיעה בהצלחה לאשכול הראשי החדש ב-us-west2.
12. הסרת המשאבים
מוחקים את נקודות הקצה של הצרכנים מ-Cloud Console
עוברים לשירותי רשת ← Private Service Connect ← נקודות קצה מחוברות
להשתמש במסנן psc-endpoint כדי למנוע מחיקה אפשרית של נקודות קצה ללקוחות שהן לא שיעורי Lab. בחירת כל נקודות הקצה ← DELETE
מחיקת כתובות ה-IP הפנימיות הסטטיות המשויכות לנקודות הקצה של הצרכן
עוברים לרשת VPC ← צרכן-vpc ← staticIC INTERNAL IP ADDRESSES
השתמשו במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה לצרכנים שאינם שיעורי Lab, ומגדילים את מספר השורות בכל דף ל-100. בחירת כל נקודות הקצה ← השקה
מוחקים את רכיבי 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 ← סימולציית סיום
בחירת סימולציה של הפסקה זמנית בשירות —> לצאת
האשכול מחזיר עכשיו את us-west1 כראשי, התהליך הזה יימשך 3-4 דקות. בסיום התהליך, סגרו את האשכול. שימו לב למתווה האפור שמציין שינוי סטטוס.
הוספת שם האשכול ← סיום
מוחקים את נקודת הקצה הפרטית שמשויכת ל-us-west1 ול-us-west2
בממשק המשתמש של Atlas, עוברים אל 'אבטחה' ← 'גישה לרשת' ← 'נקודת קצה פרטית' ← בוחרים באפשרות 'סיום'
13. מזל טוב
כל הכבוד! הגדרת בהצלחה ואימתת נקודת קצה של Private Service Connect עם גישה גלובלית ל-MongoDB בכל האזורים. יצרתם בהצלחה VPC לצרכנים, MongoDB במספר אזורים ונקודות קצה לצרכנים. מכונה וירטואלית שנמצאת ב-us-west1 מחוברת בהצלחה ל-MongoDB ב-us-west1 וגם ב-us-west2 אחרי יתירות כשל אזורית.
Cosmopup אומר ש-Codelabs מדהימים!
מה השלב הבא?
כדאי לנסות כמה מ-Codelabs האלה...
- שימוש ב-Private Service Connect כדי לפרסם ולצרוך שירותים באמצעות GKE
- שימוש ב-Private Service Connect כדי לפרסם ולצרוך שירותים
- התחברות לשירותים מקומיים באמצעות Networking היברידי באמצעות Private Service Connect ומאזן עומסים פנימי של TCP Proxy
- שימוש ב-Private Service Connect עם הגדרת DNS אוטומטית