1. מבוא
Private Service Connect (PSC) מפשט את אופן השימוש בשירותים באופן מאובטח ופרטי. המודל הזה מאפשר לצרכני השירות להתחבר באופן פרטי לבעלים של שירותים בארגונים שונים, ומבטל את הצורך בקישור בין רשתות של ענן וירטואלי פרטי. כך, ארכיטקטורת הרשת הופכת לפשוטה יותר באופן משמעותי. באיור 1 מוצגים מאפייני ה-VPC peering וה-PSC.
איור 1.
בתור צרכני שירות, הפתרון הזה מאפשר לכם לבחור איך להקצות את כתובות ה-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. מה תפַתחו
- ייווצר אשכול 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 ומעלה. (יש להשתמש ב-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 (יצירת מסד נתונים) כפי שמוצג בהמשך.
- יצירת אשכול חדש → ייעודי
- ספק הענן והאזור → Google Cloud
- בידוד של עומסי עבודה, עננים מרובים ואזורים מרובים → נבחר (סימן וי כחול)
- צמתים לבחירה → us-west1 (צומת אחד), us-west2 (2 צמתים)
- רמת האשכולות → M10, משאירים את כל שאר ההגדרות בברירת המחדל
- שם האשכול → psc-mongodb-uswest1-uswest2
- בוחרים באפשרות 'יצירת אשכול'.
- יצירת מסד הנתונים נמשכת 7 עד 10 דקות
תצוגה של האשכול אחרי הפריסה
7. יצירת נקודת קצה פרטית ב-us-west1
- מתחברים לחשבון Atlas ועוברים לפרויקט.
יצירת משתמש חדש כדי לאפשר גישה לקריאה/כתיבה לכל מסד נתונים
אבטחה → גישה למסד נתונים, בוחרים באפשרות 'הוספת משתמש חדש למסד נתונים'. בדוגמה הבאה, שם המשתמש והסיסמה מוגדרים כ-codelab. חשוב לבחור את התפקיד המובנה 'קריאה וכתיבה לכל מסד נתונים'.
- בקטע Security (אבטחה) → Network Access (גישה לרשת), לא נדרשת רשומה ב-IP Access List (רשימת הגישה ל-IP)
הכנה של נקודות קצה פרטיות ב-MongoDB Atlas
- בוחרים באפשרות 'גישה לרשת' → 'נקודות קצה פרטיות' → 'אשכול ייעודי' → 'הוספת נקודת קצה פרטית'
ספק ענן
- בוחרים באפשרות Google Cloud ואז לוחצים על 'הבא'.
קובץ מצורף עם השירות
- בוחרים את האזור, us-west1, ואז לוחצים על 'הבא'.
נקודות קצה
- כדי ליצור נקודת קצה של 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 ושמות של נקודות קצה של 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, עוברים לפרויקט ואז ל'אבטחה' → 'גישה לרשת' → 'נקודת קצה פרטית'. בוחרים את הכרטיסייה 'אשכול ייעודי'. המעבר של נקודת הקצה לסטטוס 'זמינה' יימשך 10 דקות.
סטטוס זמין
במסוף Google Cloud, עוברים אל Network services (שירותי רשת) → Private Services Connect (Private Service Connect), בוחרים בכרטיסייה Connected endpoint (נקודת קצה מחוברת) שבה מוצגות נקודות קצה של צרכנים שעוברות מ-Pending (בהמתנה) ל-Accepted (אושרה). דוגמה בהמשך:
8. יצירת נקודת קצה פרטית ב-us-west2
- מתחברים לחשבון Atlas ועוברים לפרויקט.
הכנה של נקודות קצה פרטיות ב-MongoDB Atlas
- בוחרים באפשרות 'גישה לרשת' → 'נקודות קצה פרטיות' → 'אשכול ייעודי' → 'הוספת נקודת קצה פרטית'
ספק ענן
- בוחרים באפשרות Google Cloud ואז לוחצים על 'הבא'.
קובץ מצורף עם השירות
- בוחרים את האזור, us-west2, ואז לוחצים על 'הבא'.
נקודות קצה
- כדי ליצור נקודת קצה של 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 ושמות של נקודות קצה של Private Service Connect שנדרשים לשלב הבא של הפריסה.
ב-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, עוברים לפרויקט ואז ל'אבטחה' → 'גישה לרשת' → 'נקודת קצה פרטית'. בחירת הכרטיסייה, אשכול ייעודי, מעבר נקודת הקצה לזמינה אחרי 10 דקות.
סטטוס זמין:
במסוף Google Cloud, עוברים אל Network services (שירותי רשת) → Private Services Connect (Private Service Connect), בוחרים בכרטיסייה Connected endpoint (נקודת קצה מחוברת) שבה מוצגות נקודות קצה של צרכנים שעוברות מ-Pending (בהמתנה) ל-Accepted (אושרה), לדוגמה בהמשך. פורסים בסך הכול 100 נקודות קצה בנקודת הקצה של הצרכן, וצריך להעביר אותן לסטטוס 'אושר' לפני שממשיכים לשלב הבא.
9. התחברות ל-MongoDB Atlas מנקודות קצה פרטיות
אחרי אישור חיבורי השירות הפרטיים, נדרש זמן נוסף (10-15 דקות) כדי לעדכן את אשכול MongoDB. בממשק המשתמש של MongoDB, הקווים האפורים מייצגים את עדכון האשכול, ולכן לא ניתן להתחבר לנקודת הקצה הפרטית.
מאתרים את הפריסה ובוחרים באפשרות 'התחברות' (שימו לב שהתיבה האפורה כבר לא מופיעה)
בחירת סוג החיבור → נקודה קצה פרטית, בוחרים באפשרות 'בחירת שיטת חיבור'
בוחרים באפשרות Connect with the MongoDB Shell (התחברות באמצעות מעטפת MongoDB).
בוחרים באפשרות 'לא התקנתי את 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 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
דוגמה:
ביצוע פקודות במסד הנתונים
בתוך 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 (סקירה כללית).
בקטע הבא מתחברים ל-vm1 שנמצא באזור us-west1, מבצעים failover לאזור הראשי של אשכול MongoDB באזור us-west1 ומוודאים שעדיין אפשר לגשת למסד הנתונים מאשכול MongoDB באזור us-west2.
אפשר לבדוק את חלוקת העומסים (failover) ברמת האזור וגם ברמת המכונה הראשית דרך ממשק המשתמש של Atlas.
- מתחברים לממשק המשתמש של Atlas.
- לוחצים על [...] לצד שם האשכולות, psc-mongodb-uswest1-uswest2 ← בדיקת הפסקה זמנית בשירות.
- בוחרים באפשרות 'הפסקה זמנית בשירות באזור מסוים' → בוחרים אזורים.
- בוחרים את האזור הראשי, us-west1 → Simulate Regional Outage.
אחרי שבוחרים את האשכולות, הדמיית ההפסקה מוצגת תוך 3-4 דקות.
סגירת החלון
מוודאים ש-us-west1 לא פועל ושה-us-west2 מוגדר כעכשיו כ-primary
עוברים אל 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 login מבצעים את הפעולות הבאות.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
דוגמה:
ביצוע פקודות במסד הנתונים
בתוך Cloud Shell os login מבצעים את הפעולות הבאות.
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
עוברים אל 'שירותי רשת' → 'Private Service Connect' → 'נקודות קצה מחוברות'.
משתמשים במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן ב-Lab. בוחרים את כל נקודות הקצה → מחיקה
מחיקת כתובות ה-IP הפנימיות הסטטיות שמשויכות לנקודות הקצה של הצרכנים
עוברים אל VPC network → consumer-vpc → STATIC INTERNAL IP ADDRESSES
משתמשים במסנן psc-endpoint כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן במעבדה, ולהגדיל את מספר השורות בדף ל-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, עוברים אל Security (אבטחה) → Network Access (גישה לרשת) → Private Endpoint (נקודת קצה פרטית) → בוחרים באפשרות Terminate (סיום).
13. מזל טוב
סיימתם! הגדרתם ואימתתם נקודת קצה של Private Service Connect עם גישה גלובלית ל-MongoDB באזורים שונים. יצרתם VPC של צרכן, MongoDB במספר אזורים ונקודות קצה של צרכן. מכונה וירטואלית שנמצאת באזור us-west1 התחברה בהצלחה ל-MongoDB גם באזור us-west1 וגם באזור us-west2 לאחר אירוע של חלוקת עומסים אזורית.
Cosmopup חושב שהקורסים של Codelab הם מדהימים!!
מה השלב הבא?
כדאי לעיין בחלק מהקורסים האלה ב-Codelab…
- שימוש ב-Private Service Connect לפרסום ולצריכה של שירותים באמצעות GKE
- שימוש ב-Private Service Connect לפרסום ולצריכה של שירותים
- התחברות לשירותים מקומיים דרך Hybrid Networking באמצעות Private Service Connect ומאזן עומסים פנימי של TCP Proxy
- שימוש ב-Private Service Connect עם הגדרת DNS אוטומטית