Redis configuration example

cat redis.conf 
port 6379
cluster-enabled yes
cluster-config-file /data/nodes.conf
cluster-node-timeout 5000
appendonly yes
appendfilename appendonly.aof
dbfilename dump.rdb
logfile /data/log.log

 

cluster-require-full-coverage

yes(default) : slave가 없는 master 노드가 다운되면 cluster 전체가 중지

no : slave가 없는 master 노드가 다운되더라도 cluster는 유지. 다만, 절반 이상의 노드가 다운되면 클러스터는 중지

데이터의 정합성이 중요하다면 yes, 일부 데이터가 유실되어도 괜찮으면 no

cluster-enabled

yes로 하면 cluster mode, no(default)로 하면 standalone mode

cluster-config-file 

클러스터의 상태가 변경될때 마다 상태를 기록

k exec -it redis-cluster-1 -- cat nodes.conf
d4c101ecd86542797df077d945f0329e55cfcd95 10.244.4.73:6379@16379 master - 0 1643072438406 3 connected 10923-16383
dc22da80db3ed3e4f956a53dbe3d527d72c56e87 10.244.4.71:6379@16379 master - 1643072438398 1643072438382 1 connected 0-5460
6a8fbdafa9f4fb0c5f3fa1c0bb943a2b2dc72f5d 10.244.4.77:6379@16379 master - 0 1643072438406 7 connected 5461-10922
c0ffb0eb52b8973a9f321cb6c5559a1b45ed304e 10.244.3.32:6379@16379 myself,slave 6a8fbdafa9f4fb0c5f3fa1c0bb943a2b2dc72f5d 0 1643072438381 7 connected
d197cc2d30c43780a8854bbd75c200c00ea5b417 10.244.4.74:6379@16379 slave d4c101ecd86542797df077d945f0329e55cfcd95 1643072438398 1643072438381 3 connected
85d745b2ff1f791fd5a81b1ba7710a1087ce844f 10.244.4.75:6379@16379 slave dc22da80db3ed3e4f956a53dbe3d527d72c56e87 1643072438398 1643072438382 1 connected
vars currentEpoch 7 lastVoteEpoch 0

cluster-node-timeout(millisecond)

레디스 노드가 다운되었는지 판단하는 시간(default: 15000)

cluster-slave-validity-factor

cluster 노드 다운시 해당 노드의 slave 노드를 마스터로 변경하는 장애 조치를 시작한다. 이때 마스터 노드와 slave 노드 간의 체크가 오랫동안 단절된 상태면 해당 slave는 승격 대상에서 제외된다. 이때 승격 대상에서 제외하는 파단 기준의 시간을 설정한다(default: 10)

계산식 : (cluster-node-timeout * cluster-slave-validity-factor) + repl-ping-slave-period

 

If set to zero, a replica will always consider itself valid, and will therefore always try to failover a master, regardless of the amount of time the link between the master and the replica remained disconnected.

port

방화벽을 사용하고 있다면 기본 포트에 10000을 더한 클러스터 버스 포트도 열려있어야 한다. 예를 들어 기본 포트로 6379를 사용한다면 16379번 포트도 같이 열어야 한다.

daemonize & logfile

no(default) : foreground

yes : background -> 리눅스 프롬프트가 바로 떨어짐(pidfile에 프로세스 id가 저장된다). log file을 지정해서 레디스 서버 로그를 기록하지 않으면 메시지가 날아간다.

 

백업 방식, AOF & RDB 

AOF는 명령이 실행될때 마다 기록되는 파일로서 데이터의 손실이 거의 없다.

RDB 파일은 특정한 간격마다 메모리에 있는 레디스 데이터 전체를 디스크에 쓴다.

  • RDB는 특정 시점의 메모리에 있는 데이터 전체를 바이너리 파일로 저장하는 것이다.
    AOF 파일보다 사이즈가 작다. 따라서 로딩 속도가 AOF 보다 빠르다.
    일반적으로 AOF 가 10초 걸린다면, RDB는 7초 정도로 생각하면 될 것이다.

*AOF를 기본으로 하고, RDB를 Option으로 하는 것을 권장.

*AOF와 RDB 파일 양쪽이 모두 존재할 경우 appendonly yes인 경우에는 레디스 서버 시작시 AOF 파일을 읽어 들이고, no인 경우 RDB 파일을 읽어들인다.

 

AOF configuration

appendonly(default: no)

장애 발생시 메모리에 기록된 데이터가 증발되는데 복구가 가능하도록 디스크에 쓰기 작업을 한다. 기본값으로 appendonly.aof 파일에 기록된다.

 

appendfsync

- always : 명령어 실행시마다 기록

- everysec(default) : 데이터를 모아 1초마다 디스크에 기록

- no : os에 쓰기 시점 처리를 위임

 

auto-aof-rewrite-percentage(0 - 100)

Default : 100

AOF 파일 사이즈가 숫자값 % 이상으로 커지면 rewrite 한다. %의 기준은 레디스 서버가 시작할 시점의 AOF 파일 사이즈를 기준으로 한다. Rewrite를 하면 rewirte 후 파일 사이즈를 기준으로 다시 계산한다.

 

auto-aof-rewrite-min-size

Default : 64mb

AOF 파일 사이즈가 64mb 이하면 rewrite를 하지 않는다. 파일 크기가 작은 경우 rewrite가 자주 발생하는 것을 방지

 

RDB configuration

dbfilename

RDB 파일명을 지정한다.

save

RDB 저장 시점을 지정할 수 있다. number of key modifications per second (Defaut : 900 1)


- http://redisgate.kr/redis/configuration/persistence.php

- https://programmer.help/blogs/redis-configuration-master-slave-cluster.html

- https://redis.io/topics/cluster-tutorial

'빅데이터 > Redis Cluster' 카테고리의 다른 글

Redis 주요 명령어  (0) 2022.02.08
Lettuce Configuration(RedisTemplate)  (0) 2022.02.08
Redis Cluster 장애 복구  (0) 2022.02.08
Redis Cluster Overview  (0) 2022.02.08

+ Recent posts