クラスタとそのプライマリ インスタンスを作成する

このページでは、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 プロジェクトとリージョン内の鍵に制限されます。このリストにない鍵を使用するには、[鍵が表示されない場合は、鍵のリソース ID を入力してください。] をクリックして、表示されたダイアログに鍵のリソース名を入力します。

      AlloyDB で CMEK を使用するには、追加の設定が必要です。詳細については、AlloyDB で CMEK を使用するをご覧ください。

    4. [続行] をクリックします。

  12. プライマリ インスタンスを構成します。

    1. [インスタンス ID] フィールドに、プライマリ インスタンスの ID を入力します。
    2. マシンタイプを選択します。
    3. 省略可: インスタンスにカスタム フラグを設定します。フラグごとに次の手順を行います。
      1. [フラグを追加] をクリックします。
      2. [新しいデータベース フラグ] リストで、フラグを選択します。
      3. フラグの値を指定します。
      4. [完了] をクリックします。
  13. 読み取りプールのないクラスタタイプを選択した場合は、[クラスタを作成] をクリックします。それ以外の場合は、次の手順に進みます。

  14. 読み取りプールを含むクラスタタイプを選択した場合は、次の手順を完了します。

    1. [続行] をクリックして、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. 省略可: 特定の IP アドレス範囲をこのクラスタに適用するには、AlloyDB に 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: 2 個の vCPU、16 GB の RAM
    • 4: 4 個の vCPU、32 GB の RAM
    • 8: 8 個の vCPU、64 GB の RAM
    • 16: 16 個の vCPU、128 GB の RAM
    • 32: 32 個の vCPU、256 GB の RAM
    • 64: 64 個の vCPU、512 GB の RAM
    • 96: 96 個の vCPU、768 GB の RAM
    • 128: 128 個の vCPU、864 GB の RAM
  • 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 プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    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 を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    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 は外部から閲覧可能です。クラスタ名にプロジェクト 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 アドレス範囲が 1 つ以上含まれている必要があります。

VPC ネットワークに、プライベート サービス アクセスで構成された IP アドレス範囲が複数含まれている場合は、AlloyDB が新しいクラスタに割り当てる範囲を指定できます。

IP アドレス範囲を指定するには、クラスタを作成するのオプションの手順をご覧ください。

範囲を指定しない場合は、AlloyDB はクラスタの作成中に次のいずれかのアクションを実行します。

  • プライベート サービス アクセスが可能な IP アドレス範囲が複数ある場合、AlloyDB はこれらの範囲のいずれかを選択します。

  • VPC にプライベート サービス アクセスで 1 つの IP アドレス範囲を設定した場合、AlloyDB はその範囲を新しいクラスタに適用します。

AlloyDB で使用する IP アドレス範囲の作成の詳細については、プライベート サービス アクセスを有効にするをご覧ください。

次のステップ