プライマリ インスタンスを作成する

このページでは、AlloyDB クラスタにプライマリ インスタンスを作成する方法について説明します。

始める前に

  • 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
  • 使用している Google Cloud プロジェクトに、次のいずれかの IAM ロールが必要です。
    • roles/alloydb.admin(AlloyDB 管理者の IAM 事前定義ロール)
    • roles/owner(オーナーの IAM 基本ロール)
    • roles/editor(編集者の IAM 基本ロール)

    これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。

AlloyDB プライマリ インスタンスを作成する

コンソール

  1. [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でクラスタをクリックします。

  3. [概要] ページで [クラスタ内のインスタンス] に移動し、[プライマリ インスタンスを作成] をクリックします。

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

    1. [インスタンス ID] フィールドに、プライマリ インスタンスの ID を入力します。
    2. [ゾーンの可用性] で、次のいずれかのオプションを選択します。
      1. 自動フェイルオーバーを備えた高可用性の本番環境インスタンスを作成するには、[複数のゾーン(高可用性)] を選択します。
      2. 高可用性が不要である基本的なインスタンスを作成するには、[シングルゾーン] を選択します。
    3. 次のいずれかのマシンシリーズを選択します。

      • C4A(Google Axion ベースのマシンシリーズ)(プレビュー
      • N2(x86 ベースのマシンシリーズ)。これがデフォルトのマシンシリーズです。
    4. マシンタイプを選択します。

      • C4A は vCPU 数が 1、4、8、16、32、48、64、72 個のマシンタイプまたはシェイプをサポートしています。
      • N2 は、2、4、8、16、32、64、96、128 のマシンタイプまたはシェイプをサポートしています。

      vCPU 数が 1 個のマシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。

    5. 省略可: 一般のインターネット経由でアプリケーションとクライアントを接続するには、[パブリック IP 接続] で [パブリック IP を有効にする] チェックボックスをオンにします。パブリック IP を有効にすると、安全な接続を確保するために追加の構成が必要になる場合があります。詳細については、パブリック IP を使用して接続するをご覧ください。

      デフォルトでは、プライベート IP は常に有効になっています。詳細については、プライベート サービス アクセスを有効にするをご覧ください。

    6. 省略可: マネージド接続プールを有効にして使用するには、[マネージド接続プール] の [マネージド接続プールを有効にする] チェックボックスをオンにします。詳細については、マネージド接続プールを構成するをご覧ください。

    7. 省略可: インスタンスにカスタムフラグを設定するには、[詳細な構成オプション] を開き、フラグごとに次の操作を行います。

      1. [フラグを追加] をクリックします。
      2. [新しいデータベース フラグ] リストからフラグを選択します。
      3. フラグの値を指定します。
      4. [完了] をクリックします。
    8. 省略可: インスタンスで SSL またはコネクタの要件を構成するには、[詳細構成オプション] を開いて、次の操作を行います。

      1. デフォルトでは、AlloyDB インスタンスではすべての接続で SSL 暗号化を使用する必要があります。SSL 以外の接続を許可するには、[SSL 接続のみ許可] チェックボックスをオフにします。
      2. インスタンスへのすべてのデータベース接続で AlloyDB Auth Proxy または Google が提供する安全なコネクタ ライブラリを使用するようにするには、[コネクタを必須にする] を選択します。
  5. [インスタンスを作成] をクリックします。

gcloud

gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。

gcloud alloydb instances create コマンドを使用して、プライマリ インスタンスを作成します。

gcloud alloydb instances create INSTANCE_ID \
    --instance-type=PRIMARY \
    --cpu-count=CPU_COUNT \
    --machine-type=MACHINE_TYPE \
    --availability-type=AVAILABILITY \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID
  • INSTANCE_ID: 作成するインスタンスの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。
  • CPU_COUNT: インスタンスに必要な N2 vCPU の数。N2 がデフォルトです。有効な値は次のとおりです。

    • 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

  • MACHINE_TYPE: N2 マシンをデプロイする場合、このパラメータは省略可能です。C4A Axion ベースのマシンシリーズ(プレビュー)をデプロイする場合、または C4A マシンと N2 マシン間で移行する場合は、次の値でこのパラメータを選択します。

    MACHINE_TYPECPU_COUNT を一緒に使用する場合、CPU_COUNTMACHINE_TYPE の値は一致している必要があります。一致していないとエラーが発生します。

    C4A Axion ベースのマシンシリーズの場合は、次の値のマシンタイプを選択します。

    • c4a-highmem-1
    • c4a-highmem-4-lssd
    • c4a-highmem-8-lssd
    • c4a-highmem-16-lssd
    • c4a-highmem-32-lssd
    • c4a-highmem-48-lssd
    • c4a-highmem-64-lssd
    • c4a-highmem-72-lssd

    4 vCPU 以上の C4A をデプロイするには、接尾辞 lssd を使用して超高速キャッシュを有効にします。

    vCPU 数が 1 個のマシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。

    N2 x86 ベースのマシンシリーズの場合は、次の値を使用します。

    • N2-highmem-2
    • N2-highmem-4
    • N2-highmem-8
    • N2-highmem-16
    • N2-highmem-32
    • N2-highmem-64
    • N2-highmem-96
    • N2-highmem-128

  • AVAILABILITY: このインスタンスを高可用性(HA)にするか、複数のゾーンにノードを配置するか。有効な値は次のとおりです。

    • REGIONAL: アクティブ ノードとスタンバイ ノードを別々に持つ HA インスタンスを作成し、それらの間で自動フェイルオーバーを行います。これはデフォルト値で、本番環境に適しています。
    • ZONAL: 1 つのノードのみを含む基本インスタンスを作成し、自動フェイルオーバーは行いません。
  • REGION_ID: インスタンスを配置するリージョン。例: us-central1

  • CLUSTER_ID: インスタンスを配置するクラスタの ID。

  • PROJECT_ID: クラスタが配置されるプロジェクトの ID。

デフォルトでは、新しいインスタンスではすべての接続で SSL 暗号化を使用する必要があります。インスタンスへの SSL 以外の接続を許可するには、コマンドに --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED フラグを追加します。

gcloud alloydb instances create INSTANCE_ID \
  --instance-type=PRIMARY \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

Auth Proxy または Google 提供のコネクタ ライブラリを使用する他のアプリケーションを介して、クライアントと AlloyDB インスタンス間の安全な接続を適用するには、コマンドに --require-connectors フラグを追加します。

gcloud alloydb instances create INSTANCE_ID \
  --instance-type=PRIMARY \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --require-connectors

AlloyDB インスタンスでマネージド接続プールを有効にするには、gcloud alpha alloydb instances create コマンドに --enable-connection-pooling フラグを追加します。

gcloud alpha alloydb instances create INSTANCE_ID \
  --instance-type=PRIMARY \
  --cpu-count=CPU_COUNT \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --enable-connection-pooling

Private Service Connect が有効なクラスタのプライマリ インスタンスを作成するには、--allowed-psc-projects フラグを追加して、インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリストを設定します(例: my-project-112345my-project-n)。

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

次のように置き換えます。

  • ALLOWED_PROJECT_LIST(省略可): インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリスト(例: my-project-112345my-project-n)。インスタンスへの接続方法としてクラスタが Private Service Connect を使用している場合は、許可するプロジェクトまたは番号のリストを設定する必要があります。
  • NETWORK_ATTACHMENT_URI(省略可): 作成するネットワーク アタッチメント URI の完全なリソース名。例: projects/<var>PROJECT_ID</var>/regions/<var>REGION_ID</var>/networkAttachments/<var>NETWORK_ATTACHMENT_ID</var>

Terraform

データベース クラスタ内にインスタンスを作成するには、Terraform リソースを使用します。

resource "google_alloydb_instance" "default" {
  cluster       = google_alloydb_cluster.default.name
  instance_id   = "alloydb-instance"
  instance_type = "PRIMARY"

  machine_config {
    cpu_count = 2
  }

  depends_on = [google_service_networking_connection.vpc_connection]
}

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

  initial_user {
    password = "alloydb-cluster"
  }
}

data "google_project" "project" {}

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

resource "google_compute_global_address" "private_ip_alloc" {
  name          =  "alloydb-cluster"
  address_type  = "INTERNAL"
  purpose       = "VPC_PEERING"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_service_networking_connection" "vpc_connection" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}

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 スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
    git clone https://github.com/terraform-google-modules/terraform-docs-samples
  3. terraform-docs-samples ディレクトリで、alloydb ディレクトリに移動します。
    cd terraform-docs-samples/alloydb
  4. 新しく作成した main.tf にサンプルコードをコピーします。
    cp SAMPLE_FILE
    <var>SAMPLE_FILE</var> は、コピーするサンプルファイルの名前に置き換えます(例: main.tf)。
  5. 環境に適用するサンプル パラメータを確認し、変更します。
  6. 変更を保存します。
  7. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init
    省略可: 最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。
    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform の更新が想定どおりであることを確認します。
    terraform plan
    必要に応じて構成を修正します。
  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply
    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

Google Cloud プロジェクトを開いて結果を確認します。Google Cloud コンソールの UI でリソースに移動して、リソースが Terraform によって作成または更新されたことを確認します。

REST v1

この例では、プライマリ インスタンスを作成します。この呼び出しのパラメータの完全なリストについては、メソッド: projects.locations.clusters.create をご覧ください。クラスタの設定の詳細については、クラスタとインスタンスの設定を表示するをご覧ください。

クラスタ ID には機密情報や個人を特定できる情報を含めないでください。クラスタ ID は外部から閲覧可能です。クラスタ名にプロジェクト ID を含める必要はありません。この処理は必要に応じて(ログファイルなどに対して)自動的に行われます。

リクエストのデータを使用する前に、次のように置き換えます。

  • CLUSTER_ID: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。
  • PROJECT_ID: クラスタを配置するプロジェクトの ID。
  • LOCATION_ID: クラスタのリージョンの ID。
  • INSTANCE_ID: 作成するプライマリ インスタンスの名前。
  • vCPU_COUNT: 作成するインスタンスで可視な CPU コアの数。

リクエストの JSON 本文は次のようになります。

{
  instanceId   = "INSTANCE_ID"
  instanceType = "PRIMARY"
  machineConfig {
    cpuCount = vCPU_COUNT
  }
  databaseFlags = {
    "key1" : "value1",
    "key2" : "value2"
  }
}

リクエストを送信するには、リクエスト本文を request.json という名前のファイルに保存し、次の POST リクエストを使用します。

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

次のステップ