부하 분산기 구성

문서 버전을 선택합니다.

RPM 오케스트레이터를 사용하여 AlloyDB Omni의 부하 분산기를 구성할 수 있습니다.

제한사항

다음과 같은 제한사항이 적용됩니다.

  • 엔드포인트는 ReadWrite 엔드포인트로 제한됩니다. 읽기 전용 엔드포인트는 향후 지원될 예정입니다.

시작하기 전에

부하 분산기를 구성하기 전에 다음 요구사항을 충족하는지 확인하세요.

  • 부하 분산기 노드를 정의하려면 배포 사양 파일에 전용 부하 분산기 VM의 호스트 이름 또는 IP 주소가 포함된 load_balancer_nodes 그룹을 포함합니다.

    alloydbomni:
      vars:
        ...
      children:
        load_balancer_nodes:
          hosts:
            lb-node-1:
            lb-node-2:
    
  • 방화벽을 구성하려면 다음 인바운드 트래픽을 허용합니다.

    • 전용 부하 분산기 VM:

      • 포트 5432 (TCP): HAProxy 데이터베이스 트래픽용

      • 포트 6432(TCP): PgBouncer 연결 풀링 트래픽(해당하는 경우)

      • VRRP 프로토콜: keepalived 리더 선택 및 상태 점검용

    • 데이터베이스 노드:

      • 포트 8086 (HTTP): 부하 분산기 상태 점검용
  • Google Cloud 환경을 사용하는 경우 ENVIRONMENT_TYPE을 gcp로 설정합니다. 그런 다음 root 사용자로 gcloud auth login을 실행하여 gcloud CLI 계정을 인증해야 합니다. 또한 인증된 계정에는 다음 권한이 있어야 합니다.

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

부하 분산기 구성

RPM 오케스트레이터는 HAProxy를 사용하여 트래픽을 분산하고 Keepalived를 사용하여 가상 IP (VIP)로 고가용성을 제공합니다.

리소스 사양 업데이트

DBCluster 사양 파일에 dbLoadBalancerOptions를 추가합니다. 이렇게 하면 클러스터 관리자와 오케스트레이터가 부하 분산기 엔드포인트를 관리하는 방법을 알 수 있습니다.

DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    primarySpec:
      # ... other primary settings ...
      dbLoadBalancerOptions:
        ENVIRONMENT_TYPE::
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

다음을 바꿉니다.

  • ENVIRONMENT_TYPE: 클러스터가 설정되는 환경(onprem 또는 gcp)을 결정합니다.

  • DBCLUSTER_NAME: AlloyDB Omni 데이터베이스 클러스터의 이름입니다(예: my-db-cluster).

  • VIRTUAL_IP: 부동 가상 IP에 사용되는 고정 IP 주소입니다. 데이터베이스 클라이언트 애플리케이션은 여기에 정의된 IP 주소를 사용합니다. Keepalived가 Gratuitous 주소 결정 프로토콜 (GARP)을 브로드캐스트할 수 있도록 하려면 이 IP 주소가 다음 조건을 충족해야 합니다. 사용 가능해야 하고, 루프백할 수 없으며, 온프레미스의 경우 기본 노드 인터페이스와 동일한 서브넷에 속해야 합니다.

  • VIRTUAL_IP_INTERFACE: VIRTUAL_IP가 구성된 네트워크 인터페이스입니다. 기본값은 eth0입니다.

구성 적용

선호하는 오케스트레이터 인터페이스를 사용하여 구성 변경사항을 적용합니다.

Ansible

인벤토리 및 리소스 사양 파일을 사용하여 부트스트랩 플레이북을 실행합니다.

ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \
      -e resource_spec="DBCLUSTER_SPECIFICATION"

다음 변수를 바꿉니다.

  • DBCLUSTER_PLAYBOOK: 클러스터 만들기의 데이터베이스 클러스터에 대해 만든 플레이북의 경로입니다. 클러스터 만들기.

  • DEPLOYMENT_SPECIFICATION:AlloyDB Omni 구성요소 설치 에서 만든 배포 사양의 경로입니다.

  • DBCLUSTER_SPECIFICATION: 클러스터 사양의 경로입니다.

alloydbctl

리소스 및 배포 사양을 적용합니다.

alloydbctl apply -d "DEPLOYMENT_SPECIFICATION" -r "DBCLUSTER_SPECIFICATION"

다음 변수를 바꿉니다.

  • DEPLOYMENT_SPECIFICATION:AlloyDB Omni 구성요소 설치 에서 만든 배포 사양의 경로입니다.

  • DBCLUSTER_SPECIFICATION: 클러스터 사양의 경로입니다.

부하 분산기 확인

RPM 오케스트레이터가 설정을 완료한 후 VIP를 사용하여 데이터베이스 클러스터에 연결할 수 있는지 확인합니다.

psql -h VIRTUAL_IP -U postgres

VIRTUAL_IP를 loadBalancerIP 필드에서 구성한 IP 주소로 바꿉니다.

부하 분산기는 연결을 현재 기본 노드로 자동 라우팅합니다.