בנושא הזה מתואר פריסה מרובת אזורים של Apigee Hybrid ב-GKE, ב-Anthos GKE שנפרס בפריסה מקומית, ב-Microsoft® Azure Kubernetes Service (AKS), ב-Amazon Elastic Kubernetes Service (EKS) וב-RedHat OpenShift. בוחרים את הפלטפורמה בדרישות המוקדמות ובנהלים.
טופולוגיות לפריסה במספר אזורים כוללות את האפשרויות הבאות:
- Active-Active: אם יש לכם אפליקציות שפרוסות בכמה מיקומים גיאוגרפיים ואתם צריכים תגובת API עם זמן אחזור נמוך לפריסות שלכם. יש לכם אפשרות לפרוס פריסה היברידית בכמה מיקומים גיאוגרפיים שהכי קרובים ללקוחות שלכם. לדוגמה: החוף המערבי של ארה"ב, החוף המזרחי של ארה"ב, אירופה, APAC.
- Active-Passive: כשמוגדר אזור ראשי ואזור מעבר לגיבוי או אזור להתאוששות מאסון.
האזורים בפריסה היברידית במספר אזורים מתקשרים באמצעות Cassandra, כפי שמוצג בתמונה הבאה:

דרישות מוקדמות
לפני שמגדירים את ההיברידיות למספר אזורים, צריך לוודא שמתקיימות הדרישות המוקדמות הבאות:
GKE
- כשמתקינים פריסות של Apigee בכמה אזורים בין רשתות שונות (למשל, ספקי ענן שונים, רשתות VPC שונות, ענן ורשת מקומית וכו'), צריך לספק קישוריות פנימית בין הרשתות הנפרדות האלה, ש-Cassandra יכולה להשתמש בה כדי לתקשר בין הצמתים. אפשר לעשות את זה באמצעות רשתות VPN או פתרונות קישוריות ספציפיים לענן.
- אם אתם משתמשים ב-Workload Identity באשכול אחד כדי לאמת חשבונות שירות, מומלץ מאוד להשתמש ב-Workload Identity בכל אשכול שאתם מרחיבים אליו. אפשר לעיין במאמרים הפעלת Workload Identity ב-GKE או הפעלת איחוד שירותי אימות הזהות של עומסי עבודה ב-AKS וב-EKS.
- הגדרת אשכולות Kubernetes בכמה אזורים עם בלוקים שונים של CIDR.
- מוודאים ש-cert-manager מותקן בכל אשכול.
- הגדרת תקשורת בין אזורים.
- מוודאים שכל קבוצות ה-Pod של Cassandra יכולות לפענח את שמות המארחים שלהן. אם הערך של hostNetwork מוגדר כ-false, שם המארח הוא שם קבוצת ה-Pod של Cassandra. אם הערך של hostNetwork מוגדר כ-true, שם המארח הוא שם הצומת של Kubernetes שבו פועלת קבוצת ה-Pod של Cassandra.
- הדרישות ל-Cassandra Multi Region:
- מוודאים שלמרחב השמות של רשת ה-Pod יש קישוריות בין האזורים, כולל חומות אש, VPN, VPC Peering ו-VNet Peering. זה המצב ברוב ההתקנות של GKE.
- אם למרחב השמות של רשת ה-pods אין קישוריות בין האשכולות (האשכולות פועלים במצב 'רשת איים'), צריך להפעיל את התכונה
hostNetworkשל Kubernetes על ידי הגדרתcassandra.hostNetwork: trueבקובץ ההחלפות לכל האזורים בהתקנה של Apigee Hybrid מרובת אזורים.מידע נוסף על הצורך ב-
hostNetworkמופיע בקטע Island mode clusters and hostNetwork בהמשך. - מומלץ להפעיל את
hostNetworkבאשכולות קיימים לפני שמרחיבים את ההגדרה של כמה אזורים לאזורים חדשים. - כש
hostNetworkמופעל, צריך לוודא שצמתי העובדים יכולים לבצע חיפוש DNS קדימה של שמות המארחים שלהם. מערכת Apigee Cassandra משתמשת בשאילתת DNS קדימה כדי לקבל את כתובת ה-IP של המארח בזמן ההפעלה. - פותחים את יציאת TCP מספר 7001 בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עבודה באזורים ובמרכזי נתונים שונים. מידע על מספרי היציאות של Cassandra מופיע במאמר בנושא הגדרת יציאות.
מידע מפורט זמין במאמרי העזרה בנושא Kubernetes.
GKE On-Prem
- כשמתקינים פריסות של Apigee בכמה אזורים בין רשתות שונות (למשל, ספקי ענן שונים, רשתות VPC שונות, ענן ורשת מקומית וכו'), צריך לספק קישוריות פנימית בין הרשתות הנפרדות האלה, ש-Cassandra יכולה להשתמש בה כדי לתקשר בין הצמתים. אפשר לעשות את זה באמצעות רשתות VPN או פתרונות קישוריות ספציפיים לענן.
- הגדרת אשכולות Kubernetes בכמה אזורים עם בלוקים שונים של CIDR.
- מוודאים ש-cert-manager מותקן בכל אשכול.
- הגדרת תקשורת בין אזורים.
- מוודאים שכל קבוצות ה-Pod של Cassandra יכולות לפענח את שמות המארחים שלהן. אם הערך של hostNetwork מוגדר כ-false, שם המארח הוא שם קבוצת ה-Pod של Cassandra. אם הערך של hostNetwork מוגדר כ-true, שם המארח הוא שם הצומת של Kubernetes שבו פועלת קבוצת ה-Pod של Cassandra.
- הדרישות ל-Cassandra Multi Region:
- אם למרחב השמות של רשת ה-Pod אין קישוריות בין האשכולות (האשכולות פועלים במצב 'רשת איים', שהוא ברירת המחדל בהתקנות של GKE On-Prem), צריך להפעיל את התכונה
hostNetworkשל Kubernetes על ידי הגדרתcassandra.hostNetwork: trueבקובץ ההחלפות לכל האזורים בהתקנה של Apigee Hybrid מרובת אזורים.מידע נוסף על הצורך ב-
hostNetworkמופיע בקטע Island mode clusters and hostNetwork בהמשך. - מומלץ להפעיל את
hostNetworkבאשכולות קיימים לפני שמרחיבים את ההגדרה של כמה אזורים לאזורים חדשים. - כש
hostNetworkמופעל, צריך לוודא שצמתי העובדים יכולים לבצע חיפוש DNS קדימה של שמות המארחים שלהם. מערכת Apigee Cassandra משתמשת בחיפוש DNS כדי לקבל את כתובת ה-IP של המארח בזמן ההפעלה. - פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
- אם למרחב השמות של רשת ה-Pod אין קישוריות בין האשכולות (האשכולות פועלים במצב 'רשת איים', שהוא ברירת המחדל בהתקנות של GKE On-Prem), צריך להפעיל את התכונה
מידע מפורט זמין במאמרי העזרה בנושא Kubernetes.
AKS
- כשמתקינים פריסות של Apigee בכמה אזורים בין רשתות שונות (למשל, ספקי ענן שונים, רשתות VPC שונות, ענן ורשת מקומית וכו'), צריך לספק קישוריות פנימית בין הרשתות הנפרדות האלה, ש-Cassandra יכולה להשתמש בה כדי לתקשר בין הצמתים. אפשר לעשות את זה באמצעות רשתות VPN או פתרונות קישוריות ספציפיים לענן.
- לפני שממשיכים לשלבים להגדרת האשכול, צריך לעיין במדריך להתקנה היברידית כדי לוודא שמתקיימות הדרישות המוקדמות, כמו הגדרת Google Cloud והארגון.
- מוודאים ש-cert-manager מותקן בכל אשכול.
- מוודאים שכל קבוצות ה-Pod של Cassandra יכולות לפענח את שמות המארחים שלהן. אם הערך של hostNetwork הוא false, שם המארח הוא שם קבוצת ה-Pod של Cassandra. אם הערך של hostNetwork הוא true, שם המארח הוא שם הצומת של Kubernetes שבו פועלת קבוצת ה-Pod של Cassandra.
- הדרישות ל-Cassandra Multi Region:
- אם למרחב השמות של רשת ה-Pod אין קישוריות בין האשכולות (האשכולות פועלים במצב רשת איים, שהוא ברירת המחדל בהתקנות של AKS), צריך להפעיל את התכונה
hostNetworkשל Kubernetes על ידי הגדרתcassandra.hostNetwork: trueבקובץ ההחלפות לכל האזורים בהתקנה של Apigee Hybrid מרובת אזורים.מידע נוסף על הצורך ב-
hostNetworkמופיע בקטע Island mode clusters and hostNetwork בהמשך. - מומלץ להפעיל את
hostNetworkבאשכולות קיימים לפני שמרחיבים את ההגדרה של כמה אזורים לאזורים חדשים. - כש
hostNetworkמופעל, צריך לוודא שצמתי העובדים יכולים לבצע חיפוש DNS קדימה של שמות המארחים שלהם. מערכת Apigee Cassandra משתמשת בשאילתת DNS קדימה כדי לקבל את כתובת ה-IP של המארח בזמן ההפעלה. - פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
- אם למרחב השמות של רשת ה-Pod אין קישוריות בין האשכולות (האשכולות פועלים במצב רשת איים, שהוא ברירת המחדל בהתקנות של AKS), צריך להפעיל את התכונה
מידע מפורט זמין במאמרי העזרה בנושא Kubernetes.
EKS
- כשמתקינים פריסות של Apigee בכמה אזורים בין רשתות שונות (למשל, ספקי ענן שונים, רשתות VPC שונות, ענן ורשת מקומית וכו'), צריך לספק קישוריות פנימית בין הרשתות הנפרדות האלה, ש-Cassandra יכולה להשתמש בה כדי לתקשר בין הצמתים. אפשר לעשות את זה באמצעות רשתות VPN או פתרונות קישוריות ספציפיים לענן.
- לפני שממשיכים לשלבים להגדרת האשכול, צריך לעיין במדריך להתקנה היברידית כדי לוודא שמתקיימות הדרישות המוקדמות, כמו הגדרת Google Cloud והארגון.
- מוודאים ש-cert-manager מותקן בכל אשכול.
- מוודאים שכל קבוצות ה-Pod של Cassandra יכולות לפענח את שמות המארחים שלהן. אם הערך של hostNetwork הוא false, שם המארח הוא שם קבוצת ה-Pod של Cassandra. אם הערך של hostNetwork הוא true, שם המארח הוא שם הצומת של Kubernetes שבו פועלת קבוצת ה-Pod של Cassandra.
- הדרישות ל-Cassandra Multi Region:
- אם למרחב השמות של רשת ה-pods אין קישוריות בין האשכולות (האשכולות פועלים במצב של רשת איים), צריך להפעיל את התכונה
hostNetworkשל Kubernetes על ידי הגדרתcassandra.hostNetwork: trueבקובץ ההחלפות לכל האזורים בהתקנה של Apigee Hybrid מרובת אזורים. מערכת Amazon EKS משתמשת כברירת מחדל ב מודל רשת משולב לחלוטין.מידע נוסף על הצורך ב-
hostNetworkמופיע בקטע Island mode clusters and hostNetwork בהמשך. - מומלץ להפעיל את
hostNetworkבאשכולות קיימים לפני שמרחיבים את ההגדרה של כמה אזורים לאזורים חדשים. - כש
hostNetworkמופעל, צריך לוודא שצמתי העובדים יכולים לבצע חיפוש DNS קדימה של שמות המארחים שלהם. מערכת Apigee Cassandra משתמשת בשאילתת DNS קדימה כדי לקבל את כתובת ה-IP של המארח בזמן ההפעלה. - פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
- אם למרחב השמות של רשת ה-pods אין קישוריות בין האשכולות (האשכולות פועלים במצב של רשת איים), צריך להפעיל את התכונה
מידע מפורט זמין במאמרי העזרה בנושא Kubernetes.
OpenShift
- כשמתקינים פריסות של Apigee בכמה אזורים בין רשתות שונות (למשל, ספקי ענן שונים, רשתות VPC שונות, ענן ורשת מקומית וכו'), צריך לספק קישוריות פנימית בין הרשתות הנפרדות האלה, ש-Cassandra יכולה להשתמש בה כדי לתקשר בין הצמתים. אפשר לעשות את זה באמצעות רשתות VPN או פתרונות קישוריות ספציפיים לענן.
- לפני שממשיכים לשלבים להגדרת האשכול, צריך לעיין במדריך להתקנה היברידית כדי לוודא שמתקיימות הדרישות המוקדמות, כמו הגדרת Google Cloud והארגון.
- מוודאים ש-cert-manager מותקן בכל אשכול.
- מוודאים שכל קבוצות ה-Pod של Cassandra יכולות לפענח את שמות המארחים שלהן. אם הערך של hostNetwork הוא false, שם המארח הוא שם קבוצת ה-Pod של Cassandra. אם הערך של hostNetwork הוא true, שם המארח הוא שם הצומת של Kubernetes שבו פועלת קבוצת ה-Pod של Cassandra.
- הדרישות ל-Cassandra Multi Region:
- אם למרחב השמות של רשת ה-pod אין קישוריות בין האשכולות (האשכולות פועלים במצב 'רשת איים', שהוא ברירת המחדל בהתקנות של OpenShift), צריך להפעיל את התכונה
hostNetworkשל Kubernetes על ידי הגדרתcassandra.hostNetwork: trueבקובץ ההחלפות לכל האזורים בהתקנה של Apigee Hybrid מרובת אזורים.מידע נוסף על הצורך ב-
hostNetworkמופיע בקטע Island mode clusters and hostNetwork בהמשך. - מומלץ להפעיל את
hostNetworkבאשכולות קיימים לפני שמרחיבים את ההגדרה של כמה אזורים לאזורים חדשים. - כש
hostNetworkמופעל, צריך לוודא שצמתי העובדים יכולים לבצע חיפוש DNS קדימה של שמות המארחים שלהם. מערכת Apigee Cassandra משתמשת בשאילתת DNS קדימה כדי לקבל את כתובת ה-IP של המארח בזמן ההפעלה. - פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
- אם למרחב השמות של רשת ה-pod אין קישוריות בין האשכולות (האשכולות פועלים במצב 'רשת איים', שהוא ברירת המחדל בהתקנות של OpenShift), צריך להפעיל את התכונה
מידע מפורט זמין במאמרי העזרה בנושא Kubernetes.
אשכולות במצב Island ו-hostNetwork
יש שני מודלים עיקריים של רשתות לאשכולות Kubernetes: משולב לחלוטין (או שטוח) ומצב איים. מומלץ להשתמש במודל רשת שטוח ככל האפשר, כי הוא מפשט את הקישוריות של Cassandra בין אזורים. כשמגדירים אשכול Kubernetes במצב איים, רשת ה-Pod מבודדת. אי אפשר לתקשר ישירות בין Pods שפועלים באשכולות שונים באמצעות כתובת ה-IP של ה-Pod. מידע נוסף על ההבדלים בין שני מודלים הרשת האלה ודוגמאות לכל אחד מהם מופיע במאמר יישומים אופייניים של מודלים של רשתות.
כש-Apigee Hybrid פועל בשני אשכולות Kubernetes או יותר באמצעות מודל רשת במצב איים, צריך להפעיל את ההגדרה hostNetwork עבור Cassandra באמצעות המאפיין cassandra.hostNetwork. כברירת מחדל, קבוצות ה-Pod ב-Kubernetes מבודדות למרחבי שמות נפרדים ברשת, מה שמונע מהן להשתמש בכתובת ה-IP של צומת העובד ב-Kubernetes. אם הערך של hostNetwork הוא true, קבוצת ה-Pod לא מבודדת במרחב השמות של הרשת שלה, אלא משתמשת בכתובת ה-IP ובשם המארח של צומת העובד ב-Kubernetes שבו מתוזמנת קבוצת ה-Pod. האפשרות הזו מאפשרת ל-Cassandra להשתמש באופן מקורי בכתובת ה-IP של צומת העובד ב-Kubernetes ככתובת ה-IP שלה, וכך ליצור רשת מלאה בין כל ה-pods של Cassandra בכמה אשכולות שפועלים במצב אי.
תרגום שם המארח של Cassandra
למרות שפוד Cassandra לא פותר פודים אחרים של Cassandra לפי שם המארח, בהפעלה Cassandra בודק ששם המארח שלו ניתן לפענוח על ידי DNS. מכיוון ששם המארח של ה-pod זהה לשם המארח של צומת העובד ב-Kubernetes כש-hostNetwork מוגדר כ-true, צריך להיות אפשר לזהות את שם המארח של צומת העובד ככתובת IP באמצעות שירות ה-DNS של האשכול. אם שם המארח של צומת העובד של Kubernetes לא ניתן לפענוח, הפוד של Cassandra לא יופעל באופן מלא. לכן,
חשוב ששמות המארחים של צומתי העובדים ב-Kubernetes יהיו ניתנים לפתרון מתוך הפודים באשכול
כשמגדירים את hostNetwork ל-true.
הגדרת Apigee Hybrid למספר אזורים
בקטע הזה מוסבר איך להגדיר את Apigee hybrid למספר אזורים.
GKE
הגדרת מארח הזרעים במספר אזורים
בקטע הזה מתואר איך להרחיב את אשכול Cassandra הקיים לאזור חדש. ההגדרה הזו מאפשרת לאזור החדש להפעיל את האשכול ולהצטרף למרכז הנתונים הקיים. בלי ההגדרה הזו, אשכולות Kubernetes מרובי-אזורים לא ידעו על קיומם של אשכולות אחרים.
-
כדי לקבל את הפודים במרחב השמות של apigee עבור האזור הראשון שנוצר:
kubectl get pods -o wide -n APIGEE_NAMESPACE
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם השם של אשכול Cassandra. כברירת מחדל, הערך הוא
apigeecluster. אם אתם משתמשים בשם אשכול אחר, אתם צריכים לציין ערך ל-cassandra.clusterName. אתם יכולים לבחור ערך משלכם, אבל הוא צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
מתקינים את cert-manager באזור השני.
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
פועלים לפי השלבים ל התקנת CRD של Apigee Hybrid באזור החדש.
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml - מריצים את הפקודה הבאה כדי לוודא שהגדרת אשכול Cassandra בוצעה. בפלט צריכים להופיע גם מרכזי הנתונים הקיימים וגם מרכזי הנתונים החדשים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
דוגמה להגדרה מוצלחת:
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים.
- מקבלים את
apigeeorgמהאשכול באמצעות הפקודה הבאה:kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
לדוגמה:
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- יוצרים קובץ של משאב מותאם אישית לשכפול נתונים של Cassandra (
YAML). הקובץ יכול לקבל כל שם. בדוגמאות הבאות, שם הקובץ יהיהdatareplication.yaml.הקובץ צריך להכיל את הפרטים הבאים:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שנותנים למטא-נתונים. אתם יכולים להשתמש בכל שם.
- NAMESPACE הוא אותו מרחב שמות שמופיע ב-
overrides.yaml. בדרך כלל זה הנתיבapigee. - APIGEEORG_VALUE הוא ערך הפלט מהפקודה
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"בשלב הקודם. לדוגמה,rg-hybrid-b7d3b9c - SOURCE_REGION הוא אזור המקור, ערך מרכז הנתונים בקטע cassandra מתוך source region overrides.yaml
לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- מחילים את
CassandraDataReplicationבאמצעות הפקודה הבאה:kubectl apply -f datareplication.yaml
- מקבלים את
- כדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה:
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 } - אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
הסרת
- בודקים את תהליכי הבנייה מחדש מתוך היומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה
nodetool status.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
בדוגמה הבאה מוצגות רשומות לדוגמה ביומן:
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
בדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לבדוק אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
GKE On-Prem
הגדרת מארח הזרעים במספר אזורים
בקטע הזה מתואר איך להרחיב את אשכול Cassandra הקיים לאזור חדש. ההגדרה הזו מאפשרת לאזור החדש להפעיל את האשכול ולהצטרף למרכז הנתונים הקיים. בלי ההגדרה הזו, אשכולות Kubernetes מרובי-אזורים לא ידעו על קיומם של אשכולות אחרים.
-
כדי לקבל את הפודים במרחב השמות של apigee עבור האזור הראשון שנוצר:
kubectl get pods -o wide -n APIGEE_NAMESPACE
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם השם של אשכול Cassandra. כברירת מחדל, הערך הוא
apigeecluster. אם אתם משתמשים בשם אשכול אחר, אתם צריכים לציין ערך ל-cassandra.clusterName. אתם יכולים לבחור ערך משלכם, אבל הוא צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
מתקינים את cert-manager באזור השני.
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
פועלים לפי השלבים ל התקנת CRD של Apigee Hybrid באזור החדש.
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml - מריצים את הפקודה הבאה כדי לוודא שהגדרת אשכול Cassandra בוצעה. בפלט צריכים להופיע גם מרכזי הנתונים הקיימים וגם מרכזי הנתונים החדשים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
דוגמה להגדרה מוצלחת:
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים.
- מקבלים את
apigeeorgמהאשכול באמצעות הפקודה הבאה:kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
לדוגמה:
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- יוצרים קובץ של משאב מותאם אישית לשכפול נתונים של Cassandra (
YAML). הקובץ יכול לקבל כל שם. בדוגמאות הבאות, שם הקובץ יהיהdatareplication.yaml.הקובץ צריך להכיל את הפרטים הבאים:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שנותנים למטא-נתונים. אתם יכולים להשתמש בכל שם.
- NAMESPACE הוא אותו מרחב שמות שמופיע ב-
overrides.yaml. בדרך כלל זה הנתיבapigee. - APIGEEORG_VALUE הוא ערך הפלט מהפקודה
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"בשלב הקודם. לדוגמה,rg-hybrid-b7d3b9c - SOURCE_REGION הוא אזור המקור, ערך מרכז הנתונים בקטע cassandra מתוך source region overrides.yaml
לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- מחילים את
CassandraDataReplicationבאמצעות הפקודה הבאה:kubectl apply -f datareplication.yaml
- מקבלים את
- כדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה:
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 } - אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
הסרת
- בודקים את תהליכי הבנייה מחדש מתוך היומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה
nodetool status.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
בדוגמה הבאה מוצגות רשומות לדוגמה ביומן:
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
בדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לבדוק אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
AKS
יצירת רשת וירטואלית בכל אזור
כדי להגדיר תקשורת בין אזורים שונים, צריך לפעול לפי ההמלצות של Azure שמופיעות כאן: VNet-to-VNet: Connecting Virtual Networks in Azure across Different Regions.
יצירת אשכולות מרובי-אזורים
מגדירים אשכולות Kubernetes בכמה אזורים עם בלוקים שונים של CIDR. אפשר גם לעיין במאמר שלב 1: יצירת אשכול. משתמשים במיקומים ובשמות של הרשתות הווירטואליות שיצרתם קודם.
פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
הגדרת מארח הזרעים במספר אזורים
בקטע הזה מתואר איך להרחיב את אשכול Cassandra הקיים לאזור חדש. ההגדרה הזו מאפשרת לאזור החדש להפעיל את האשכול ולהצטרף למרכז הנתונים הקיים. בלי ההגדרה הזו, אשכולות Kubernetes מרובי-אזורים לא ידעו על קיומם של אשכולות אחרים.
-
כדי לקבל את הפודים במרחב השמות של apigee עבור האזור הראשון שנוצר:
kubectl get pods -o wide -n APIGEE_NAMESPACE
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם השם של אשכול Cassandra. כברירת מחדל, הערך הוא
apigeecluster. אם אתם משתמשים בשם אשכול אחר, אתם צריכים לציין ערך ל-cassandra.clusterName. אתם יכולים לבחור ערך משלכם, אבל הוא צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
מתקינים את cert-manager באזור השני.
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
פועלים לפי השלבים ל התקנת CRD של Apigee Hybrid באזור החדש.
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml - מריצים את הפקודה הבאה כדי לוודא שהגדרת אשכול Cassandra בוצעה. בפלט צריכים להופיע גם מרכזי הנתונים הקיימים וגם מרכזי הנתונים החדשים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
דוגמה להגדרה מוצלחת:
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים.
- מקבלים את
apigeeorgמהאשכול באמצעות הפקודה הבאה:kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
לדוגמה:
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- יוצרים קובץ של משאב מותאם אישית לשכפול נתונים של Cassandra (
YAML). הקובץ יכול לקבל כל שם. בדוגמאות הבאות, שם הקובץ יהיהdatareplication.yaml.הקובץ צריך להכיל את הפרטים הבאים:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שנותנים למטא-נתונים. אתם יכולים להשתמש בכל שם.
- NAMESPACE הוא אותו מרחב שמות שמופיע ב-
overrides.yaml. בדרך כלל זה הנתיבapigee. - APIGEEORG_VALUE הוא ערך הפלט מהפקודה
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"בשלב הקודם. לדוגמה,rg-hybrid-b7d3b9c - SOURCE_REGION הוא אזור המקור, ערך מרכז הנתונים בקטע cassandra מתוך source region overrides.yaml
לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- מחילים את
CassandraDataReplicationבאמצעות הפקודה הבאה:kubectl apply -f datareplication.yaml
- מקבלים את
- כדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה:
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 } - אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
הסרת
- בודקים את תהליכי הבנייה מחדש מתוך היומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה
nodetool status.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
בדוגמה הבאה מוצגות רשומות לדוגמה ביומן:
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
בדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לבדוק אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
EKS
יצירת רשת וירטואלית בכל אזור
פועלים לפי ההמלצות של AWS ליצירת תקשורת בין אזורים, כפי שמתואר במאמר מהו קישור בין רשתות שכנות (peering) ב-VPC?. המונח של AWS לשימוש באזורים שונים הוא inter-Region VPC peering.
יצירת אשכולות מרובי-אזורים
מגדירים אשכולות Kubernetes בכמה אזורים עם בלוקים שונים של CIDR. אפשר גם לעיין במאמר שלב 1: יצירת אשכול. משתמשים במיקומים ובשמות של הרשתות הווירטואליות שיצרתם קודם.
פותחים את הפורטים של Cassandra בין אשכולות Kubernetes בכל האזורים כדי לאפשר תקשורת בין צמתי עובדים באזורים ובמרכזי נתונים שונים. מספרי היציאות של Cassandra מפורטים במאמר בנושא הגדרת יציאות.
הגדרת מארח הזרעים במספר אזורים
בקטע הזה מתואר איך להרחיב את אשכול Cassandra הקיים לאזור חדש. ההגדרה הזו מאפשרת לאזור החדש להפעיל את האשכול ולהצטרף למרכז הנתונים הקיים. בלי ההגדרה הזו, אשכולות Kubernetes מרובי-אזורים לא ידעו על קיומם של אשכולות אחרים.
-
כדי לקבל את הפודים במרחב השמות של apigee עבור האזור הראשון שנוצר:
kubectl get pods -o wide -n APIGEE_NAMESPACE
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם השם של אשכול Cassandra. כברירת מחדל, הערך הוא
apigeecluster. אם אתם משתמשים בשם אשכול אחר, אתם צריכים לציין ערך ל-cassandra.clusterName. אתם יכולים לבחור ערך משלכם, אבל הוא צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
מתקינים את cert-manager באזור השני.
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
פועלים לפי השלבים ל התקנת CRD של Apigee Hybrid באזור החדש.
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml - מריצים את הפקודה הבאה כדי לוודא שהגדרת אשכול Cassandra בוצעה. בפלט צריכים להופיע גם מרכזי הנתונים הקיימים וגם מרכזי הנתונים החדשים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
דוגמה להגדרה מוצלחת:
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים.
- מקבלים את
apigeeorgמהאשכול באמצעות הפקודה הבאה:kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
לדוגמה:
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- יוצרים קובץ של משאב מותאם אישית לשכפול נתונים של Cassandra (
YAML). הקובץ יכול לקבל כל שם. בדוגמאות הבאות, שם הקובץ יהיהdatareplication.yaml.הקובץ צריך להכיל את הפרטים הבאים:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שנותנים למטא-נתונים. אתם יכולים להשתמש בכל שם.
- NAMESPACE הוא אותו מרחב שמות שמופיע ב-
overrides.yaml. בדרך כלל זה הנתיבapigee. - APIGEEORG_VALUE הוא ערך הפלט מהפקודה
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"בשלב הקודם. לדוגמה,rg-hybrid-b7d3b9c - SOURCE_REGION הוא אזור המקור, ערך מרכז הנתונים בקטע cassandra מתוך source region overrides.yaml
לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- מחילים את
CassandraDataReplicationבאמצעות הפקודה הבאה:kubectl apply -f datareplication.yaml
- מקבלים את
- כדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה:
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 } - אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
הסרת
- בודקים את תהליכי הבנייה מחדש מתוך היומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה
nodetool status.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
בדוגמה הבאה מוצגות רשומות לדוגמה ביומן:
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
בדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לבדוק אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
OpenShift
הגדרת מארח הזרעים במספר אזורים
בקטע הזה מתואר איך להרחיב את אשכול Cassandra הקיים לאזור חדש. ההגדרה הזו מאפשרת לאזור החדש להפעיל את האשכול ולהצטרף למרכז הנתונים הקיים. בלי ההגדרה הזו, אשכולות Kubernetes מרובי-אזורים לא ידעו על קיומם של אשכולות אחרים.
-
כדי לקבל את הפודים במרחב השמות של apigee עבור האזור הראשון שנוצר:
kubectl get pods -o wide -n APIGEE_NAMESPACE
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם השם של אשכול Cassandra. כברירת מחדל, הערך הוא
apigeecluster. אם אתם משתמשים בשם אשכול אחר, אתם צריכים לציין ערך ל-cassandra.clusterName. אתם יכולים לבחור ערך משלכם, אבל הוא צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
מתקינים את cert-manager באזור השני.
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
פועלים לפי השלבים ל התקנת CRD של Apigee Hybrid באזור החדש.
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml - מריצים את הפקודה הבאה כדי לוודא שהגדרת אשכול Cassandra בוצעה. בפלט צריכים להופיע גם מרכזי הנתונים הקיימים וגם מרכזי הנתונים החדשים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
דוגמה להגדרה מוצלחת:
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים.
- מקבלים את
apigeeorgמהאשכול באמצעות הפקודה הבאה:kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
לדוגמה:
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- יוצרים קובץ של משאב מותאם אישית לשכפול נתונים של Cassandra (
YAML). הקובץ יכול לקבל כל שם. בדוגמאות הבאות, שם הקובץ יהיהdatareplication.yaml.הקובץ צריך להכיל את הפרטים הבאים:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שנותנים למטא-נתונים. אתם יכולים להשתמש בכל שם.
- NAMESPACE הוא אותו מרחב שמות שמופיע ב-
overrides.yaml. בדרך כלל זה הנתיבapigee. - APIGEEORG_VALUE הוא ערך הפלט מהפקודה
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"בשלב הקודם. לדוגמה,rg-hybrid-b7d3b9c - SOURCE_REGION הוא אזור המקור, ערך מרכז הנתונים בקטע cassandra מתוך source region overrides.yaml
לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- מחילים את
CassandraDataReplicationבאמצעות הפקודה הבאה:kubectl apply -f datareplication.yaml
- מקבלים את
- כדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה:
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 } - אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
הסרת
- בודקים את תהליכי הבנייה מחדש מתוך היומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה
nodetool status.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
בדוגמה הבאה מוצגות רשומות לדוגמה ביומן:
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
בדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לבדוק אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
פתרון בעיות
מידע נוסף זמין במאמר בנושא כשל ברפליקציה של נתוני Cassandra.