具有使用Terraform的RDS aurora创建跨区域读取副本簇的问题

问题描述 投票:1回答:2

我有一个[[RDS aurora群集在us-east-1中具有1个实例,并想要创建一个跨区域读取副本RDS aurora群集在1个实例中具有us-west-2

[尝试使用Terrform从RDS aurora群集创建跨区域读取副本时遇到2个问题

这是我的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。第一个问题是出现此错误

aws_rds_cluster.rds-aurora: error creating RDS cluster: InvalidVPCNetworkStateFault: Availability zone '[us-west-2a,us-west-2b,us-west-2c]' is unavailable in this region, please choose another zone set.

并且那些可用区确实存在,我相信我已经以正确的方式输入了值这是terraform如何获得可用区的值

... availability_zones.2635104823: "" => "us-west-2a,us-west-2b,us-west-2c" ...

这是正确的格式,并且像我说的那样存在可用区。.我从头开始创建RDS,并且可以使用相同的格式,但是现在只有当我收到可用区不存在的错误时,才尝试创建跨区域读取副本。>

现在我已经可以通过添加1个AZ来解决下一阶段的问题。.但是问题仍然存在,我也想解决此问题

now接下来是下面的问题#2 ...主要问题

2。现在的主要错误是我认为存在为带有Terraform的RDS aurora创建跨区域读取副本时存在的错误

地形申请在创建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)

所以我认为存在一个错误,其中Terrafrom不知道何时创建RDS集群,因此它可以按照上面的main.tf文件中的指定在其下创建RDS实例

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

我在us-east-1中有一个实例中有1个实例的RDS aurora群集,并且想要在us-west-2中创建一个其中有1个实例中的跨区域读取副本RDS aurora群集,好像有2个问题。 ..

terraform amazon-rds terraform-provider-aws amazon-rds-aurora
2个回答
0
投票
确定,因此您正在创建只读副本群集而不是只读副本实例,是否将数据库实例或群集指定为源?您应将源设置为集群中的db_instance,而不是源集群。如果您使用的是多可用区HA源,则最好是只读副本。

0
投票
我的意思是,根据您提供的TF代码,很难看到您正在做什么。源集群TF代码和您的变量定义在哪里?
© www.soinside.com 2019 - 2024. All rights reserved.