我使用这个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中的所有副本,但是得到了错误创建弹性复制组:无效参数组合:PreferredCacheClusterAZs只能为一个节点组指定。
我使用Terraform v0。12.17和aws供应商v2。34.0.
如本文所述,为问题添加描述。
出现这种情况的原因是,availability_zones
参数与支持Redis群集模式的复制组不兼容,其中有多个碎片。
在Elasticache SDK中,这是可用性_zones
设置的参数的完整文档:
// A list of EC2 Availability Zones in which the replication group's clusters
// are created. The order of the Availability Zones in the list is the order
// in which clusters are allocated. The primary cluster is created in the first
// AZ in the list.
//
// This parameter is not used if there is more than one node group (shard).
// You should use NodeGroupConfiguration instead.
//
// If you are creating your replication group in an Amazon VPC (recommended),
// you can only locate clusters in Availability Zones associated with the subnets
// in the selected subnet group.
//
// The number of Availability Zones listed must equal the value of NumCacheClusters.
//
// Default: system chosen Availability Zones.
PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
因此,为了显式地多次为Redis群集模式禁用或单个分片复制组的相同可用性区域配置availability_zones
,该属性确实需要像aws_elasticache_cluster
资源的preferred_availability_zones
那样进行迁移。
对于支持Redis群集模式的复制组(例如,在Terraform中使用Cluster_模式时),我们目前无法通过节点组配置
参数设置可用区域,这可能需要更改群集模式
参数。
在我看来,目前的Terraform aws提供商不可能做到这一点(https://github.com/terraform-providers/terraform-provider-aws/issues/5104)
然而,我发现了一个有用的解决方案(它不允许像AWS控制台那样为每个特定节点设置任意AZ,但它涵盖了最常见的用例):如果您通过subnet_group_name
键为复制组指定VPC子网,缓存实例将在这些子网的AZ中创建(子网组中子网的顺序很重要)。
地形配置示例:
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。我还没有对每个节点组使用多个副本进行测试。
语境 App Engine服务是区域性的。Cloud Datastore虽然具有多区域位置,其中数据在同一位置内的多个区域复制,但尚不清楚当使用其中一个多区域位置时,App Engine service是否也具有多区域可用性。我们理解App Engine在一个区域中使用多个区域来提供高可用性,但需求文档要求设置多区域(主动-主动)App Engine。 使用2个不同的GCP项目在2个不同的地区承载
我们正在使用Spring数据,并试图创建一个带有子查询的自定义查询,结果投影有一个数组和其他属性,我们的问题是子查询数组。 预测如下:
以下是具有负值的区域图的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个带负值的区域图的示例。 配置 (Configurations) 我们使用AreaChart类来显示具有负值的基于区域的图表。 // area chart AreaChart chart = new AreaChart(); 例子 (E
我们已经在Highcharts Configuration Syntax一章中看到了用于绘制此图表的配置 。 现在让我们考虑以下示例来进一步理解基本面积图。 例子 (Example) HelloWorld.java package com.wenjiangs.client; import org.moxieapps.gwt.highcharts.client.Chart; import org.m
以下是具有负值的面积图的示例。 我们已经在Highcharts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们讨论具有负值的面积图的示例。 例子 (Example) highcharts_area_negative.htm <html> <head> <title>Highcharts Tutorial</title> <sc
本文向大家介绍js如何实现打印指定的区域?相关面试题,主要包含被问及js如何实现打印指定的区域?时的应答技巧和注意事项,需要的朋友参考一下 css setting query print , hidden unwanted print DOM; call , OR using Chrome right-click menu js https://developer.mozilla.org/en-U