본문 바로가기

시스템/REDIS

(7)
[REDIS] Sentinel + Haproxy + Keepalived를 이용한 Redis HA LoadBalance 구축 (2) 구축 정보 Spec 서버 3대 CentOS7 x86_64 TEST1 : 10.10.10.240, Redis Slave TEST2 : 10.10.10.241, Redis Master TEST3 : 10.10.10.242, Redis Slave VIP : 10.10.10.243 Redis Write Port 5000 Redis Read Port 5001 버전 Keepalived : keepalived-1.3.5-19.el7.x86_64 Haproxy : haproxy-1.5.18-9.el7_9.1.x86_64 Redis : 4.0.9 설치 Redis설치는 여기 참조. Keepalived, Haproxy는 yum 패킷지 관리자로 설치 yum install keepalived haproxy 설정 Keepaliv..
[REDIS] Sentinel + Haproxy + Keepalived를 이용한 Redis HA LoadBalance 구축 (1) 기 구축 Redis 시스템 구조 RDB(no save) + Replication 총 3대 구성 Slave 2(REDIS-2,3)대가 각각 Master(REDIS-1)에 Repl 동기화를 하는 구조 Master → RW, Slave(REDIS-2) → RO 로 클라이언트에서 RIP로 직접 접근 문제점 Master Down 시 Role change 되지 않음. → 쓰기 실패하고 수동 Role Change 지연 발생 Redis의 Role이 변경 된 경우 클라이언트에서 RW, RO Redis의 IP, Port의 Sync 필요. RDB만 사용하고 SAVE 하지 않아 Data 유실 위험 Redis + Sentinel + Haproxy + Keepalived 를 이용한 변경 구성 Keepalived VRRP를 이용한..
[REDIS] 메모리 단편화(memory fragmentation) 해소 이슈 파악 redis 의 mem_fragmentation_ratio 값이 1.5로 설정 되어 있었고 이 수치를 넘어 서게 될 경우 단편화를 의심해 봐야 한다고 판단함. mem_fragmentation_ratio 값이 점점 상승하여 1.5를 넘어섬 redis info memory > info ... # Memory used_memory:21303688 used_memory_human:20.32M used_memory_rss:32083968 used_memory_peak:25667096 used_memory_peak_human:24.48M used_memory_lua:36864 mem_fragmentation_ratio:1.51 mem_allocator:jemalloc-3.6.0 ... used_memory..
[REDIS] AOF & RDB 결론 AOF(Append Only File) 와 RDB(Snapshot) 를 어떤 식으로 운영 해야 할까? - 데이터가 좀더 중요한 환경이라면 AOF와 RDB를 동시에 운영하고 AOF를 기본으로 RDB를 서브로 운영한다. - AOF의 appendfsync 를 everysec으로 하고 rewrite 기능을 사용하여 데이터 유실을 최소화 하고 RDB를 옵션으로 운영하여 복구 시간에 이점을 가져간다. AOF(Append Only File) AOF는 명령이 실행 될때 마다 기록. save 옵션에 따라 운영되는 RDB에 비해 데이터 손실이 거의 없음. 입력/수정/삭제 명령이 실행될때 마다 기록되며 조회 명령은 기록되지 않음. AOF 파일이 무한히 커지는 것을 방지 하고자 rewrite을 사용함. rewrite는 ..
[REDIS] Config 설정 기본 설정 bind 0.0.0.0 - bind IP, default 127.0.0.1 - 최대 16개 까지 지정가능 port 8301 - bind port - default 6379 tcp-backlog 511 - tcp half open시 저장할 backlog 값 - 이 값은 sysctl의 syn_backlog, somaxconn값과 연관이 있음. # redis config tcp-backlog 1024 # sysctl sysctl -w net.ipv4.tcp_max_syn_backlog=1024 sysctl -w net.core.somaxconn=1024 - somaxconn = soket max connection 약어 - syn_backlog = tcp half open 시 syn+ack flag..
[REDIS] 기본 명령어 1. redis cli 접속 redis-cli -p -a 2. redis 정보 > info 3. data 저장 > set 4. data 조회 > get 5. key 검색 > keys > keys * > keys *pl* 6. aof rewrite - 설정상에서 말고 cli상에서 직접 수행하는경우이며 백그라운드로 수행 > bgrewriteaof Background append only file rewriting started 7. rdb 파일저장 # 백그라운드 수행 > bggsave # 포그라운드 수행: 클라이언트 쪽 명령 처리 불가 > save 8. 종료 # 종료시 저장할지 말지 선택 > shutdown [save|nosave] 9. config [set|get] - config set : 설정 값을 r..
[REDIS] 설치 1. 설치 배포판 - redis 4.0.9 + CentOS7 x86_64 2. 기본 패키지 설치 > yum install gcc gcc-c++ tcl 3. sysctl.conf 수정 3.1 Memory 설정 메모리 사용량이 허용량을 초과할 경우, overcommit을 처리하는 방식 결정하는 값을 "항상"으로 변경한다. 기본 값은 "0"이다. 0 : 커널 기본값, Heuristic 하게 Overcommit을 허용 (Page Cache + Swap Memory + Slab Reclaimable 값이 요청한 메모리 수 보다 클 경우 허용) 1 : 항상 Overcommit을 허용 2 : 제한적 Overcommit 허용 $ sudo sysctl vm.overcommit_memory=1 # or $ sudo ech..