הגדרת מאזן עומסים ל-AlloyDB Omni ב-Kubernetes

בוחרים גרסה של מאמר העזרה:

בדף הזה מוסבר איך להגדיר מאזן עומסים ב-AlloyDB Omni באמצעות spec של AlloyDB Omni. ב-Google Kubernetes Engine‏ (GKE), מאזן העומסים שנוצר כברירת מחדל הוא מסוג חיצוני ומקושר לכתובת ה-IP החיצונית כדי לאפשר חיבורים מהאינטרנט. עם זאת, אם ההערה networking.gke.io/load-balancer-type: "internal" כלולה בשדה metadata.annotations[] של מניפסט מאזן העומסים, מערכת GKE יוצרת מאזן עומסים פנימי.

פלטפורמות שונות מספקות הערות משלהן ליצירת סוג ספציפי של איזון עומסים. ב-AlloyDB Omni אפשר לציין הערות של מאזן עומסים באמצעות הקטע spec במניפסט של אשכול מסד הנתונים. במהלך יצירת אשכול מסד נתונים, בקר מסד הנתונים מוסיף את ההערות האלה למאזן העומסים spec.

יצירת מאזן עומסים פנימי באמצעות מפרט מסד הנתונים

כדי ליצור מאזן עומסים פנימי, צריך להגדיר את השדה dbLoadBalancerOptions בקטע spec במניפסט DBCluster.

‏Kubernetes

ההערות מגדירות את הסוג והמאפיינים של מאזן העומסים. מאזן עומסים פנימי דורש את ההערה הבאה:

networking.gke.io/load-balancer-type: "internal"

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

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.5.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      memory: 5Gi
      cpu: 1
      disks:
      - name: DataDisk
        size: 10Gi
    dbLoadBalancerOptions:
      annotations:
        networking.gke.io/load-balancer-type: "internal"
  allowExternalIncomingTraffic: true
EOF

מחליפים את מה שכתוב בשדות הבאים:

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שהצהרתם עליו כשיצרתם אותו.

במניפסט הזה:

  • networking.gke.io/load-balancer-type: "internal": הערת מאזן העומסים הפנימי של GKE לאשכול מסד הנתונים
  • allowExternalIncomingTraffic: true: השדה allowExternalIncomingTraffic מוגדר כ-true כדי לאפשר תעבורת נתונים נכנסת מחוץ לאשכול Kubernetes

קבלת פרטים על אשכול מסדי הנתונים והקישוריות

‏Kubernetes

כדי לוודא שמשאב אשכול מסד הנתונים נמצא בסטטוס Ready, משתמשים בפקודה הבאה:

kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w

הפלט אמור להיראות כך:

NAME               PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
DB_CLUSTER_NAME    10.95.0.84        Ready          DBClusterReady

מוודאים שההערה וכתובת ה-IP של מאזן העומסים הפנימי קיימים בשירות מאזן העומסים, באופן הבא:

kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml

מחליפים את מה שכתוב בשדות הבאים:

  • LOAD_BALANCER_SERVICE_NAME: השם של שירות איזון העומסים שיוצר כתובת IP ייחודית שאפשר לגשת אליה מרשתות חיצוניות.
  • NAMESPACE: השם של מרחב השמות ב-Kubernetes בשביל שירות מאזן העומסים.

הפלט אמור להיראות כך:

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/neg: '{"ingress":true}'
    networking.gke.io/load-balancer-type: internal
  creationTimestamp: "2024-02-22T15:26:18Z"
  finalizers:
  − gke.networking.io/l4-ilb-v1
  − service.kubernetes.io/load-balancer-cleanup
  labels:
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
    alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
    alloydbomni.internal.dbadmin.gdc.goog/task-type: database
    egress.networking.gke.io/enabled: "true"
  name: LOAD_BALANCER_SERVICE_NAME
  namespace: NAMESPACE
 ownerReferences:
  − apiVersion: alloydbomni.dbadmin.goog/v1
    blockOwnerDeletion: true
    controller: true
    kind: DBCluster
    name: DB_CLUSTER_NAME
    uid: 2dd76c9f-7698-4210-be41-6d2259840a85
  resourceVersion: "33628320"
  uid: 1f45362b-6d6f-484d-ad35-11c14e91933e
spec:
  allocateLoadBalancerNodePorts: true
  clusterIP: 10.60.4.76
  clusterIPs:
  − 10.60.4.76
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  − IPv4
  ipFamilyPolicy: SingleStack
  loadBalancerSourceRanges:
  − 0.0.0.0/0
  ports:
  − name: db
    nodePort: 31453
    port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
    alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
    alloydbomni.internal.dbadmin.gdc.goog/task-type: database
    egress.networking.gke.io/enabled: "true"
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    − ip: 10.95.0.84

הפלט כולל את המאפיינים הבאים:

  • networking.gke.io/load-balancer-type: internal: מאזן עומסים פנימי חייב להיות קיים בשירות מאזן העומסים
  • ip: הערך של נקודת הקצה הראשית בפלט האימות של אשכול מסד הנתונים תואם לערך של בקר ה-Ingress של מאזן העומסים (LB)

המאמרים הבאים