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

1. מבוא

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

מה תצטרכו

  • פרויקט ב-Google Cloud
  • צריך לספק תת-רשת מסוג ‎ /26 לכל אזור
  • גישה ל-MongoDB Atlas בתור בעלי הפרויקט או בעלי הארגון כדי ליצור אשכול MongoDB ברמה M10 או ברמה גבוהה יותר. (כדי לקבל קרדיטים בחינם להפעלת ה-PoV, צריך להשתמש ב-GETATLAS)

4. לפני שמתחילים

עדכון הפרויקט כדי לתמוך ב-codelab

ב-Codelab הזה נעשה שימוש במשתנים (‎ $variables) כדי להקל על הטמעת ההגדרה של gcloud ב-Cloud Shell.

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

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

5. הגדרת צרכן

יצירת VPC של צרכן

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

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

יצירת רשתות משנה לצרכנים

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

gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1

ב-Cloud Shell, יוצרים את נקודת הקצה של הצרכן עבור us-west1:

gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1

ב-Cloud Shell, יוצרים את נקודת הקצה של הצרכן עבור us-west2:

gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2

הגדרות של Cloud Router ו-NAT

ב-codelab נעשה שימוש ב-Cloud NAT להתקנת חבילות תוכנה, כי למכונות הווירטואליות אין כתובת IP חיצונית.

ב-Cloud Shell, יוצרים את Cloud Router.

gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1

ב-Cloud Shell, יוצרים את שער ה-NAT.

gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1

הגדרת המופע vm1

בקטע הבא, יוצרים את מכונת Compute Engine, ‏ vm1.

ב-Cloud Shell, יוצרים את המכונה vm1.

gcloud compute instances create vm1 \
    --project=$projectname \
    --zone=us-west1-a \
    --machine-type=e2-micro \
    --network-interface=subnet=vm-subnet,no-address \
    --maintenance-policy=MIGRATE \
    --provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:

  • רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
  • מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-IP‏ ‎35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.

ב-Cloud Shell, יוצרים את הכלל בחומת האש של IAP.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. יצירת אשכול MongoDB Atlas מרובה אזורים

  • לפני שמתחילים בהגדרת PSC, צריך להגדיר אשכול Atlas. יש שתי דרכים להירשם ל-MongoDB Atlas:
  • דרך Google Cloud Marketplace אם יש לכם חשבון Google Cloud. הוראות להגדרת המינוי זמינות במאמרי העזרה.
  • עם דף ההרשמה ל-Atlas.
  • אחרי שנרשמים ל-Atlas, לוחצים על הלחצן Build a Database (יצירת מסד נתונים) כמו שמוצג למטה.

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. חשוב לבחור את התפקיד המובנה 'קריאה וכתיבה לכל מסד נתונים'.

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

נקודות קצה

  • כדי ליצור נקודת קצה של Private Service Connect, צריך לספק את הפרטים הבאים:
  • מזהה פרויקט בענן של Google: לפרטים, בוחרים באפשרות 'הצגת ההוראות'
  • שם ה-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 ושומרים את התוכן במסוף Google Cloud Cloud Shell. חשוב לשמור את הסקריפט כ-setup_psc.sh.

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

#!/bin/bash
gcloud config set project yourprojectname

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

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

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

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

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

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

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

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

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

#!/bin/bash
gcloud config set project yourprojectname

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

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

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

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

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

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

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

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

sh setup_psc.sh

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

2856802dd6497f51.png b0059dc8e1558891.png

העלאת קובץ JSON

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

3a74e8d9952d793a.png

4938fd8256eb81b4.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

נקודות קצה

  • כדי ליצור נקודת קצה של Private Service Connect, צריך לספק את הפרטים הבאים:
  • מזהה פרויקט בענן של Google: לפרטים, בוחרים באפשרות 'הצגת ההוראות'
  • שם ה-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 ושומרים את התוכן במסוף Google Cloud Cloud Shell. חשוב לשמור את הסקריפט כ-setup_psc.sh.

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

#!/bin/bash
gcloud config set project yourprojectname

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

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

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

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

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

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

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

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

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

#!/bin/bash
gcloud config set project yourprojectname

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

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

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

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

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

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

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

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

sh setup_psc.sh

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

2856802dd6497f51.png 6e3d944944718f13.png

העלאת קובץ JSON

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

בוחרים באפשרות 'יצירה'.

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

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

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

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

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

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

c1524d2c0c5765d1.png

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

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. יתירות כשל של אזור MongoDB פעיל, us-west1

לפני שנבצע את המעבר לגיבוי, נבדוק שאזור us-west1 הוא האזור הראשי ושבאזור us-west2 יש שני צמתים משניים.

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

64ca0395807bb3ac.png

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

אפשר לבדוק את המעבר לגיבוי (failover) גם של השרת הראשי וגם של השרת האזורי דרך ממשק המשתמש של Atlas.

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

3a50da4381817975.png

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

b8dfff376477bcbb.png

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

76494a750a040bc5.png

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

סגירת החלון

3a9f0359bd4e288f.png

bac1b2db0d754bbf.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, מוחקים את נקודות הקצה של הצרכן

עוברים אל Network services (שירותי רשת) → Private Service Connect (חיבור פרטי לשירות) → CONNECTED ENDPOINTS (נקודות קצה מחוברות)

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

192548e374b444a1.png

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

עוברים אל רשת VPC ← consumer-vpc← STATIC INTERNAL IP ADDRESSES

משתמשים במסנן 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.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

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

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

56415ea954b2fec9.png

13. מזל טוב

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

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

8c2a10eb841f7b01.jpeg

מה השלב הבא?

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

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

מאמרי עזרה