Esta página resume como configurar um balanceador de carga no AlloyDB Omni usando o spec
do AlloyDB Omni. No Google Kubernetes Engine (GKE), um balanceador de carga criado por padrão é do tipo externo e vinculado ao endereço IP externo para permitir conexões da Internet. No entanto, se a anotação networking.gke.io/load-balancer-type: "internal"
for incluída no campo metadata.annotations[]
do manifesto do balanceador de carga, o GKE vai criar um balanceador de carga interno.
Plataformas diferentes fornecem anotações próprias para criar o tipo específico de balanceador de carga.
O AlloyDB Omni permite especificar anotações do balanceador de carga usando a seção spec
do manifesto do cluster de banco de dados. O controlador de banco de dados adiciona essas anotações ao balanceador de carga spec
ao criar um cluster de banco de dados.
Criar um balanceador de carga interno usando a especificação do banco de dados
Para criar um balanceador de carga interno, configure o campo dbLoadBalancerOptions
na seção spec
do manifesto DBCluster
.
Kubernetes
As anotações definem o tipo e as propriedades de um balanceador de carga. Um balanceador de carga interno requer a presença da seguinte anotação:
networking.gke.io/load-balancer-type: "internal"
Para criar um balanceador de carga interno que permita conexões de fora do cluster do GKE no mesmo projeto, aplique o seguinte manifesto:
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
Substitua:
DB_CLUSTER_NAME
: o nome do cluster do banco de dados. É o mesmo nome do cluster de banco de dados que você declarou ao criar.
Nesse manifesto:
- networking.gke.io/load-balancer-type: "internal": a anotação do balanceador de carga interno do GKE para seu cluster de banco de dados
- allowExternalIncomingTraffic: true: o campo
allowExternalIncomingTraffic
é definido comotrue
para permitir o tráfego de entrada de fora do cluster do Kubernetes.
Receber os detalhes de conectividade e do cluster do banco de dados
Kubernetes
Para verificar se o recurso de cluster de banco de dados está no status Ready
, use o seguinte comando:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w
O resultado será assim:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
Verifique se a anotação e o endereço IP do balanceador de carga interno estão no serviço do balanceador de carga da seguinte maneira:
$ kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
Substitua:
LOAD_BALANCER_SERVICE_NAME
: o nome do serviço de balanceador de carga que cria um endereço IP exclusivo acessível por redes externas.NAMESPACE
: o nome do namespace do Kubernetes para o serviço de balanceador de carga.
O resultado será assim:
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
A saída tem os seguintes atributos:
networking.gke.io/load-balancer-type: internal
: um balanceador de carga interno precisa existir no serviço de balanceador de cargaip
: o valor do endpoint principal na saída de verificação do cluster de banco de dados corresponde ao valor do controlador de entrada do balanceador de carga.