במאמר הזה מוסבר איך מגדירים את רכיב מסד הנתונים של Cassandra להתקנת Apigee Hybrid בסביבת ייצור.
הבטחת זמינות גבוהה
כדי לשמור על זמינות בסביבת ייצור, אשכולות Cassandra צריכים להיות בשלושה אזורי זמינות. אם אזור אחד מושבת, האזורים הנותרים ימשיכו להגיב לבקשות בזמן שהאזור המושבת חוזר לפעולה. אם שני אזורים או יותר מושבתים, Cassandra לא תוכל להגיב לבקשות עד שלפחות שני אזורים יחזרו להיות אונליין. מומלץ ב-Apigee להחזיר את האזורים למצב אונליין תוך שלוש שעות כדי לצמצם את הסיכון לאובדן של עדכוני נתונים.
החלת הגדרות אחסון של Cassandra
כדי להחיל שינויים בהגדרות האחסון של Cassandra בקובץ ההחלפות, מריצים את הפקודות הבאות:
$APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES_FILE
$APIGEECTL_HOME/apigeectl apply -f overrides/OVERRIDES_FILE
קביעת הגדרות אחסון ב-Cassandra
לצורך התקנה של Apigee hybrid בסביבת ייצור, Google ממליצה להוסיף את הגדרות האחסון וה-heap הבאות לקובץ ההחלפות ולהחיל אותן על האשכול:
cassandra:
...
replicaCount: 3
storage:
storageclass: your-preferred-ssd-storage #If not using default storage for your cluster
capacity: 500Gi
resources:
requests:
cpu: 7
memory: 15Gi
maxHeapSize: 8192M
heapNewSize: 1200MreplicaCount
הערך של replicaCount חייב להיות כפולה של 3. כדי להחליט מהו ערך היעד replicaCount הרצוי, כדאי לשקול את הדברים הבאים:
- הערכת נפח התנועה הנדרש לשרתי ה-proxy.
- מבצעים בדיקת עומס ומפיקים תחזיות סבירות לגבי ניצול המעבד.
- אפשר לציין ערכים שונים של
replicaCountבאזורים שונים. - תוכלו להרחיב את
replicaCountבעתיד בקובץ ההחלפות.
כדי לבדוק את ההגדרה הנוכחית של replicaCount, מריצים את הפקודה הבאה באשכול:
kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.replicas}'
storageclass
לצורך ייצור, אחסון Cassandra צריך להיות StorageClass מסוג SSD. מגדירים את הערך של storageclass אם לא משתמשים ב-StorageClass של Kubernetes שמוגדר כברירת מחדל עבור האשכול. אפשר לבדוק את ברירת המחדל של StorageClass באמצעות הפקודה הבאה.
kubectl get storageclass
הפלט אמור להיראות כך:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 6d23h standard kubernetes.io/gce-pd Delete Immediate true 6d23h standard-rwo (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 6d23h
אם רוצים לשנות את סוג האחסון שמוגדר כברירת מחדל ב-Kubernetes, פועלים לפי ההוראות במאמר הגדרת StorageClass.
כדי לבדוק את ההגדרה הנוכחית של storageclass, מריצים את הפקודה הבאה באשכול:
kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class}'
capacity
לצורך התקנות של מוצרים, Google ממליצה על קיבולת אחסון של לפחות 500Gi (גיביבייט). אתם יכולים לשנות את קיבולת האחסון בהתאם לצורכי האחסון של האשכול. כדי לשנות את נפח האחסון, פועלים לפי ההוראות במאמר הרחבת נפחי אחסון קבועים של Cassandra.
כדי לבדוק את הגדרת הקיבולת הנוכחית, מריצים את הפקודה הבאה באשכול:
kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
cpu וגם memory
לצורך התקנות בסביבת ייצור, Google ממליצה על לפחות 7 מעבדים (CPU) ועל נפח אחסון מינימלי של 15Gi (גיביבייט) לכל pod. כשמציינים את cassandra.resources.requests.cpu ואת cassandra.resources.requests.memory, צריך לקחת בחשבון את נפח התנועה ואת הדרישות של ה-CPU והזיכרון של השרתים הפרוקסי.
כדי לבדוק את הגדרת ה-CPU הנוכחית, מריצים את הפקודה הבאה באשכול:
kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.cpu}'
כדי לבדוק את הגדרת הזיכרון הנוכחית, מריצים את הפקודה הבאה באשכול:
kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.memory}'
maxHeapSize וגם heapNewSize
המאפיינים האלה קובעים את גודל הזיכרון המקסימלי שמוקצה לתהליכי קסנדרה ואת כמות הזיכרון שמוגדלת, בהתאמה, במגה-בייט (גדלי הזיכרון מצוינים במגה-בייט, ולא במבי-בייט). בסביבות ייצור, Google ממליצה על הערכים הבאים:
maxHeapSize: 8192MheapNewSize: 1200M
כדי לקבל ערכים אופטימליים של גודל הערימה, כדאי לעיין במסמכי התיעוד של ספק פלטפורמת Kubernetes.
כדי לבדוק את ההגדרה הנוכחית של maxHeapSize, מריצים את הפקודה הבאה באשכול:
kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="MAX_HEAP_SIZE")]}'
כדי לבדוק את ההגדרה הנוכחית של heapNewSize, מריצים את הפקודה הבאה באשכול:
kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="HEAP_NEWSIZE")]}'
מידע נוסף על הגדרות הנכס האלה זמין במאמר חומר עזר בנושא הגדרות נכס.
שימוש באחסון SSD לפריסות בייצור
במסד הנתונים של Cassandra, סביבת הריצה ההיברידית תומכת רק בשימוש בנפחי אחסון מתמשכים שנוצרים באופן דינמי לאחסון נתונים. אין תמיכה בכונני SSD מקומיים.
אם כרגע לא מוגדר SSD ל-Cassandra, צריך להגדיר StorageClass שמגובה על ידי כונן SSD ולהגדיר אותו כברירת המחדל. פרטים נוספים מופיעים במאמר הגדרת StorageClass.
אם רוצים לשנות את סוג האחסון שמוגדר כברירת מחדל ב-Kubernetes, פועלים לפי ההוראות במאמר הגדרת StorageClass.