클러스터 및 클러스터의 기본 인스턴스 만들기

이 페이지에서는 AlloyDB 클러스터와 기본 인스턴스를 만드는 방법을 설명합니다.

시작하기 전에

  • 사용 중인 Google Cloud 프로젝트가 AlloyDB에 액세스하도록 사용 설정되어 있어야 합니다.
  • 사용 중인 Google Cloud 프로젝트의 VPC 네트워크가 이미 AlloyDB에 대한 비공개 서비스 액세스를 위해 구성되어 있어야 합니다.
  • 사용 중인 Google Cloud 프로젝트에 다음 IAM 역할 중 하나가 있어야 합니다.
    • roles/alloydb.admin (AlloyDB 관리자가 사전 정의한 IAM 역할)
    • roles/owner(소유자 기본 IAM 역할)
    • roles/editor(편집자 기본 IAM 역할)

    이러한 역할이 없는 경우 조직 관리자에게 문의하여 액세스 권한을 요청하세요.

  • 또한 사용 중인 Google Cloud 프로젝트에 대한 compute.networks.list 권한이 있어야 합니다. 최소 권한 원칙을 준수하면서 이 권한을 얻으려면 관리자에게 roles/compute.networkUser (Compute 네트워크 사용자) 역할을 부여해 달라고 요청하세요.

새 클러스터 만들기

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 클러스터 구성을 선택합니다. 고가용성 구성과 기본 구성의 차이점에 관한 자세한 내용은 노드 및 인스턴스를 참고하세요.

    새 클러스터에 읽기 풀 인스턴스가 필요한지 확실하지 않은 경우 읽기 풀이 없는 구성 중 하나를 선택합니다. 필요한 경우 나중에 클러스터에 읽기 풀 인스턴스를 추가할 수 있습니다.

  4. 계속을 클릭합니다.

  5. 클러스터 구성 섹션의 클러스터 ID 필드에 클러스터의 ID를 입력합니다.

  6. 비밀번호 필드에 새 클러스터의 초기 비밀번호를 입력합니다. AlloyDB는 클러스터를 만들 때 제공된 비밀번호를 postgres 데이터베이스 사용자에게 할당합니다.

  7. 데이터베이스 버전 필드에서 클러스터의 데이터베이스 서버가 호환되도록 할 PostgreSQL의 주요 버전을 선택합니다.

  8. 리전을 선택하세요.

  9. 네트워크 경로를 선택합니다.

  10. 선택사항: AlloyDB에서 IP 주소 범위를 선택하도록 허용하지 않고 이 클러스터에 특정 IP 주소 범위를 적용하려면 다음 단계를 따르세요.

    1. 할당된 IP 범위 옵션 표시를 클릭합니다.

    2. 할당된 IP 범위 목록에서 IP 주소 범위를 선택합니다.

    이 옵션에 관한 자세한 내용은 특정 IP 주소 범위로 클러스터 만들기를 참고하세요.

  11. 선택사항: Google 관리 암호화 대신 고객 관리 암호화 키 (CMEK)를 사용하여 이 클러스터를 암호화하려면 다음 추가 단계를 따르세요.

    1. 고급 암호화 옵션을 클릭합니다.

    2. 고객 관리 암호화 키(CMEK)를 선택합니다.

    3. 표시되는 메뉴에서 고객 관리 키를 선택합니다.

      Google Cloud 콘솔은 이 목록을 새 클러스터와 동일한 Google Cloud 프로젝트 및 리전 내의 키로 제한합니다. 이 목록에 없는 키를 사용하려면 키가 표시되지 않나요? 키 리소스 이름을 입력하세요를 클릭한 다음 표시되는 대화상자에 키의 리소스 이름을 입력합니다.

      AlloyDB에서 CMEK를 사용하려면 추가 설정이 필요합니다. 자세한 내용은 AlloyDB에서 CMEK 사용을 참고하세요.

    4. 계속을 클릭합니다.

  12. 기본 인스턴스를 구성합니다.

    1. 인스턴스 ID 필드에 기본 인스턴스의 ID를 입력합니다.
    2. 머신 유형을 선택합니다.
    3. 선택사항: 인스턴스에 맞춤 플래그를 설정합니다. 각 플래그에 대해 다음 단계를 따르세요.
      1. 플래그 추가를 클릭합니다.
      2. 새 데이터베이스 플래그 목록에서 플래그를 선택합니다.
      3. 플래그 값을 제공합니다.
      4. 완료를 클릭합니다.
  13. 읽기 풀이 없는 클러스터 유형을 선택한 경우 클러스터 만들기를 클릭합니다. 이러한 경우가 아니면 계속해서 다음 단계를 진행합니다.

  14. 읽기 풀이 있는 클러스터 유형을 선택한 경우 다음 단계를 완료합니다.

    1. 계속을 클릭하여 읽기 풀 인스턴스를 하나 이상 추가합니다.
    2. 읽기 풀 인스턴스를 추가하려면 다음 단계를 따르세요.

      1. 읽기 풀 추가를 클릭합니다.

      2. 읽기 풀 인스턴스 ID 필드에 읽기 풀 인스턴스의 ID를 입력합니다.

      3. 노드 수 필드에 노드 수를 입력합니다.

        읽기 풀 인스턴스의 노드 수가 인스턴스의 전반적인 컴퓨팅 용량을 결정합니다.

      4. 머신 유형을 선택합니다.

      5. 선택사항: 인스턴스에 맞춤 플래그를 설정합니다. 각 플래그에 대해 다음을 실행합니다.

        1. 플래그 추가를 클릭합니다.
        2. 새 데이터베이스 플래그 목록에서 플래그를 선택합니다.
        3. 플래그 값을 제공합니다.
        4. 완료를 클릭합니다.
      6. 읽기 풀 추가를 클릭합니다.

    3. 클러스터 만들기를 클릭합니다.

gcloud

gcloud CLI를 사용하려면 Google Cloud CLI를 설치 및 초기화하거나 Cloud Shell을 사용합니다.

  1. 비공개 서비스 액세스 또는 Private Service Connect가 사용 설정된 클러스터를 만들려면 gcloud alloydb clusters create 명령어를 사용합니다.

    비공개 서비스 액세스

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --network=NETWORK

    Private Service Connect

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --enable-private-service-connect 

    다음을 바꿉니다.

    • CLUSTER_ID: 만들려는 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.

    • VERSION: 클러스터의 데이터베이스 서버와 호환되도록 하려는 PostgreSQL의 주요 버전입니다. 다음 중 하나를 선택합니다.

      • 14: PostgreSQL 14와의 호환성을 위해

      • 15: 지원되는 기본 PostgreSQL 버전인 PostgreSQL 15와의 호환성을 위해

      • 16: PostgreSQL 16과의 호환성을 위해

    • PASSWORD: 기본 postgres 사용자에게 사용할 비밀번호입니다.

    • NETWORK (선택사항): AlloyDB에 대한 비공개 서비스 액세스를 위해 구성한 VPC 네트워크의 이름입니다. --network 플래그를 생략하면 AlloyDB는 default 네트워크를 사용합니다.

    • --enable-private-service-connect (선택사항): 클러스터 및 인스턴스의 연결 방법으로 Private Service Connect를 사용 설정하도록 설정합니다.

    • REGION_ID: 클러스터를 배치할 리전입니다.

    • PROJECT_ID: 클러스터를 배치하려는 프로젝트의 ID입니다.

    이 명령어는 장기 실행 작업을 시작하고 작업 ID를 반환합니다.

  2. 선택사항: AlloyDB가 IP 주소 범위를 선택하도록 허용하는 대신 이 클러스터에 특정 IP 주소 범위를 적용하려면 다음 인수를 제공합니다.

    --allocated-ip-range-name=RANGE
    

    RANGE을 이 클러스터에서 비공개 서비스 액세스에 사용할 IP 주소 범위의 이름으로 바꿉니다.

    이 옵션에 관한 자세한 내용은 특정 IP 주소 범위로 클러스터 만들기를 참고하세요.

  3. 선택사항: 기본 Google 관리 암호화 대신 고객 관리 암호화 키 (CMEK)를 사용하여 이 클러스터를 암호화하려면 다음 인수를 제공합니다.

    --kms-key=KEY_ID \
    --kms-keyring=KEYRING_ID \
    --kms-location=LOCATION_ID \
    --kms-project=PROJECT_ID
    

    다음을 바꿉니다.

    • KEY_ID: 사용할 CMEK 키의 ID입니다.

    • KEYRING_ID: 키의 키링 ID입니다.

    • LOCATION_ID: 키링 리전의 ID로, 클러스터의 리전과 동일해야 합니다.

    • PROJECT_ID: 키링 프로젝트의 ID입니다.

  4. 작업이 완료되었는지 확인합니다.

    gcloud alloydb operations describe OPERATION_ID \
        --region=REGION_ID \
        --project=PROJECT_ID

    OPERATION_ID을 이전 단계에서 반환된 작업 ID로 바꿉니다.

기본 클러스터를 만든 후에는 기본 인스턴스를 만들어야 합니다.

기본 인스턴스 만들기

기본 인스턴스를 만들려면 gcloud alloydb instances create 명령어를 사용합니다.

    gcloud alloydb instances create INSTANCE_ID \
        --instance-type=PRIMARY \
        --cpu-count=CPU_COUNT \
        --region=REGION_ID \
        --cluster=CLUSTER_ID \
        --project=PROJECT_ID \
        --allowed-psc-projects=ALLOWED_PROJECT_LIST

다음을 바꿉니다.

  • INSTANCE_ID: 만들려는 인스턴스의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • CPU_COUNT: 인스턴스에 사용할 vCPU 수입니다. 유효한 값은 다음과 같습니다.
    • 2: vCPU 2개, RAM 16GB
    • 4: vCPU 4개, RAM 32GB
    • 8: vCPU 8개, RAM 64GB
    • 16: vCPU 16개, RAM 128GB
    • 32: vCPU 32개, RAM 256GB
    • 64: vCPU 64개, RAM 512GB
    • 96: vCPU 96개, RAM 768GB
    • 128: vCPU 128개, RAM 864GB
  • REGION_ID: 인스턴스를 배치할 리전입니다.
  • CLUSTER_ID: 앞에서 만든 클러스터의 ID입니다.
  • PROJECT_ID: 클러스터가 있는 프로젝트의 ID입니다.
  • ALLOWED_PROJECT_LIST (선택사항): Private Service Connect를 사용하는 경우 인스턴스에 액세스하도록 허용하려는 프로젝트 ID 또는 프로젝트 번호의 쉼표로 구분된 목록입니다.

Terraform

클러스터를 만들려면 Terraform 리소스를 사용합니다.

다음은 AlloyDB 클러스터 전체 예시를 기반으로 클러스터를 만드는 코드 스니펫입니다.

resource "google_alloydb_cluster" "cluster_abc" {
  cluster_id = "alloydb-cluster"
  location   = "us-central1"
  network_config {
    network = google_compute_network.default.id
  }
  database_version = "POSTGRES_15"

  initial_user {
    user     = "postgres"
    password = "postgres"
  }

  continuous_backup_config {
    enabled              = true
    recovery_window_days = 14
  }

  automated_backup_policy {
    location      = "us-central1"
    backup_window = "1800s"
    enabled       = true

    weekly_schedule {
      days_of_week = ["MONDAY"]

      start_times {
        hours   = 23
        minutes = 0
        seconds = 0
        nanos   = 0
      }
    }

    quantity_based_retention {
      count = 1
    }

    labels = {
      test = "alloydb-cluster-backup-policy-labels"
    }
  }

  labels = {
    test = "alloydb-cluster-labels"
  }
}

data "google_project" "project" {}

resource "google_compute_network" "default" {
  name = "alloydb-cluster-network"
}

Cloud Shell 준비

Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음과 같이 Cloud Shell을 준비합니다.

  1. Cloud Shell을 실행합니다.
  2. Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.

    이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.

디렉터리 준비

각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.

  1. Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만듭니다. 파일 이름은 TF 파일(예: main.tf)이어야 합니다. 이 문서에서는 이 파일을 main.tf라고 합니다.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 샘플 코드를 새로 만든 main.tf에 복사합니다. 필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
  3. main.tf 파일을 검토하고 환경에 적용할 샘플 매개변수를 수정합니다.
  4. 변경사항을 저장합니다.
  5. Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
    terraform init
    선택사항: 최신 Google 공급업체 버전을 사용하려면 -upgrade 옵션을 포함합니다.
    terraform init -upgrade

변경사항 적용

  1. 구성을 검토하여 Terraform 업데이트가 예상과 일치하는지 확인합니다.
    terraform plan
    필요에 따라 구성을 수정합니다.
  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 Terraform 구성을 적용합니다.
    terraform apply
    Terraform에 Apply complete! 메시지가 표시될 때까지 기다립니다.
  3. 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.

REST v1

이 예시에서는 클러스터를 만듭니다. network 매개변수는 필수 항목입니다. 이 호출의 전체 매개변수 목록은 메서드: projects.locations.clusters.create를 참고하세요. 클러스터 설정에 관한 자세한 내용은 클러스터 및 인스턴스 설정 보기를 참고하세요.

클러스터 ID는 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요. 클러스터 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • CLUSTER_ID: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.
  • PROJECT_ID: 클러스터를 배치하려는 프로젝트의 ID입니다.
  • LOCATION_ID: 클러스터 리전의 ID입니다.
  • NETWORK: AlloyDB에 대한 비공개 서비스 액세스를 위해 구성한 VPC 네트워크의 이름입니다.
  • DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다(예: POSTGRES_15).
  • INITIAL_USERNAME: 기본 postgres 사용자에게 사용할 사용자 이름입니다.
  • INITIAL_USER_PASSWORD: 기본 postgres 사용자에 사용할 비밀번호입니다.

요청 JSON 본문은 다음과 같습니다.

{
  clusterId = "CLUSTER_ID"
  network = "projects/PROJECT_ID/global/networks/NETWORK"
  databaseVersion = "DATABASE_VERSION"

  initialUser {
    user     = "INITIAL_USERNAME"
    password = "INITIAL_USER_PASSWORD"
  }

  continuousBackupConfig {
    enabled              = true
    recoveryWindowDays = 14
  }

  weeklySchedule {
    daysOfWeek = ["MONDAY"]

      startTimes {
        hours   = 23
        minutes = 0
        seconds = 0
        nanos   = 0
      }
  }

    quantityBasedRetention {
      count = 1
    }

    labels = {
      test = "alloydb-cluster-full"
    }
  }
}

요청을 전송하려면 요청 본문을 request.json 파일에 저장하고 다음 POST 요청을 사용합니다.

  POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters

활성 클러스터 클론

모든 소스 클러스터 데이터의 사본이 포함되어 있고 동일한 리전에서 실행되는 활성 클러스터의 클론을 만들려면 해당 클러스터에서 시점 복구를 실행합니다. 이때 매우 최근의 시점을 지정할 수 있습니다(예: 현재 분의 첫 번째 초).

이 프로세스는 소스 클러스터의 구성이 아닌 소스 클러스터의 데이터만 클론에 복사합니다. CMEK를 사용하여 클론의 데이터를 암호화하려면 소스 클러스터의 데이터가 이미 CMEK로 암호화되어 있더라도 특정 시점 복구 명령의 일부로 CMEK 세부정보를 지정해야 합니다. 새 클러스터가 생성된 후에는 인스턴스, 데이터베이스 플래그, 백업 일정, 필요에 따라 필요한 기타 구성을 추가해야 합니다.

이 방법으로 생성된 클러스터는 소스와 독립적으로 존재하며, 초기 복제가 완료된 후에는 데이터가 소스 클러스터의 데이터와 아무런 관계가 없습니다. 소스 클러스터에서 이루어진 데이터 변경사항을 자동으로 추적하고 복제하는 보조 클러스터를 만들려면 교차 리전 복제 정보를 참고하세요.

특정 IP 주소 범위로 클러스터 만들기

AlloyDB는 비공개 서비스 액세스를 사용하여 클러스터의 내부 리소스가 서로 통신할 수 있도록 합니다. 클러스터를 만들려면 Virtual Private Cloud (VPC) 네트워크에 비공개 서비스 액세스 연결로 구성된 IP 주소 범위가 하나 이상 포함되어 있어야 합니다.

VPC 네트워크에 비공개 서비스 액세스로 구성된 IP 주소 범위가 두 개 이상 포함된 경우 AlloyDB가 새 클러스터에 할당할 범위를 지정할 수 있습니다.

IP 주소 범위를 지정하려면 클러스터 만들기의 선택적 단계를 참고하세요.

범위를 지정하지 않으면 AlloyDB는 클러스터를 만들 때 다음 작업 중 하나를 실행합니다.

  • 비공개 서비스 액세스를 사용할 수 있는 IP 주소 범위가 여러 개인 경우 AlloyDB는 이러한 범위 중 하나를 선택합니다.

  • 비공개 서비스 액세스가 있는 IP 주소 범위를 VPC에 정확히 하나 설정하면 AlloyDB는 이 범위를 새 클러스터에 적용합니다.

AlloyDB와 함께 사용할 IP 주소 범위를 만드는 방법에 관한 자세한 내용은 비공개 서비스 액세스 사용 설정을 참고하세요.

다음 단계