使用terraform为RDS aurora创建跨区域读取副本群集时出现的问题

使用terraform为RDS aurora创建跨区域读取副本群集时出现的问题,terraform,amazon-rds,terraform-provider-aws,amazon-aurora,Terraform,Amazon Rds,Terraform Provider Aws,Amazon Aurora,更新:问题#2实际上不是地形问题..问题是AWS的问题..我修正了..代码工作正常..现在只剩下问题#1 AZs发行时 我在us-east-1中有一个RDS极光群集,其中有一个实例,我想在us-west-2中创建一个跨区域读取副本RDS极光群集,其中有一个实例 在尝试使用terrform从RDS aurora群集创建跨区域读取副本时,我遇到了两个问题 这是我的main.tf文件 provider "aws" { region = "${var.aws_regio

更新:问题#2实际上不是地形问题..问题是AWS的问题..我修正了..代码工作正常..现在只剩下问题#1 AZs发行时

我在
us-east-1
中有一个RDS极光群集,其中有一个实例,我想在
us-west-2
中创建一个跨区域读取副本RDS极光群集,其中有一个实例

在尝试使用terrform从RDS aurora群集创建跨区域读取副本时,我遇到了两个问题

这是我的main.tf文件

provider "aws" {
  region = "${var.aws_region}"

}

resource "aws_db_subnet_group" "rds-aurora" {
  name       = "${var.name}-${var.aws_region}"
  subnet_ids = ["${split(",",lookup(var.subnet_ids, "${var.aws_region}"))}"]
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}

resource "aws_rds_cluster_parameter_group" "rds-aurora-cluster-pg" {
  name        = "${var.name}-cluster-pg-${var.aws_region}"
  family      = "aurora5.6"
  description = "${var.name} cluster parameter group"
  parameter {
    name  = "secure_auth"
    value = "1"
  }
  parameter {
    name  = "binlog_format"
    value = "MIXED"
    apply_method = "pending-reboot"
  }
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
  lifecycle {
      create_before_destroy = true
  }  
}

resource "aws_db_parameter_group" "rds-aurora-pg" {
  name   = "${var.name}-pg-${var.aws_region}"
  family = "aurora5.6"
  description = "${var.name} parameter group"
  parameter {
    name  = "secure_auth"
    value = "1"
  }
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
  lifecycle {
      create_before_destroy = true
  }
}

resource "aws_rds_cluster" "rds-aurora" {
  cluster_identifier      = "${var.name}"
  availability_zones      = ["${lookup(var.availability_zones, var.aws_region)}"]  
  skip_final_snapshot = "true"
  backup_retention_period = "${var.rds_backup}"
  preferred_backup_window = "09:00-09:30"
  preferred_maintenance_window = "mon:06:00-mon:06:30"
  apply_immediately = "true"
  engine_mode       = "provisioned"
  deletion_protection = "false"
  vpc_security_group_ids = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
  storage_encrypted = "true"
  db_subnet_group_name = "${aws_db_subnet_group.rds-aurora.name}"
  db_cluster_parameter_group_name = "${aws_rds_cluster_parameter_group.rds-aurora-cluster-pg.name}"
  kms_key_id = "${var.kms_key_id}"
  replication_source_identifier = "${var.replication_source_identifier}${var.name}"
  source_region = "${var.source_region}"
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}

resource "aws_rds_cluster_instance" "rds-aurora" {
  count              = "${var.rds_count}"
  identifier         = "${var.name}-${count.index}"
  engine = "aurora"
  db_subnet_group_name = "${aws_db_subnet_group.rds-aurora.name}"
  db_parameter_group_name = "${aws_db_parameter_group.rds-aurora-pg.name}"
  instance_class     = "${var.instance_class}"
  cluster_identifier = "${aws_rds_cluster.rds-aurora.cluster_identifier}"
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}
以下是我面临的问题

1.第一个问题是我得到这个错误 这些可用性区域确实存在,我相信我已经以正确的方式输入了值 以下是terraform如何获得可用性区域的值

...
availability_zones.2635104823:     "" => "us-west-2a,us-west-2b,us-west-2c"
...
这是正确的格式,AZs是存在的,就像我说的。我从头开始创建RDS,同样的格式也可以,但是现在尝试创建跨区域读取副本时,我得到的错误是AZs不存在

现在,我可以通过添加1个AZ进入下一个问题,以通过此阶段。但问题仍然存在,我也想解决这个问题

下一个问题是下面的第二个问题……主要问题

2.现在主要的错误是,我认为在使用terraform为RDS aurora创建跨区域读取副本时存在错误 terrform apply在创建rds群集时被卡住了,它从未完成…在超时开始之前,它在这里运行了2个多小时..我注意到的一件事是,当我检查AWS仪表板时,我可以看到rds群集已创建,但它下面没有rds实例,但terrform一直在运行rds群集的创建永远

aws_rds_cluster.rds-aurora: Still creating... (10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (30s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m10s elapsed)
...
...
...
aws_rds_cluster.rds-aurora: Still creating... (1h59m40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1h59m50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m30s elapsed)
因此,我认为存在一个bug,terrafrom不知道何时创建RDS集群,因此它可以按照上面main.tf文件中的指定在其下创建RDS实例


有人愿意帮助解决这两个问题吗?

好的,那么您正在创建读取副本群集,而不是读取副本实例,您是指定db实例还是群集作为源?您应该将源设置为集群中的db_实例,而不是源集群。如果您使用的是多AZ HA源,则理想情况下为读取副本


有一件事要记住,因为我不知道你的环境,如果你使用一个主机集群,就必须从头开始拍摄。不用麻烦使用集群。只需使用一个db实例。它更简单且相对相同

好的,因此您创建的是读取副本群集而不是读取副本实例,您是指定db实例还是群集作为源?您应该将源设置为集群中的db_实例,而不是源集群。如果您使用的是多AZ HA源,则理想情况下为读取副本


有一件事要记住,因为我不知道你的环境,如果你使用一个主机集群,就必须从头开始拍摄。不用麻烦使用集群。只需使用一个db实例。它更简单,也相对相同。我想说的是,根据您提供的TF代码,很难看到您在做什么。源集群TF代码和变量定义在哪里?

我想说的是,根据您提供的TF代码很难看到您在做什么。源集群TF代码和变量定义在哪里?

仍不清楚您是在尝试创建读取副本集群,还是仅创建读取副本实例。如果您试图创建读取副本群集,则使用复制源标识符是有意义的。我看不到aws_区域或源区域的变量定义,但它们是否在不同的区域中?您是否在变量中为每个区域定义了正确的AZ?您是否在
aws_rds_cluster
resource
replication_source_identifier=“${var.replication_source_identifier}${var.name}”下看到这一行?这就是我引用远程rds群集以从中创建读取副本的原因。我的问题与num 2完全相同。明白了吗?@jetru你能分享你的解决方案吗?还没有解决方案(仍不清楚您是尝试创建读取副本群集,还是仅尝试创建读取副本实例。如果您尝试创建读取副本群集,则使用复制\u源\u标识符是有意义的。我看不到aws\u区域或源\u区域的变量定义,但它们在不同的区域中吗您是否在变量中为每个区域定义了正确的AZ?您是否在
aws\u rds\u cluster
resource
replication\u source\u identifier=“${var.replication\u source\u identifier}${var.name}”下看到这一行
?这就是我引用远程rds群集从中创建读取副本的地方。我与num 2有完全相同的问题。解决了吗?@jetru您能分享您的解决方案吗?还没有解决方案:(源数据库是一个带有1个db实例的RDS aurora群集。你是说我应该使用db实例作为源数据库而不是db群集吗?好的,下面是我试图做的事情…我有一个RDS aurora群集,我在us-east-1地区有一个RDS aurora实例,我想从u-west-2的群集创建一个读副本RDS aurora群集s-east-1..这就是我试图做的…我只是将源数据库改为实例而不是群集,然后出现错误..说
aws\u rds\u cluster.rds-aurora:error creating rds cluster:DBClusterNotFoundFault:source cluster rds-aurora-0在区域us-east-1中找不到
,所以我已经解释了我试图做的事情,希望你理解源代码rce db是一个带有1个db实例的RDS aurora群集。你是说我应该使用db实例作为源db而不是db群集吗?好的,下面是我要做的…我有一个RDS aurora群集,在us-east-1 regio中有一个我编写的RDS aurora实例
aws_rds_cluster.rds-aurora: Still creating... (10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (30s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m10s elapsed)
...
...
...
aws_rds_cluster.rds-aurora: Still creating... (1h59m40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1h59m50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m30s elapsed)