SearchDeveloper (99) 썸네일형 리스트형 13 레디스 운영하기 (끝) 레디스를 잘 운영하기 위한 대시보드 모니터링, 레디스 마이그, 장애 유발 가능한 환결 설정/커맨드를 알아보자 레디스 모니터링 구축하기익스포터: 상태를 실시간으로 스크랩해 메트릭 수집하는 프로그램프로메테우스: 메트릭 기반 오픈소스 모니터링 시스템지정한 타깃(익스포터)으로 HTTP로 직접 접근해 시계열 데이터를 pull방식으로 수집한다.promQL 쿼리 지원그라파나: 오픈소스 메트릭 데이터 시각화 도구프로메테우스 및 여러 데이터소스를 추가해 메트릭을 시각화해서 볼 수 있다.얼럿 매니저: 프로메테우스에서 설정한 알람 규칙 임계치 도달하면 얼럿 매니저를 통해 sms/이메일/슬랙 등으로 전송할 수 있다. 설치익스포터 설치노드 익스포터레디스 익스포터얼럿 매니저 설치프로메테우스 설치그라파나 설치 레디스 플러그인으로 .. 12장 클라이언트 관리 레디스가 클라이언트 처리/관리하는 방법, 성능 향상 위한 파이프라이닝, 클라이언트 사이드 캐싱에 대해 알려주겠다 클라이언트 핸들링TCP 포트, 유닉스 소켓을 통해 연결레디스는 클라 연결 수락하는데 TCP 포트, 유닉스 소켓을 사용할 수 있다.일반적으로 TCP 포트로 받음port 6379설정파일에서 unixsocket, unixsockerperm 설정하면 원하는 경로에 소켓 파일 생성 가능unixsocket /tmp/redis.socketunixsocketperm 777※동일한 서버 안에 앺과 레디스가 같이 있는 구조면 성능 향상※.socket 파일은 데이터 저장 용도가 아니라 데이터 주고받는 용도임이후 클라가 해당 소켓 파일 경로로 레디스 서버 연결 가능 (redis-cli -s /tmp/redis.so.. 11장 보안 원본 저장소 데이터 들고 있는거고 pub/sub 메시지 전달자 역할이기 때문에 보안은 중요하다 커넥션 제어커넥션을 제어하는 3가지 방법bind10.0.0.2, 127.0.01만 레디스 접근 가능bind: 서버는 여러 개의 네트워크 인터페이스를 가질 수 있다.여러 IP 중 어떤 IP만 레디스 접근 가능하게할건지 지정한다.0.0.0.0 혹은 * 로 설정하면 모든 연결 허용특정 값 설정하는 것 권장 패스워드이전 버전각 인스턴스에 하나의 패스워드만 설정 가능 (requirepass)# 비번 설정 or redis.confCONFIG SET requirepass password-a (auth)로 redis-cli 접속redis-cli -a password혹은redis-cliAUTH password### 6버전 이후.. 10장 클러스터 Lettuce client 설정에러 응답이 와야 레디스 클러스터 failover가 실행될텐데 AWS 랙 화재로 응답 자체가 안 오는 상황이없음(해결) periodic refresh는 주기적으로 강제 새로고침으로 해결 가능레투스는 flag가 fail 난 노드를 자동으로 필터링 해주지 않음(해결)코드에서 수동으로 토폴리지에서 제외해줌 레디스 클러스터와 확장성확장성(scalability): 증가하는 트래픽에 유연하게 대응할 수 있는 능력스케일 업: 수직 확장.서버 하드웨어를 높은 사양으로 업그레이드 (디스크, cpu, 메모리)스케일 아웃: 수평 확장. 장비 추가 레디스에서의 확장성키 eviction이 자주 발생한다면? 메모리 스케일 업 고려키 eviction: 레디스가 maxmemory만큼 데이터 차 있는데 .. 9장 센티널 고가용성 기능이 필요한 이유만약 마스터가 장애나서 수동으로 failover해야하는 상황이라면복제본에서 REPLICA OF ON ONE 입력해 읽기 전용 상태 해제앺 코드에서 레디스 엔드포인트를 복제본 IP로 변경 후 앺 배포과정을 거쳐야한다. 그럼 장애 처리가 지연돼 서비스 기능의 문제로 이어진다.또한 캐시 look aside 구조라면 레디스 장애날 동안 MYSQL 같은 원본 DB로 요청이 집중돼 서버 부하 급증돼 서비스 영향 끼칠 수 있다.센티널 (Sentinel)레디스 자체 고가용성 기능데이터 저장하는 레디스 인스턴스랑 다른 역할 하는 별도 프로그램센티널의 자동 failover 사용하면 마스터 장애나도 다운타임 최소화할 수 있다.센티널 기능모니터링: 마스터, 복제본 인스턴스 상태 실시간 확인자동 페일.. 8장 복제 가용성(Availability)Availability = Available for Use Time / Total Time서비스를 정상적으로 사용할 수 있는 시간의 비율가용성이 높은 시스템을 고가용성 시스템이라고 한다.레디스에서 고가용성을 확보하는 법복제: 마스터 노드 데이터를 복제본 노드로 실시간 복사하는 기능. 마스터 장애 나도 데이터는 복제본에서 챙길 수 있음 (8장)자동 페일오버: 마스터에서 발생한 장애 감지해서 클라이언트 연결을 복제본 노드로 자동으로 redirection하는 기능. 수동으로 레디스 엔드포인트 변경할 필요 없어 빠른 장애 조치 가능 (9장)레디스에서의 복제 구조일단 운영중인 서비스에 복제본 노드 추가하는 이유?하드웨어는 언제든지 고장날 수 있으니 마스터 DB 다운됐을 때 대신 사용.. 7장 레디스 데이터 백업 방법 레디스에서 데이터 영구 저장하기레디스는 메모리에서 관리되기 때문에 인스턴스가 재시작되면 모두 날라갈 가능성이 있으니 백업 정책은 중요하다.복제 정책도 있으나 서로 목적이 다르고(복제는 가용성, 백업은 데이터 복구), 의도치 않게 데이터 삭제 커맨드가 실행되면 복제 정책으로도 복구할 수 없다.백업하는 방법 2가지: RDB, AOFAOF(Append Only File): 메모리 변경있는 모든 쓰기 작업을 차례대로 기록, 복원할 때 커맨드 실행해가며 데이터 재구성RDB(Redis Data Base): 스냅샷 방식. 일정 시점에 메모리에 저장된 데이터 전체 저장실제로 RDB는 바이너리 형태로, AOF는 RESP(레디스 프로토콜)형태로 저장된다.장단점RDB: AOF보다 복원이 빠르나 특정 시점으로 복구는 불가능A.. 6장 레디스를 메시지 브로커로 사용하기 1.pub/sub(publish, subscribe), 2.메시징 큐(list), 3.이벤트 스트림(stream)메시지 브로커메시지 브로커가 필요한 이유최근 서비스 아키텍쳐(MSA)에선 각 애플리케이션 간 느슨하면서 탄탄한 상호 작용이 필요하기 때문핵심 역할모듈 간 통신에서 커넥션 실패 같은 장애가 바로 전파되지 않게 비동기 통신으로 하는게 권장된다. 메시지 브로커를 사용하면 서비스 간 통신이 불가능하더라도 바로 장애로 이어지지 않게, 당장 메시지 처리하지 못해도 메시지를 쌓아두어 나중에 처리할 수 있는 채널을 만들어둔다.크게 두 형태: 메시징 큐, 이벤트 스트림 메시징큐와 이벤트 스트림메시징 큐생산자-소비자이벤트 스트림발행자-구독자방향성 관점메시징 큐: 생산자는 소비자의 큐로 직접 push 한다. 같은.. 5장 레디스를 캐시로 사용하기 캐시원본 데이터 저장소보다 더 빠르고 효율적으로 접근할 수 있는 임시 데이터 저장소목표: 응답속도 줄이기부가 효과: 원본 저장소 리소스 줄일 수 있고 원본 저장소가 장애난 상황에서 캐시에서 가져오기 때문에 장애 영향 줄일 수 있다. 캐시 적용하면 좋은 경우원본 저장소에서 매번 계산을 해서 가져온다거나 읽기 시간이 오래걸리는 경우캐시에서 가져오는 속도가 더 빠른 경우캐시에 저장된 데이터가 잘 변하지 않는 경우자주 검색되는 데이터일 경우 캐시로서 레디스 쓰면 좋은 점키-값 또는 다양한 자료구조 지원으로 저장/반환할 때 변환 과정없어도 돼서 간단하다.메모리 위에 존재해서 굉장히 빠르다.센티널, 클러스터 사용하면 자동으로 장애 감지해 페일오버돼서 고가용성이다.클러스터 사용하면 스케일아웃도 쉽다. 캐싱 전략: 레.. 4장 레디스 자료 구조 활용 사례 실시간 리더보드 - sorted set실시간 리더보드에 sorted set이 좋은 이유실시간으로 정렬돼야하는데 sorted set은 저장할때부터 정렬되므로 조회가 빠름 ZADD, ZREVRANGE, ZINCRBY, ZUNIONSTORE127.0.0.1:6379> ZADD score:250116 100 player:1 (integer) 1127.0.0.1:6379> ZADD score:250116 500 player:2(integer) 1127.0.0.1:6379> ZADD score:250116 700 player:3(integer) 1127.0.0.1:6379> ZREVRANGE score:250116 0 2 withscores1) "player:3"2) "700"3) "player:2"4) "500".. 이전 1 2 3 4 ··· 10 다음