このページでは、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 ネットワーク ユーザー)ロールを付与するよう管理者に依頼してください。
新しいクラスタを作成する
コンソール
[クラスタ] ページに移動します。
[クラスタを作成] をクリックします。
クラスタ構成を選択します。高可用性構成と基本構成の違いについては、ノードとインスタンスをご覧ください。
新しいクラスタに読み取りプール インスタンスが必要かどうかわからない場合は、読み取りプールのない構成のいずれかを選択します。読み取りプール インスタンスは、必要に応じて後でクラスタに追加できます。
[続行] をクリックします。
[クラスタを構成する] セクションの [クラスタ ID] フィールドに、クラスタの ID を入力します。
[パスワード] フィールドに、新しいクラスタの初期パスワードを入力します。AlloyDB は、クラスタの作成時に指定されたパスワードを
postgres
データベース ユーザーに割り当てます。[データベースのバージョン] フィールドで、クラスタのデータベース サーバーが互換性を持つ PostgreSQL のメジャー バージョンを選択します。
リージョンを選択します。
ネットワーク パスを選択します。
省略可: AlloyDB に IP アドレス範囲を選択させるのではなく、このクラスタに特定の IP アドレス範囲を適用するには、次の操作を行います。
[割り振られた IP 範囲のオプションを表示] をクリックします。
[割り振られた IP 範囲] リストから IP アドレス範囲を選択します。
このオプションの詳細については、特定の IP アドレス範囲を持つクラスタを作成するをご覧ください。
省略可: Google 管理の暗号化ではなく、顧客管理の暗号鍵(CMEK)を使用してこのクラスタを暗号化するには、次の追加手順を実施します。
[高度な暗号化オプション] をクリックします。
[顧客管理の暗号鍵(CMEK)] を選択します。
表示されたメニューで、顧客管理の暗号鍵を選択します。
Google Cloud コンソールでは、このリストは新しいクラスタと同じ Google Cloud プロジェクトとリージョン内の鍵に制限されます。このリストにない鍵を使用するには、[鍵が表示されない場合は、鍵のリソース ID を入力してください。] をクリックして、表示されたダイアログに鍵のリソース名を入力します。
AlloyDB で CMEK を使用するには、追加の設定が必要です。詳細については、AlloyDB で CMEK を使用するをご覧ください。
[続行] をクリックします。
プライマリ インスタンスを構成します。
- [インスタンス ID] フィールドに、プライマリ インスタンスの ID を入力します。
- マシンタイプを選択します。
- 省略可: インスタンスにカスタム フラグを設定します。フラグごとに次の手順を行います。
- [フラグを追加] をクリックします。
- [新しいデータベース フラグ] リストで、フラグを選択します。
- フラグの値を指定します。
- [完了] をクリックします。
読み取りプールのないクラスタタイプを選択した場合は、[クラスタを作成] をクリックします。それ以外の場合は、次の手順に進みます。
読み取りプールを含むクラスタタイプを選択した場合は、次の手順を完了します。
- [続行] をクリックして、1 つ以上の読み取りプール インスタンスを追加します。
読み取りプール インスタンスを追加するには:
[読み取りプールを追加] をクリックします。
[読み取りプール インスタンス ID] フィールドに、読み取りプール インスタンスの ID を入力します。
[ノード数] フィールドにノード数を入力します。
読み取りプール インスタンス内のノード数によって、インスタンスの全体的なコンピューティング容量が決まります。
マシンタイプを選択します。
省略可: インスタンスにカスタムフラグを設定します。各フラグについて、次の操作を行います。
- [フラグを追加] をクリックします。
- [新しいデータベース フラグ] リストからフラグを選択します。
- フラグの値を指定します。
- [完了] をクリックします。
[読み取りプールを追加] をクリックします。
[クラスタを作成] をクリックします。
gcloud
gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。
限定公開サービス アクセスまたは 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 を戻します。
省略可: 特定の IP アドレス範囲をこのクラスタに適用するには、AlloyDB に IP アドレス範囲を選択させるのではなく、次の引数を指定します。
--allocated-ip-range-name=RANGE
RANGE
は、このクラスタがプライベート サービス アクセスに使用する IP アドレス範囲の名前に置き換えます。このオプションの詳細については、特定の IP アドレス範囲を持つクラスタを作成するをご覧ください。
省略可: デフォルトの 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。
オペレーションが成功したことを確認します。
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 の RAM4
: 4 個の vCPU、32 GB の RAM8
: 8 個の vCPU、64 GB の RAM16
: 16 個の vCPU、128 GB の RAM32
: 32 個の vCPU、256 GB の RAM64
: 64 個の vCPU、512 GB の RAM96
: 96 個の vCPU、768 GB の RAM128
: 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 を準備します。
- Cloud Shell を起動します。
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
- Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名は TF ファイルにする必要があります(例:
main.tf
)。このドキュメントでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
- サンプルコードを新しく作成した
main.tf
にコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。 main.tf
ファイルを確認して、環境に適用するサンプル パラメータを変更します。- 変更を保存します。
- Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
省略可: 最新バージョンの Google プロバイダを使用する場合は、terraform init
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
- 構成を確認して、Terraform の更新が想定どおりであることを確認します。
必要に応じて構成を修正します。terraform plan
- 次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。 Terraform にterraform apply
Apply complete!
メッセージが表示されるまで待ちます。 - 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 アドレス範囲の作成の詳細については、プライベート サービス アクセスを有効にするをご覧ください。