1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

[Alibaba Cloud] TerraformでマルチゾーンRDSを作成

Alibaba CloudでTerraformを使って、マルチゾーンRDSを作成するサンプルを以下に記載します。
なお、ひとまず、パスワードとか雑に書いていますが、そこはスルーでお願いします。

サンプル設定

vpc.tf
provider "alicloud" {
  region     = "ap-northeast-1"
}

resource "alicloud_vpc" "vpc" {
  name        = "VPC"
  description = "Aliyun VPC"
  cidr_block  = "172.16.0.0/16"
}

resource "alicloud_vswitch" "vsw" {
  vpc_id            = "${alicloud_vpc.vpc.id}"
  name              = "VSw"
  description       = "Aliyun VSwitch"
  cidr_block        = "172.16.1.0/24"
  availability_zone = "ap-northeast-1a"
}
rds.tf
# データベース用SLBが属するVSwitch
resource "alicloud_vswitch" "rds_slb" {
  vpc_id            = "${alicloud_vpc.vpc.id}"
  name              = "rds_slb"
  description       = "RDS VSwitch"
  cidr_block        = "172.16.11.0/24"
  availability_zone = "ap-northeast-1a"
}
# データベースインスタンス
resource "alicloud_db_instance" "instance" {
    engine = "MySQL"
    engine_version = "5.6"
    instance_type = "rds.mysql.s2.large"
    instance_storage = "30"
    instance_charge_type = "Postpaid"
    instance_name = "instance"
    vswitch_id = "${alicloud_vswitch.rds_slb.id}"
    zone_id = "ap-northeast-1MAZ1(a,b)"
    monitoring_period = "60"
    security_ips = ["172.16.1.0/24"]
}
# データベースのアカウント
resource "alicloud_db_account" "account" {
    instance_id = "${alicloud_db_instance.instance.id}"
    name = "tf_account"
    password = "Test12345"
}
# データベースアカウントの権限
resource "alicloud_db_account_privilege" "default" {
    instance_id = "${alicloud_db_instance.instance.id}"
    account_name = "tf_account"
    privilege = "ReadOnly"
    db_names = ["${alicloud_db_database.base.*.name}"]
}
# データベース
resource "alicloud_db_database" "base" {
    instance_id = "${alicloud_db_instance.instance.id}"
    name = "tf_database"
    character_set = "utf8"
}

設定ポイント

マルチゾーンの指定

私はこの書き方がわからず、ハマりました。
zone_idに複数の値を入れることはできず、どう設定すればいいのやらと。。。
東京リージョンの場合は、zone_id = "ap-northeast-1MAZ1(a,b)" と書く必要がありました。

aliyun rds DescribeRegionsとAlibaba Cloud CLIで確認すると、選択肢がわかります。
他にもcn-hangzhou-MAZ10(h,i)とかcn-shanghai-MAZ1(b,c)とかありますね。

APIを用いてAlibaba Cloudリソースを自動構築する⑤ - RDS編も参考になりました。

SLBが自動的に作成される

alicloud_db_instanceの中で、vswitch_idを指定する必要があります。
ここで指定するvswitchにRDSインスタンスが作成されるのかと思っていたのですが、そうではありませんでした。
ここにはRDS用のSLBが作成されます。

RDSの構成に関しては、Alibaba Cloud マルチゾーン設計 #3 RDS編がとても参考になります。

感想

ap-northeast-1MAZ1(a,b) にたどり着くまでに3時間くらいかかりました。
最終的にコンソールでRDSをマルチゾーンで作成し、terraform import して、気がつきました。今後もハマりそうになったら使ってみたいと思います。

実際に手を動かしてやってみると、AWSとは違うところを多く発見しますね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?