REDIS

상황 레디스 압축파일을 해제한 후 make 명령어를 수행하면 아래처럼 jemalloc No such file or directory 오류가 발생합니다. 1 2 3 4 5 6 7 8 9 10 11 [root@redis-5.0.7]# make cd src && make all make[1]: Entering directory `/opt/redis-5.0.7/src' CC Makefile.dep make[1]: Leaving directory `/opt/redis-5.0.7/src' make[1]: Entering directory `/opt/redis-5.0.7/src' CC adlist.o In file included from adlist.c:34:0: zmalloc.h:50:10: fatal error..
레디스 AOF 시 오류 발생 레디스 aof 시 아래와 같은 오류가 발생했습니다. 이 에러는 AOF 쓰기작업을 하는데 디스크에 쓰는 속도가 느려 레디스가 느려질 수 있다는 의미입니다. Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis. AOF 와 관련된 레디스 옵션 (일부) appendonly aof 쓰기를 활성화 하는 여부입니다. appendfsync always : 명령어가 수행될 때마다 aof 파일로 디스크 쓰기를 진행합니다. everysec : 1초에 한번씩 aof 파일로 디스크 쓰기를 진행..
개요 레디스는 메모리DB 입니다. 메모리DB 이기 때문에 레디스에서 사용하는 메모리 할당량을 확실히 알아야 합니다. 메모리가 부족하게 되면 OOM 에 의해 프로세스가 죽을 수 있기 때문입니다. 그래서 메모리 사용량에 대해 조사하던 도중 SAVE 동작 시 자식프로세스가 생성되어 rdb 파일을 백업하는 데 이 때 메모리를 2배로 사용한다. 라는 글이 있어서 이에 대한 테스트를 진행해 보려고 합니다. 메모리를 2배로 사용한다는 의미는 아래와 같습니다. 레디스 프로세스 (부모) 가 메모리상의 데이터를 가지고 있고, SAVE 시 자식 프로세스가 생성되어 메모리상의 데이터를 전체 복사 후 rdb 파일로 내려쓴다. 참고로 이 포스팅에서의 SAVE 동작은 사용자가 직접하는게 아니라 레디스 엔진에서 save 옵션값으로 ..
개요 Redis 와 Sentinel 로 구성된 레디스가 있습니다. Jedis 를 사용하는 어플리케이션에서 Sentinel 에서 마스터 IP 를 조회하여 Redis 에 접속하고 있습니다. sentinel failover 를 수행한 후 어플리케이션에서 새로운 마스터를 인지하지 못하는 상황이 발생했습니다. 모든 Sentinel 에서는 새로운 마스터 IP 로 변경되어 있는 상태였습니다. 원인에 대한 범위 좁히기 왜 어플리케이션에서 새로운 마스터를 찾지 못했을까 Jedis 라이브러리를 사용하는 어플리케이션에서 Pub/Sub 기능을 이용하여 Sentinel 의 메시지를 받고 이 Sentinel 메시지 중 +switch-master 의 메시지를 받으면 Failover 가 수행되도록 쓰레드로 구현이 되어 있습니다. 그..
개요 Redis 에서는 Sentinel 기능이라는 마스터/슬레이브를 모니터링 하는 기능을 제공합니다. Sentinel 은 일명 모니터를 하는 기능으로 마스터/슬레이브를 정해주며 마스터 노드가 Failover 되었을 때 슬레이브 노드를 마스터로 구동 후, 마스터로 접속할 수 있도록 해주는 기능입니다. Jedis 라이브러리에서는 이렇게 Failover 되었을 때 센티넬로부터 새로운 마스터 정보를 얻어와서 변경된 마스터로 접속할 수 있도록 제공하고 있습니다. 테스트 환경 테스트를 하기 위한 환경은 아래와 같고 모든 테스트는 리눅스 환경에서 이루어졌습니다. Jedis 를 사용한 자바 코드도 리눅스 환경에서 동작합니다. OS Ubuntu 18.04 Redis Master 127.0.0.1 6161 Redis Sl..
상황 아래와 같은 구조에서 레디스 Failover 테스트 중에 failover-abort-no-good-slave 오류가 발생했습니다. 원인 레디스 접속을 위해서는 암호를 입력하도록 설정된 상태입니다. 그러나 센티넬에서는 레디스 인증관련 암호설정이 없었습니다. 레디스 conf 파일 requirepass "P@ssword" masterauth "P@ssword" 센티넬 conf 파일 # sentinel auth-pass TEST P@ssword 시나리오 - 해결방법 센티넬 conf 파일에 auth-pass 설정이 안됨 센티넬에서 레디스 TEST 인스턴스의 암호가 없기 때문에 접속하여 replication 정보를 얻어올 수 없었고, failover-abort-no-good-slave 로그가 기록되었습니다. ..
상황 2.8.4 버전에서 2.8.24 버전으로 업그레이드 후 발생하였습니다. 구조는 다음과 같습니다. 테스트 환경에서 재연에 필요한 인스턴스만 구성하였습니다. 업그레이드 작업 방법 단계 작업내용 1 Sentinel 인스턴스 다운 2 Redis Slave 인스턴스 다운 3 Redis Master 인스턴스 다운 4 redis / sentinel 바이너리 2.8.24 버전으로 교체 5 Redis Master 인스턴스 구동 6 Redis Slave 인스턴스 구동 7 Sentinel 인스턴스 구동 8 Sentinel 페일오버 테스트 진행 (오류 발생) 원인 Redis conf 파일에는 rename-command 의 옵션이 있었습니다. 이 옵션이 있는 경우, failover 시 아래와 같은 오류가 발생하는 것으로 ..
꽁담
'REDIS' 태그의 글 목록