Elasticache 파라미터 관리

RDS 파라미터 그룹 설정

  • Elasticache 인스턴스에서 사용할 파라미터 값을 parameter group을 활용하여 관리할 수 있습니다.

  • 본 가이드에서는 Redis5.0을 기준으로 작성되었습니다.

  • 아래 파라미터 값들은 예시이므로 반드시 사용용도에 맞게 사용하시기 바랍니다.

Remote State 생성

  • RDS는 VPC 종속적인 서비스이므로 VPC 관련 정보가 필요합니다.

  • 이전에 설정했던 terraform/variables/var_global.tf 를 Soft Link로 첨부하실 후에 해당 값을 사용하여 remote_state.tf 파일을 생성합니다.

  • 이전에 정리해놓았던 var_global.tf 에서 vpc 정보를 가져와서 세팅합니다. 단순히 var_global.tf 파일만을 soft link로 참조함으로써 손쉽게 remote_state를 구성하실 수 있습니다.

  • Merge 함수는 서로 다른 두 Map을 하나로 합쳐주는 함수입니다. 중복되는 값은 뒤에 정의된 값을 기준으로 합니다.

vim terraform/databases/dayone-prod/dayonep_apnortheast2/remote_state.tf
# Set Configuration to use VPC Information via remote_state
# VPC backend configuration is located in terraform/variables/var_global.tf
data "terraform_remote_state" "vpc" {
  backend = "s3"
  
  # merge function is used to merge the key-value pairs from two different map
  config =  merge(var.remote_state.vpc.dayonepapne2, {"role_arn"=var.assume_role_arn} )
   
  # You can also set like this. 
  # You should define variables to variables.tf and value of them to terraform.tfvars  
  #config = {
  #  bucket       = var.remote_state_bucket
  #  region       = var.remote_state_region
  #  key          = var.remote_state_key
  #  role_arn     = var.assume_role_arn
  #  session_name = var.atlantis_user
  #}
}

Elasticache 파라미터 그룹 생성

vim terraform/databases/dayone-prod/dayonep_apnortheast2/dayone/elasticache_pg.tf
# Elasticache Parameter Group for redis
resource "aws_elasticache_parameter_group" "dayone_redis_cluster_pg" {
  name        = "dayone-cluster-${data.terraform_remote_state.vpc.outputs.shard_id}"
  description = "dayone Elasticache Redis Parameter Group"

  # Please use the right engine and version
  family      = "redis5.0"

  # List of cluster parameters
  parameter {
    name  = "cluster-enabled"
    value = "yes"
  }

  parameter {
    name  = "slowlog-log-slower-than"
    value = "50000"
  }

  parameter {
    name  = "lazyfree-lazy-eviction"
    value = "yes"
  }

  parameter {
    name  = "lazyfree-lazy-expire"
    value = "yes"
  }

  parameter {
    name  = "lazyfree-lazy-server-del"
    value = "yes"
  }

  parameter {
    name  = "active-defrag-cycle-max"
    value = "75"
  }
  parameter {
    name  = "active-defrag-cycle-min"
    value = "5"
  }
  parameter {
    name  = "active-defrag-ignore-bytes"
    value = "104857600"
  }
  parameter {
    name  = "active-defrag-max-scan-fields"
    value = "1000"
  }
  parameter {
    name  = "active-defrag-threshold-lower"
    value = "10"
  }
  parameter {
    name  = "active-defrag-threshold-upper"
    value = "100"
  }
  parameter {
    name  = "activedefrag"
    value = "no"
  }
  parameter {
    name  = "client-output-buffer-limit-normal-hard-limit"
    value = "0"
  }
  parameter {
    name  = "client-output-buffer-limit-normal-soft-limit"
    value = "0"
  }
  parameter {
    name  = "client-output-buffer-limit-normal-soft-seconds"
    value = "0"
  }
  parameter {
    name  = "client-output-buffer-limit-pubsub-hard-limit"
    value = "33554432"
  }
  parameter {
    name  = "client-output-buffer-limit-pubsub-soft-limit"
    value = "8388608"
  }
  parameter {
    name  = "client-output-buffer-limit-pubsub-soft-seconds"
    value = "60"
  }
  parameter {
    name  = "client-query-buffer-limit"
    value = "1073741824"
  }
  parameter {
    name  = "close-on-replica-write"
    value = "yes"
  }
  parameter {
    name  = "cluster-require-full-coverage"
    value = "no"
  }
  parameter {
    name  = "hash-max-ziplist-entries"
    value = "512"
  }
  parameter {
    name  = "hash-max-ziplist-value"
    value = "64"
  }
  parameter {
    name  = "hll-sparse-max-bytes"
    value = "3000"
  }

  parameter {
    name  = "lfu-decay-time"
    value = "1"
  }
  parameter {
    name  = "lfu-log-factor"
    value = "10"
  }
  parameter {
    name  = "list-compress-depth"
    value = "0"
  }
  parameter {
    name  = "lua-replicate-commands"
    value = "yes"
  }
  parameter {
    name  = "maxmemory-policy"
    value = "volatile-lru"
  }
  parameter {
    name  = "maxmemory-samples"
    value = "3"
  }
  parameter {
    name  = "min-replicas-max-lag"
    value = "10"
  }
  parameter {
    name  = "min-replicas-to-write"
    value = "0"
  }
  parameter {
    name  = "proto-max-bulk-len"
    value = "536870912"
  }
  parameter {
    name  = "repl-backlog-size"
    value = "1048576"
  }
  parameter {
    name  = "repl-backlog-ttl"
    value = "3600"
  }
  parameter {
    name  = "reserved-memory-percent"
    value = "25"
  }
  parameter {
    name  = "set-max-intset-entries"
    value = "512"
  }
  parameter {
    name  = "slowlog-max-len"
    value = "128"
  }
  parameter {
    name  = "stream-node-max-bytes"
    value = "4096"
  }
  parameter {
    name  = "stream-node-max-entries"
    value = "100"
  }
  parameter {
    name  = "tcp-keepalive"
    value = "300"
  }
  parameter {
    name  = "timeout"
    value = "0"
  }
  parameter {
    name  = "zset-max-ziplist-entries"
    value = "128"
  }
  parameter {
    name  = "zset-max-ziplist-value"
    value = "64"
  }
  parameter {
    name  = "rename-commands"
    value = ""
  }
}

결과 확인

Last updated