terrafromでredisを立てる場合、aws_elasticache_cluster
を使う方法とaws_elasticache_replication_group
を使う方法がある。
aws_elasticache_cluster
の場合ひとつのノード(cluster mode disabled)しか立てられない 。
レプリカを使う場合やCluster modeを使う場合は、aws_elasticache_replication_group
を使うことになる。
cluster_mode
ブロックの定義とパラメータグループのcluster-mode-enabled
を設定することで、Cluster modeのRedisが立ち上がる。
最初パラメータグループの設定に気づかなかったので、かなり時間を溶かしてしまったよね、、
resource "aws_elasticache_replication_group" "main" { replication_group_id = "${var.sysname}-${var.env}" replication_group_description = "redis cluster for ${var.sysname} ${var.env}" engine_version = "5.0.6" node_type = var.node_type port = 6379 parameter_group_name = aws_elasticache_parameter_group.main.id subnet_group_name = aws_elasticache_subnet_group.main.id security_group_ids = [aws_security_group.elasticache.id] maintenance_window = "mon:21:00-mon:22:00" snapshot_window = "20:00-21:00" snapshot_retention_limit = var.snapshot_retention_limit automatic_failover_enabled = true auto_minor_version_upgrade = true at_rest_encryption_enabled = true kms_key_id = aws_kms_key.main.arn transit_encryption_enabled = false apply_immediately = true // ここ cluster_mode { replicas_per_node_group = var.num_cache_replicas num_node_groups = var.num_cache_nodes } tags = { Name = "${var.sysname}-${var.env}-redis-cluster" SysName = var.sysname Env = var.env } } resource "aws_elasticache_parameter_group" "main" { name = "${var.sysname}-${var.env}-redis-cluster-on" family = "redis5.0" // ここ parameter { name = "cluster-enabled" value = "yes" } }
参考
Resource: aws_elasticache_replication_group - terraform Resource: aws_elasticache_cluster - terraform