Sentinel 모니터링을 통해 고가용성 Redis 데이터베이스를 생성하는 방법

카테고리 보기

Sentinel 모니터링을 통해 고가용성 Redis 데이터베이스를 생성하는 방법

3 분 읽음

회사 개요 #

Redis 는 메시지 브로커, 캐시 및 키-값 데이터베이스로 사용할 수 있는 오픈 소스 인메모리 데이터 구조 저장소입니다. 해시, 리스트, 세트, ​​정렬된 세트, 비트맵, 지리 공간 인덱스, 하이퍼로그 등 다양한 데이터 구조를 지원합니다.

Redis의 독특한 점은 저장소이자 캐시로 간주될 수 있다는 것입니다. Redis는 주 컴퓨터 메모리에서 데이터를 수정하거나 읽을 수 있도록 설계되었습니다.

Redis는 Redis Sentinel을 통한 고가용성과 Redis Cluster를 통한 자동 파티셔닝 등 다양한 기능을 제공합니다 . 또한, Redis는 슬레이브 인스턴스가 마스터 인스턴스의 정확한 복제본이 될 수 있도록 하는 복제 메커니즘을 갖추고 있습니다. 슬레이브는 연결이 끊어질 때마다 자동으로 마스터에 다시 연결되며, 마스터의 정확한 복제본이 되는 것을 목표로 합니다.

Redis Sentinel은 Redis에 고가용성을 제공하므로 많은 경우 인간의 개입 없이 자동으로 장애를 처리할 수 있을 뿐만 아니라 모니터링, 알림 등의 다른 작업도 제공하고 클라이언트에 대한 구성 공급자 역할도 수행합니다.

하지만 Sentinel이 Redis 서버 다운을 감지하면 어떻게 될까요? 이 글에서는 Redis를 위한 완벽한 고가용성 가상 서비스를 구축하는 방법을 알아보겠습니다.

Redis 서버가 모니터링을 위해 Sentinel을 사용하지 않는 경우에도 이 구성을 수행할 수 있다는 점을 고려해 보세요.

Redis 부하 분산 환경 #

이 글에서 우리가 이루고자 하는 시나리오는 아래 다이어그램에 나와 있습니다.

Redis Sentinel은 모든 Redis 노드의 상태를 확인하고 오류가 감지되면 Redis 서버의 역할을 변경합니다.

로드 밸런서도 상태를 확인하지만, 몇 초마다 주기적으로 확인합니다. Sentinel이 문제를 감지했지만 로드 밸런서가 문제를 인식하는 데 최대 몇 초가 걸리는 경우가 있습니다. 이로 인해 밸런서가 잘못된 마스터(실패했지만 Sentinel에 의해 교체된 마스터)에 요청을 보낼 수 있습니다.

RELIANOID 이 문제를 해결하는 방법을 제시하는 L4 팜은 주기적으로 검사를 수행합니다. 반면, 백엔드로 전달되는 플로우에는 이전 검사가 포함되지 않은 경우도 있습니다. 팜 가디언은 백엔드가 응답하지 않는다는 것을 감지하면 플로우가 이 방향으로 진행되어서는 안 된다는 경고를 발생시킵니다.

이를 고려하여, 한편으로는 확인, 다른 한편으로는 요청이 있습니다. 확인이 실패하면 흐름은 즉시 다른 노드로 전송됩니다. 진행 중인 요청도 다른 온라인 노드로 리디렉션됩니다. 이에 대해서는 구성에서 자세히 설명합니다.

Redis 로드 밸런싱 구성 #

팜을 설정하기 전에 가상 IP가 필요합니다. 이를 위해 네트워크 > 가상 인터페이스 로 이동합니다. 그런 다음 작업 > 가상 인터페이스 생성을 클릭합니다 . 다음으로 상위 인터페이스 , 가상 인터페이스 이름 및 해당 IP 주소를 선택합니다.

다음으로, Redis 가상 서버를 위해 L4xNAT 팜을 생성해야 합니다. 이를 위해 LSLB > 팜 으로 이동한 다음 작업 에서 팜 생성을 클릭 합니다.

초기 매개변수를 설정했으면 [생성] 을 클릭합니다 . 다음으로 [고급] 탭으로 이동하여 프로토콜 유형이 TCP인지 확인합니다.

다음으로, 서비스 로 이동합니다 . 고급 상태 확인을 위해 백엔드와 팜 가디언을 여기에서 설정합니다. 먼저 백엔드 섹션을 찾고 아래 그림과 같이 작업 > 백엔드 추가를 클릭합니다 .

Redis 모니터링 및 고급 상태 검사 #

마지막으로, 앞서 설명한 것처럼 항상 온라인 노드를 사용하고 있는지 확인하기 위해 Farm Guardian 검사가 필요합니다. 이를 위해 Farm Guardian 명령으로 다음을 구성해야 합니다.

check_tcp -E -H 호스트 -p 포트 -s '정보 복제\r\n' -e 역할:마스터 -t 3

여기서 HOSTPORT는 각 백엔드의 Redis 서버 IP 주소와 포트로 대체됩니다. `info replication` 명령어를 사용하면 Redis 서버에서 정보를 가져와 어떤 마스터 서버가 활성 상태인지 확인할 수 있습니다. 마스터 역할이 지정된 경우에만 연결이 해당 서버로 리디렉션됩니다. Sentinel이 역할을 변경하면 로드 밸런서가 변경 사항을 감지하고 Redis 서버를 다운 상태로 표시합니다. ` -t` 플래그 는 Farm Guardian이 Redis 서버 응답을 기다리는 시간(초)입니다. 시간 초과 후에도 응답이 없으면 Redis 서버를 다운 상태로 표시합니다. 반대로 Redis 서버의 상태가 복구되면 다시 활성 상태로 표시됩니다.

하지만 이 특정 농장에 대한 Farm Guardian을 수정하기 전에 모니터링 > Farmguardian 으로 이동한 다음 작업 > Farmguardian 생성을 클릭하십시오.

예시와 같이 check_redis_master 와 같이 새로운 Redis Sentinel 상태 검사기에 대한 설명적인 이름을 선택하고 , Farmguardian 필드에서 check_tcp를 선택하여 복사한 다음 아래 그림과 같이 만들기를 클릭합니다 .

마지막으로, 위에서 언급한 명령어를 명령 매개변수에 복사하고 아래와 같이 구성하십시오.

제출 버튼 을 클릭하세요.

이제 Redis 가상 서비스에서 새로 생성된 Farm Guardian 고급 상태 점검을 선택합니다. LSLB > 팜 으로 돌아가서 RedisFarm 이라는 이름으로 생성된 팜의 서비스 탭을 확인합니다. 마지막으로 백엔드 상태 점검 에서 방금 생성한 check_redis_master 명령을 선택합니다.

'팜 업데이트'를 클릭하면 Redis가 완전히 고가용성 상태가 됩니다.

참고자료 #

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

📄 이 문서를 PDF 형식으로 다운로드하세요 #

    이메일 : *

    BetterDocs 제공