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

1. מבוא

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

איור 1. 4f9551fc32ed83f5.png

בתור צרכני שירות, אתם יכולים לבחור איך להקצות כתובות 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. מה תפַתחו

  1. ייווצר אשכול MongoDB Atlas שכולל מספר אזורים (הטופולוגיה מתוארת באיור 2) עם צומת אחד באזור us-west1 ושני צמתים באזור us-west2.
  2. רשת VPC של צרכן ומכונה וירטואלית משויכת כדי לגשת לאשכולות MongoDB באזורים us-west1 ו-us-west2.
  3. רשת VPC ושתי תת-רשתות באזורים us-west1 ו-us-west2 בהתאמה, עם לפחות 64 כתובות IP פנויות בכל תת-רשת (צריך ליצור תת-רשתות עם ‎ /26 ומטה).

לקוח MongoDB יותקן ב-VM1 ב-VPC של הצרכן. אם הצומת הראשי ב-us-west1 ייכשל, הלקוח יוכל לקרוא ולכתוב דרך הצומת הראשי החדש ב-us-west2.

איור 2. ab6c2791514c4481.png

מה תלמדו

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

796f5bda844bf400.png

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

56c340661d86962c.png

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

6c10293ffd9814ae.png

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

e652bd944d785871.png

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

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

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

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

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

1f0ec6a401578650.png

7. יצירת נקודת קצה פרטית עבור us-west1

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

יצירת משתמש חדש כדי לאפשר גישת קריאה/כתיבה לכל מסד נתונים

בקטע 'אבטחה' → 'גישה למסד נתונים', בוחרים באפשרות 'הוספת משתמש חדש למסד הנתונים'. בדוגמה הבאה, שם המשתמש והסיסמה מוגדרים כ-codelab. חשוב לבחור את התפקיד המובנה read and write to any database (קריאה וכתיבה בכל מסד נתונים).

f622ab14ddc96fc7.png

  • בקטע Security (אבטחה) → Network Access (גישה לרשת), אין צורך להזין רשומה ב-IP Access List (רשימת גישה לכתובות IP)

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

  • בוחרים באפשרות Network access (גישה לרשת) → Private Endpoints (נקודות קצה פרטיות) → Dedicated cluster (אשכול ייעודי) → Add private endpoint (הוספת נקודת קצה פרטית) 88f5c1d9ae7e46d9.png

ספק שירותי ענן

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

5503248bf4019a35.png

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

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

cb31aea7cad182f9.png

נקודות קצה

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן במסוף Cloud Shell של Google Cloud. חשוב לשמור את הסקריפט כ-setup_psc.sh.

דוגמה לפני העדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

עדכון סקריפט המעטפת כדי לתמוך בגישה גלובלית

משתמשים בעורך nano או vi כדי לזהות את סקריפט המעטפת ולעדכן אותו באמצעות התחביר שבהמשך:

gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access

דוגמה אחרי העדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

הרצת סקריפט מעטפת

עוברים אל הסקריפט setup_psc.sh ומריצים אותו. בסיום, נוצר קובץ בשם atlasEndpoints-psc-endpoint-us-west1.json. קובץ ה-JSON מכיל רשימה של כתובות IP ושמות של נקודות קצה (endpoints) של Private Service Connect שנדרשים לשלב הבא של הפריסה.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

sh setup_psc.sh

אחרי שהסקריפט מסתיים, משתמשים בכלי לעריכת Cloud Shell כדי להוריד את הקובץ atlasEndpoints-psc-endpoint-us-west1.json באופן מקומי.

2856802dd6497f51.png b0059dc8e1558891.png

העלאת קובץ JSON

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

3a74e8d9952d793a.png4938fd8256eb81b4.png

לוחצים על סמל היצירה.

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

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

סטטוס זמינות

972aff09d180d9de.png

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

5472dd938604b3.png

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

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

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

  • בוחרים באפשרות Network access (גישה לרשת) → Private Endpoints (נקודות קצה פרטיות) → Dedicated cluster (אשכול ייעודי) → Add private endpoint (הוספת נקודת קצה פרטית) 88f5c1d9ae7e46d9.png

ספק שירותי ענן

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

5503248bf4019a35.png

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

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

fc0b7a8e4274be3b.png

נקודות קצה

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

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • מעתיקים את סקריפט המעטפת ממסוף MongoBD ושומרים את התוכן במסוף Cloud Shell של Google Cloud. חשוב לשמור את הסקריפט כ-setup_psc.sh.

דוגמה לפני העדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

עדכון סקריפט המעטפת כדי לתמוך בגישה גלובלית

משתמשים בעורך nano או vi כדי לזהות את סקריפט המעטפת ולעדכן אותו באמצעות התחביר שבהמשך:

gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

דוגמה אחרי העדכון:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

הרצת סקריפט מעטפת

עוברים אל הסקריפט setup_psc.sh ומריצים אותו. בסיום, נוצר קובץ בשם atlasEndpoints-psc-endpoint-us-west2.json. קובץ ה-JSON מכיל רשימה של כתובות IP ושמות של נקודות קצה (endpoints) של Private Service Connect שנדרשים לשלב הבא של הפריסה.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

sh setup_psc.sh

אחרי שהסקריפט מסתיים, משתמשים ב-Cloud Shell Editor כדי להוריד את atlasEndpoints-psc-endpoint-us-west2.json באופן מקומי.

2856802dd6497f51.png 6e3d944944718f13.png

העלאת קובץ JSON

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

3a74e8d9952d793a.png4938fd8256eb81b4.png

לוחצים על סמל היצירה.

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

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

סטטוס זמינות:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

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

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

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

35e422af16cb5ce0.png

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

51be47403c00bab4.png

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

לפני ההתקנה, צריך ליצור מחרוזת פקודה על סמך הערכים שהועתקו קודם בשלבים 1 ו-3. לאחר מכן, תתחברו ל-vm1 באמצעות SSH דרך Cloud Shell, תתקינו את אפליקציית mongosh ותאמתו אותה במסד הנתונים הראשי (us-west1). תמונת Ubuntu 20.4 הותקנה כשנוצרה מכונה וירטואלית בשם vm1 ב-consumer-vpc.

בחירת שיטת חיבור: שלב 1, העתקת כתובת ה-URL להורדה

5da980ff86265dd8.png

מחרוזת פקודה לדוגמה, צריך להחליף אותה בערכים המותאמים אישית שלכם:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

בוחרים שיטת חיבור, שלב 3.

698286bdf3dee3c7.png

מחרוזת פקודה לדוגמה, צריך להחליף אותה בערכים המותאמים אישית שלכם:

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

מתחברים אל vm1

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

מתחברים ל-vm1 באמצעות IAP ב-Cloud Shell ומנסים שוב אם יש פסק זמן.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

ביצוע ההתקנה ממערכת ההפעלה

מבצעים את ההתקנה מתוך הכניסה למערכת ההפעלה של Cloud Shell. פרטים נוספים זמינים. מעדכנים את התחביר שבהמשך עם המחרוזת המותאמת אישית

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

דוגמה:

d5d0324a273b4d5e.png

הפעלת פקודות במסד הנתונים

בתוך הכניסה ל-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 (סקירה כללית)

64ca0395807bb3ac.png

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

אפשר לבדוק את יתירות הכשל גם של הנתונים הראשיים וגם של הנתונים האזוריים דרך ממשק המשתמש של Atlas.

  • מתחברים לממשק המשתמש של Atlas.
  • לוחצים על […‎] לצד שם האשכול, psc-mongodb-uswest1-uswest2 → Test Outage.

3a50da4381817975.png

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

b8dfff376477bcbb.png

  • בוחרים את האזור הראשי, us-west1→ Simulate Regional Outage (הדמיית הפסקת חשמל אזורית).

76494a750a040bc5.png

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

סגירת החלון

3a9f0359bd4e288f.pngbac1b2db0d754bbf.png

מוודאים שאזור us-west1 מושבת ואזור us-west2 השתלט עליו כעת כאזור הראשי

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

86fd7d5230715645.png

אימות הקישוריות לאשכול לפי השרת הראשי החדש, us-west2

מתחברים למכונה וירטואלית vm1 שנמצאת באזור us-west1 וניגשים ל-mongodb באזור us-west2 כדי לאמת את הגישה הגלובלית של Private Service Connect.

אם הסשן שלכם ב-Cloud Shell הסתיים, מבצעים את הפעולות הבאות:

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

מתחברים ל-vm1 באמצעות IAP ב-Cloud Shell ומנסים שוב אם יש פסק זמן.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

התחברות לפריסת MongoDB

בתוך הכניסה ל-Cloud Shell OS, מבצעים את הפעולות הבאות.

mongosh

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

דוגמה:

d262800a557b41a3.png

הפעלת פקודות במסד הנתונים

בתוך הכניסה ל-Cloud Shell OS, מבצעים את הפעולות הבאות.

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

exit

20c2571d84c0661d.png

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

12. הסרת המשאבים

מחיקת נקודות הקצה של הצרכנים במסוף Cloud

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

כדי למנוע מחיקה פוטנציאלית של נקודות קצה של צרכנים שאינן מעבדה, משתמשים במסנן psc-endpoint. בוחרים את כל נקודות הקצה ← לוחצים על DELETE (מחיקה).

192548e374b444a1.png

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

עוברים אל VPC network (רשת VPC) ‏→ consumer-vpc (רשת VPC של צרכן) ‏→ STATIC INTERNAL IP ADDRESSES (כתובות IP פנימיות סטטיות)

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

4cebf164c4fecd83.png

מ-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 → סיום הסימולציה

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

מחיקת נקודת הקצה הפרטית שמשויכת לאזורים us-west1 ו-us-west2

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

56415ea954b2fec9.png

13. מזל טוב

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

‫Cosmopup חושב ש-codelabs הם מדהימים!!

8c2a10eb841f7b01.jpeg

מה השלב הבא?

כדאי לעיין ב-Codelabs הבאים…

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

מסמכי עזר