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

このページでは、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. マシンタイプを選択します。
    4. 省略可: インスタンスにカスタムフラグを設定するには、[詳細な構成オプション] を開き、フラグごとに次の操作を行います。
      1. [フラグを追加] をクリックします。
      2. [新しいデータベース フラグ] リストからフラグを選択します。
      3. フラグの値を指定します。
      4. [完了] をクリックします。
    5. 省略可: インスタンスで SSL またはコネクタの要件を構成するには、[詳細構成オプション] を開いて、次の操作を行います。
      1. デフォルトでは、AlloyDB インスタンスではすべての接続で SSL 暗号化を使用する必要があります。SSL 以外の接続を許可するには、[SSL 接続のみ許可] チェックボックスをオフにします。
      2. インスタンスへのすべてのデータベース接続で AlloyDB Auth Proxy または Google が提供する安全なコネクタ ライブラリを使用するようにするには、[コネクタを必須にする] を選択します。
    6. [インスタンスを作成] をクリックします。

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 \
    --availability-type=AVAILABILITY \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID
  • 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
  • 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 \
  --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 \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --require-connectors

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 \
    --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.instances.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

次のステップ