gpt4 book ai didi

amazon-web-services - Terraform:具有指定可用区的 ElastiCache Redis 集群?

转载 作者:行者123 更新时间:2023-12-04 01:36:57 25 4
gpt4 key购买 nike

我使用这个 Terraform 示例创建了一个 ElastiCache Redis 集群(启用了集群模式):
https://www.terraform.io/docs/providers/aws/r/elasticache_replication_group.html#redis-cluster-mode-enabled

resource "aws_elasticache_replication_group" "example" {
replication_group_id = "example-group"
engine_version = "5.0.5"
node_type = "cache.r5.large"
port = 6379
automatic_failover_enabled = true

cluster_mode {
replicas_per_node_group = 1
num_node_groups = 6
}
}

但是如何为集群和副本指定可用性节点?可以通过 AWS 控制台实现。我希望添加 availability_zones = ["us-east-1a", "us-east-1c"]指定所有主节点必须在 us-east-1a 中,所有副本必须在 us-east-1c 中,但得到 Error creating Elasticache Replication Group: InvalidParameterCombination: PreferredCacheClusterAZs can only be specified for one node group.
我使用 Terraform v0.12.17 和 aws provider v2.34.0。

最佳答案

在我看来,这对于当前的 Terraform aws 提供程序 ( https://github.com/terraform-providers/terraform-provider-aws/issues/5104 ) 来说是不可能的

但是,我找到了一个有用的解决方法(它不允许像 AWS 控制台那样为每个特定节点设置任意可用区,但它涵盖了最常见的用例):
如果您通过 subnet_group_name 键为复制组指定 VPC 子网,则将在这些子网的 AZ 中创建缓存实例(子网组中子网的 顺序 事项 )。

示例 Terraform 配置:

resource "aws_elasticache_subnet_group" "redis_subnet_group" {
name = "example-subnet-group"
subnet_ids = ["subnet-123", "subnet-456"]
}

resource "aws_elasticache_replication_group" "redis_replication_group" {
replication_group_id = "example-replication-group"
engine_version = "5.0.5"
node_type = "cache.r5.large"
port = 6379
automatic_failover_enabled = true
subnet_group_name = aws_elasticache_subnet_group.redis_subnet_group.name

cluster_mode {
replicas_per_node_group = 1
num_node_groups = 6
}
}

结果:我得到了一个 6 分片集群,所有主节点都位于子网 123 的 AZ 中,所有副本位于子网 456 的 AZ 中。我没有用每个节点组一个以上的副本对其进行测试。

关于amazon-web-services - Terraform:具有指定可用区的 ElastiCache Redis 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59194562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com