웹사이트 검색

CentOS 8에서 Sentinel을 사용하여 고가용성을 위해 Redis를 설정하는 방법 - 2부


RedisRedis Sentinel 분산 시스템을 통해 고가용성을 제공합니다. SentinelRedis 인스턴스를 모니터링하고 오류를 감지하며 자동으로 역할 전환을 수행하여 Redis 배포가 모든 종류의 오류에 저항할 수 있도록 지원합니다.

Redis 인스턴스(마스터 및 복제본) 모니터링 기능, 스크립트를 통해 다른 서비스/프로세스 또는 시스템 관리자에게 알림 지원, 마스터가 다운될 때 복제본을 마스터로 승격하는 자동 장애 조치 클라이언트가 특정 서비스를 제공하는 현재 마스터를 검색할 수 있도록 구성합니다.

이 문서에서는 Sentinel 구성, 설정 상태 확인 및 테스트를 포함하여 CentOS 8에서 Redis Sentinel을 사용하여 고가용성을 위해 Redis를 설정하는 방법을 보여줍니다. Sentinel 장애 조치.

전제 조건:

  1. CentOS 8에서 Redis 복제(클러스터 모드 비활성화)를 설정하는 방법 – 1부

테스트 환경 설정

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

Redis Sentinel 문서에 따르면 강력한 배포를 위해서는 Sentinel 인스턴스가 3개 이상 필요합니다. 위의 설정을 고려하면 마스터가 실패하면 Sentinels2Sentinel3는 실패에 동의하고 장애 조치를 승인할 수 있습니다. 클라이언트 작업을 계속할 수 있습니다.

1단계: Redis Sentinel 서비스 시작 및 활성화

1. CentOS 8에서는 Redis Sentinel 서비스가 Redis 서버와 함께 설치됩니다. Redis 복제 설정).

Redis 센티널 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 하려면 다음 systemctl 명령을 사용하세요. 또한 상태를 확인하여 실행 중인지 확인합니다(모든 노드에서 이 작업을 수행).

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

2단계: 모든 Redis 노드에 Redis Sentinel 구성

2. 이 섹션에서는 모든 노드에서 Sentinel을 구성하는 방법을 설명합니다. Sentinel 서비스는 Redis 서버와 유사한 구성 형식을 갖습니다. 이를 구성하려면 /etc/redis-sentinel.conf 자체 문서화된 구성 파일을 사용하세요.

먼저 원본 파일의 백업을 생성하고 편집을 위해 엽니다.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. 기본적으로 Sentinel은 포트 26379에서 수신 대기하며 모든 인스턴스에서 이를 확인합니다. bind 매개변수는 주석 처리된 채로 두어야 합니다(또는 0.0.0.0으로 설정).

port 26379

4. 다음으로, Sentinel에게 마스터를 모니터링하고 "객관적으로 다운" 상태로 간주하도록 지시합니다. 최소 2명의 정족수 감시자가 동의하는 경우에만 가능합니다. 'mymaster'를 맞춤 이름으로 바꿀 수 있습니다.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

중요: "No such master with" 오류를 방지하려면 sentinel 모니터 문을 sentinel auth-pass 문 앞에 배치해야 합니다. 지정된 이름. ” 센티넬 서비스를 다시 시작할 때.

5. 모니터링할 Redis 마스터에 비밀번호가 설정된 경우(우리의 경우 마스터에 있음) Sentinel 인스턴스가 보호된 인스턴스에 인증할 수 있도록 비밀번호를 제공하세요.

 
sentinel auth-pass mymaster Securep@55Here

6. 그런 다음 마스터(또는 연결된 모든 복제본이나 센티널)가 "주관적으로 다운" 상태로 간주되도록 도달할 수 없는 시간(밀리초)을 설정합니다.

다음 구성은 5초(1초는 1000밀리초와 동일) 이내에 핑으로부터 응답을 받지 못하는 즉시 마스터가 실패한 것으로 간주된다는 것을 의미합니다.

sentinel down-after-milliseconds mymaster 5000

7. 다음으로 다양한 사항을 정의하는 장애 조치 시간 제한을 밀리초 단위로 설정합니다(구성 파일의 매개변수에 대한 설명서를 참조하세요).

sentinel failover-timeout mymaster 180000

8. 그런 다음 장애 조치 후 동시에 새 마스터를 사용하도록 재구성할 수 있는 복제본 수를 설정합니다. 두 개의 복제본이 있으므로 하나의 복제본을 설정하고 다른 복제본은 새 마스터로 승격됩니다.

sentinel parallel-syncs mymaster 1

Redis Replica1Sentinel2, Reddis Replica1Sentinel2의 구성 파일은 동일해야 합니다.

9. 그런 다음 모든 노드에서 Sentinel 서비스를 다시 시작하여 최근 변경 사항을 적용합니다.

systemctl restart redis-sentinel

10. 다음으로 모든 노드의 방화벽에서 포트 26379를 열어 Sentinel 인스턴스가 통신을 시작하고 다른 Sentinel 인스턴스로부터 연결을 수신할 수 있도록 합니다. >Sentinel 인스턴스, Firewall-cmd를 사용합니다.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. 모든 복제본이 자동으로 검색됩니다. 중요한 점은 Sentinel이 복제본에 대한 추가 정보로 구성을 자동으로 업데이트한다는 것입니다. 각 인스턴스의 Sentinel 구성 파일을 열어서 살펴보면 이를 확인할 수 있습니다.

예를 들어 마스터 구성 파일의 끝을 보면 다음 스크린샷과 같이 known-sentinelsknown-replica 문이 표시되어야 합니다.

replica1replica2의 경우가 동일해야 합니다.

Sentinel 구성은 장애 조치 중에 복제본이 마스터 상태로 승격될 때마다 그리고 설정에서 새 Sentinel이 검색될 때마다 다시 작성/업데이트됩니다.

3단계: Redis Sentinel 설정 상태 확인

12. 이제 다음과 같이 info sentinel 명령을 사용하여 마스터의 Sentinel 상태/정보를 확인합니다.

redis-cli -p 26379 info sentinel

다음 스크린샷에 표시된 명령 출력에는 2개의 복제본/슬레이브와 3개의 센티널이 있습니다.

13. 마스터(mymaster라고 함)에 대한 자세한 정보를 표시하려면 sentinel master 명령을 사용하세요.

redis-cli -p 26379 sentinel master mymaster

14. slavesentinel에 대한 자세한 정보를 표시하려면 sentinelslaves 명령과 sentinel을 사용하세요. 센티넬 명령을 각각 수행합니다.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. 다음으로, 다음과 같이 sentinel get-master-addr-by-name 명령을 사용하여 슬레이브 인스턴스에서 이름으로 마스터 주소를 요청합니다.

출력은 현재 마스터 인스턴스의 IP 주소와 포트여야 합니다.

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

4단계: Sentinel 장애 조치 테스트

16. 마지막으로 Sentinel 설정에서 자동 장애 조치를 테스트해 보겠습니다. Redis/Sentinel 마스터에서 Redis 마스터(포트 6379에서 실행)를 60초 동안 절전 모드로 설정합니다. . 그런 다음 다음과 같이 복제본/슬레이브의 현재 마스터 주소를 쿼리합니다.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

쿼리 출력에서 다음 스크린샷에 표시된 것처럼 이제 새 마스터는 IP 주소가 10.42.0.34replica/slave2입니다.

Redis Sentinel 설명서에서 자세한 정보를 얻을 수 있습니다. 하지만 공유하고 싶은 생각이 있거나 문의사항이 있는 경우 아래 피드백 양식을 통해 문의해 주세요.

이 시리즈의 다음 부분과 마지막 부분에서는 CentOS 8에서 Redis 클러스터를 설정하는 방법을 살펴보겠습니다. 이 기사는 처음 두 기사와는 별개의 기사입니다.