이번 강의에서는 Redis가 SysOps 시험에서 어떻게 보일지
심층 강의를 진행하겠습니다
먼저 Redis 크기를 조절하는 방법을 아셔야 합니다
Redis에는 두 가지 모드가 있습니다
cluster(클러스터) 모드 비활성화와
클러스터 모드 활성화가 있습니다
클러스터 모드 비활성화의 경우
노드 그룹이 하나입니다
주 노드가 하나 있고 복제 노드가 0에서 최대 5개까지 있습니다
따라서 수평적인 크기 조절을 하는 경우
인스턴스를 추가하거나 제거하는 것을 의미합니다
노드 그룹에서 리드 복제를 추가하고
제거하는 것만큼 쉽습니다
아시다시피 최대 5개의 복제가 허용됩니다
Redis에서 할 수 있는 다른 종류의 크기 조절은
수직적 크기 조절입니다
이 경우 위 또는 밑으로 조절하여
더 크거나 작은 노드 유형으로 옮기는 것입니다
즉, LST 캐시 클러스터 뒤의
인스턴스 유형을 바꾸는 것입니다
이를 위해 Redis에서도
원클릭 작업을 할 수 있습니다
그러나 내부적으로
탄력적 캐시가 새로운 노드 그룹을
만든다는 것을 아셔야 합니다
그 다음 기존 노드 그룹에서 새 노드 그룹으로
데이터 복제가 있어야 합니다
마지막으로 데이터 복제 후에
DNS 업데이트가 발생하는데
LST 캐시 서비스에 의해 발생하여
애플리케이션에 투명하게 적용됩니다
이로 인해 새로운 노드 그룹에 직접 연결이 가능합니다
지금까지 클러스터 모드 비활성화였습니다
다음은 클러스터 모드 활성화입니다
조금 더 복잡해집니다
두 가지 방법의 크기 조절이 있습니다
첫 번째는 온라인 크기 조절입니다
크기 조절 과정에서
클러스터가 운영 중인 상태입니다
즉, 다운다임이 없으며
성능이 저하될 수 있습니다
그러나 Redis 클러스터가 운영됩니다
그리고 오프라인 크기 조절이 있습니다
이는 전체 클러스터를 오프라인으로 가져오는 것입니다
따라서 크기 조절 과정에서 요청을
받아드릴 수 없습니다
그러나 구성 변화를 더 할 수 있습니다
예를 들어 노드 유형 또는 엔지 버전을 업그레이드 할 수 있습니다
클러스터 모드 활성화에서
수평적 크기 조절을 보면
resharding을 할 수 있습니다
이는 shard를 추가하고 제거하면서
크기 조절을 하는 것입니다
즉, 클러스터 모드 활성화에서
기억할 것은 다수의 shard가 있기 때문에
shard를 추가하면서 수평적으로 크기 조절을 할 수 있는 것입니다
또는 shard 재균형을 실행하여
키 공간을 shard 간에
최대한 분포할 수 있습니다
이 수평적 크기 조절은
온라인과 오프라인 모드에서 지원됩다
즉, 수평적 크기 조절을 원한다면
사용할 수 있다
다음은 수직적 크기 조절입니다
노드 유형을 변경하는 것을 의미합니다
read/write 역량을 변경하는 것으로
크거나 작은 노드 유형으로 변경할 수 있습니다
온라인 크기 조절에서 지원되며
마찬가지로 원클릭 솔루션입니다
이 부분은 이면에서 발생합니다
다음은 모니터링할 Redis 지표입니다
캐시 기능을 위해 사용할 수 있는
지표가 여러 가지 있습니다
첫 번째는 eviction(퇴거)입니다
이는 새로운 write를 허용하기 위해
캐시가 퇴거한 만료되지 않은 객체의 수를 의미합니다
즉, 메모리가 과충전 된다는 의미입니다
따라서 만료된 객체를 퇴거할 수 있는
퇴거 정책이 필요합니다
즉, 예를 들어
가장 덜 사용된 객체를
자동으로 퇴거할 수 있습니다
이를 통해 퇴수를 줄일 수 있습니다
다른 예로 메모리 확보를 위해
더 큰 노드
유형을 원한다거나
아니면 Redis를 클러스터 모드 활성화에서 사용하는 경우
노드를 추가해서 크기 조절하는 것을 예로 들 수 있습니다
이런 경우 CPU 사용을 모티터링해야 합니다
즉, 사용량이 너무 높다면
더 큰 노드 시간으로 크기 조절을 하거나
노드를 추가하여 수평적으로 크기 조절을 할 수 있습니다
또한 Swap Usage가 50메가바이트 이상이면 안됩니다
초과하는 경우
메모리 설정을 확인해야 합니다
다음으로 CurrConnections가 있습니다
이는 Redis 클러스터의 현재 작동 중인
연결 숫자를 의미합니다
너무 높면
애플리케이션에 안 좋은 행동이 나올 수 있습니다
매번 Redis에 연결 시도를 한다면
좋지 않은 경우입니다
그리고 애플리케이션 행동을 봅니다
다음은 DatabaseMemoryUsagePercentage입니다
메모리 사용 비율을 의미합니다
다음은 네트워크 In/Out입니다
그리도 ReplicationBytes와 ReplicationLag가 있습니다
Redis 클러스터 내의
데이터 복제와 관련된
정보를 제공합니다
당연히 복제 바이트가 높아야 하며
복제 지연은 낮아야 합니다
이로 인해 복제, 재복제 그리고 주 노드 간
지연이 없는 것입니다
여기까지 Redis에 대해 알아야 하는 모든 것입니다
모든 것이
직감적으로 이해되시기를 바랍니다
한꺼번에 보는 것이 도움이 되실 것입니다
다음 강의에서 뵙겠습니