*#1*

문제 정의

Redis Sentinel 구조에서 Sentinel은 MasterSlave 노드들을 모니터링하는 역할을 하며 장애 발생 시 자동으로 장애 복구를 처리하게 되는데 Sentinel이 제대로 동작하기 위해서는 sentinel.conf 파일을 작성하여 Sentinel이 모니터링할 Redis 인스턴스와 관련된 설정을 지정해주어야 한다.

image.png

초기에는 sentinel resolve-hostnames yes 코드가 작성이 되어있지 않았고 mymaster 라는 Master Node 의 논리적인 이름을 작성하여 sentinel Node 가 master 노드를 바라보게 만들었지만

Can't resolve master instance hostname. 해당 에러가 발생하였고 sentinel.conf 파일에서 master insatnce 의 호스트 를 알지 못하는 상황이였습니다.

원인

공식 문서에 따르면 sentinel resolve-hostnames yes 설정은 Redis 6.2 버전부터 호환됩니다

이 설정을 사용하면 Redis Sentinel이 IP 주소 대신 호스트 이름을 사용할 수 있게 됩니다. Redis의 기본 설정은 IP 주소 기반이지만, 이 옵션을 활성화하면 호스트 이름을 이용한 모니터링과 장애 복구가 가능해집니다.

해결 방안 및 결과

sentinel resolve-hostnames yes 해당 코드를 추가하여 sentinel node 가 master node 의 호스트이름을 사용하여 해당 에러를 해결하였습니다.

*#2*

문제 정의

총 3대로 이루어진 sentinel node가 master node 만 바라보며 두개의 slave, sentinel 노드를 모니터링하지 못하는 에러가 발생하였다 해당 상황을 인지하게 된 배경은 master node 의 failOver 상황을 만들었을 때 slave 노드도 마찬가지로 master 노드를 바라보는데 master 로 승격하지 못하는 상황을 마주쳤다.

원인

해당 코드로 sentinel container 에 접속한 뒤에 코드를 입력하면 다음과 같이 연결된 slave 노드 2개 sentinel 노드 3개가 나와야 하지만 0 개로 나와 인식하지 못하는 에러가 발생하였다.