이 페이지에서는 AlloyDB Omni spec
를 사용하여 AlloyDB Omni에서 부하 분산기를 구성하는 방법을 요약합니다. Google Kubernetes Engine (GKE)에서 기본적으로 생성된 부하 분산기는 외부 유형이며 외부 IP 주소에 바인딩되어 인터넷에서 연결을 허용합니다. 하지만 networking.gke.io/load-balancer-type: "internal"
주석이 부하 분산기 매니페스트의 metadata.annotations[]
필드에 포함된 경우 GKE는 내부 부하 분산기를 만듭니다.
플랫폼마다 특정 유형의 부하 분산기를 만들기 위한 자체 주석을 제공합니다.
AlloyDB Omni를 사용하면 데이터베이스 클러스터 매니페스트의 spec
섹션을 사용하여 부하 분산기 주석을 지정할 수 있습니다. 데이터베이스 컨트롤러는 데이터베이스 클러스터를 만들 때 이러한 주석을 부하 분산기 spec
에 추가합니다.
데이터베이스 사양을 사용하여 내부 부하 분산기 만들기
DBCluster
매니페스트의 spec
섹션에서 dbLoadBalancerOptions
필드를 구성하여 내부 부하 분산기를 만들 수 있습니다.
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
: 데이터베이스 클러스터의 확인 출력에서 기본 엔드포인트 값이 로드 밸런서의 인그레스 컨트롤러 값과 일치함