> 데이터 베이스 > Redis > Redis 감시 모드를 함께 분석해 보겠습니다.

Redis 감시 모드를 함께 분석해 보겠습니다.

WBOY
풀어 주다: 2022-03-16 18:09:01
앞으로
2288명이 탐색했습니다.

이 글은 Redis에 대한 관련 지식을 제공합니다. 센티넬의 개념, 센티널의 역할, 센티널 활성화, 센티널의 원리 등 센티넬 모드와 관련된 문제를 주로 소개합니다. 모든 사람.

Redis 감시 모드를 함께 분석해 보겠습니다.

추천 학습: Redis Tutorial

Sentinel Mode

1. Sentinel Concept

  • 마스터-다중 슬레이브 구조에서는 마스터가 다운되면 여러 슬레이브 중에서 선택해야 합니다. 새로운 마스터를 생성하려면, 그러한 기능을 완성하려면 Redis의 센티넬 메커니즘을 사용해야 합니다

  • Sentinel(센티넬)은 마스터-슬레이브 구조에서 각 서버를 모니터링하는 데 사용되는 분산 시스템 모니터링 , 오류가 발생하면 투표 메커니즘 을 통해 새 마스터를 선택하고 아래 그림과 같이 모든 슬레이브를 새 마스터에 연결합니다.

    Redis 감시 모드를 함께 분석해 보겠습니다.

2 Sentinel 역할

  • Monitoring : 마스터와 슬레이브 모니터링
    • 마스터와 슬레이브가 정상적으로 실행되는지 지속적으로 확인
    • 마스터 생존 감지, 마스터 및 슬레이브 실행 상태 감지
  • 알림(알림): 문제가 있는 경우 모니터링되는 서버, 다른 센티널 및 Redis 서버에 알림 보내기

  • failover: 다운된 마스터를 슬레이브에서 연결 해제하고, 슬레이브를 마스터로 선택하고, 다른 슬레이브를 새 마스터에 연결하고, 클라이언트에 새 서버를 알립니다. 주소

참고: Sentinel은 모니터링 서비스만 제공하고 데이터 관리 서비스는 제공하지 않는 Redis 서버이기도 합니다. 일반적으로 센티널 수는 홀수로 구성됩니다(투표에 편리함)

3. Sentinels 활성화

  • Sentinel sentinel.conf 구성 파일을 수정합니다. 구성 파일은 아래 그림과 같이 Redis 디렉터리에 있습니다.

    Redis 감시 모드를 함께 분석해 보겠습니다.Redis 감시 모드를 함께 분석해 보겠습니다.
  • 일부 구성의 의미는 아래 그림과 같습니다. :

    Redis 감시 모드를 함께 분석해 보겠습니다.
  • Sentinel 시작

    redis-sentinel filename 
    #filename指的是配置文件名
    #每个哨兵都要配置自己的配置文件
    로그인 후 복사
  • Sentinel 구성 및 시작 이후 메인 서버가 다운된 후 투표, 마스터-슬레이브 전환 등의 프로세스를 자동으로수행합니다

4.

Sentinel은 마스터-슬레이브 전환 프로세스 동안 세 단계를 거칩니다.

  • Monitoring
  • Notification
  • Failover

4.1 Monitoring

은 이러한 노드의 상태 정보를 동기화하는 데 사용됩니다. 마스터, 슬레이브, 센트리, 즉 전체 시스템의 모든 서버에 대한 정보를 포함합니다.

주로 완성된 기능:

Redis 감시 모드를 함께 분석해 보겠습니다.

  • 각 센티널의 상태 가져오기(온라인 여부에 관계없이): 새로 추가된 센티널은 시스템의 기존 센티널과 상호 작용해야 합니다.

  • 상태를 가져옵니다. of the master (info 명령을 통해)

    • 얻은 내용은 다음과 같습니다

      1. master属性
      	 runid
      	 role:master
      2. 各个slave在master中保存的基本信息
      로그인 후 복사
  • 모든 슬레이브의 상태를 가져옵니다 (info 명령은 마스터에 있는 슬레이브 정보를 기반으로 모든 슬레이브에 전송됩니다)

    • 얻은 내용은 다음과 같습니다

      slave属性
      	runid
      	role:slave
      	master_host、master_port
      	offset
      로그인 후 복사

구체적인 내부 동작은 다음과 같습니다.

Redis 감시 모드를 함께 분석해 보겠습니다.

  • Sentinel 1이 마스터에 info 명령을 보낸 후 cmd 연결을 설정합니다. 생성된 연결은 명령을 보내는 데 사용됩니다.
  • cmd 연결을 만든 후에는 지금까지 얻은 모든 정보가 Sentinel 1 측과 반대편에서도 마스터가 보유하고 있는 정보를 저장합니다
  • 그러면 Sentinel 1은 마스터로부터 얻은 고약에 대한 정보를 기반으로 슬레이브에 info 명령을 보내고, 고약 정보를 획득하여 농축합니다. 이렇게 저장된 정보
  • 새 Sentinel 2가 추가되면 Sentinel 2는 마스터에 정보 명령을 보내 cmd 연결을 설정하고, 마스터에 있는 정보를 기반으로 기존 Sentinel 1을 얻어서 저장할 수 있습니다. 그 자체로 얻은 정보. 그런 다음 Sentinel 1이 온라인인지 확인하고 Sentinel 1과 연결을 설정합니다. 두 사람은 서로 정보를 교환하며, 두 당사자는 서로에게 열려 있는지 확인하기 위해 계속 핑을 보냅니다
  • Sentinel 2는 Sentinel 2에서 슬레이브 정보를 얻습니다. 마스터, 그리고 슬레이브로부터 정보를 얻고 저장한 정보를 풍부하게 하세요
  • 센티넬 3을 하나 더 추가하면 마지막으로 세 명의 센티넬이 관계 네트워크를 구축합니다
  • 관계 네트워크에서 세 사람은 이 작업 모드를 publish-subscribe 모드

4.2 알림

알림 단계에서 센티널은 지속적으로 마스터와 슬레이브의 정보를 얻어야 하며, 그 다음에는 서로 정보를 교환하고 전송해야 합니다. 공유된 다양한 센티널 간에 획득된 정보를 전송합니다.

구체적인 프로세스는 다음과 같습니다.

센티넬은 설정된 cmd 연결을 통해 마스터와 슬레이브에게 hello 명령을 보내고 그들의 정보를 얻은 후 관계 네트워크에서 공유합니다. hello 指令,得到他们的信息,然后在关系网中共享:

Redis 감시 모드를 함께 분석해 보겠습니다.

4.3 故障转移

断开宕机的master与slave的连接,选取一个slave作为master,将其他slave连接新的master,并告知客户端新的服务器地址。

具体的流程如下所述:

  • 哨兵1始终得不到master的回应,主观判断master宕机,标记 sdown(仅有一个哨兵认为master宕机)

  • 哨兵1在关系网中传递消息,向其他哨兵发送图中左上角的消息

  • 其他哨兵得到消息之后,全部向master发送消息,确定master是否宕机,他们也会将自己得到的结果发送给关系网中的其他哨兵,确定master宕机后,将标记改为 odown

    Redis 감시 모드를 함께 분석해 보겠습니다.Redis 감시 모드를 함께 분석해 보겠습니다.
  • 4.3 Failover

      슬레이브에서 다운된 마스터의 연결을 끊고 슬레이브를 마스터로 선택한 후 다른 슬레이브를 새 마스터에 연결하고 클라이언트에 새 서버 주소를 알립니다.
    • 구체적인 과정은 다음과 같습니다.
  • Sentinel 1은 마스터로부터 아무런 응답도 받지 못했고, 마스터가 다운되었다고 주관적으로 판단하여 sdown으로 표시했습니다. 마스터가 다운됨)
    • Sentinel 1은 관계 네트워크에서 메시지를 전달하고 그림의 왼쪽 상단에 있는 메시지를 다른 Sentinel에게 보냅니다.
      • 다른 Sentinel이 메시지를 받은 후 모두 Sentinel에게 메시지를 보냅니다. 마스터가 다운되었는지 확인하고, 얻은 결과는 관계 네트워크의 다른 센티널로 전송됩니다. 마스터가 다운되었음을 확인한 후 표시를 odown으로 변경합니다(모든 센티널 이후). 감지하면 센티넬의 절반 이상이 마스터가 다운되었다고 생각합니다)
      • 마스터가 다운된 것으로 판단되면 새로운 마스터를 선출해야 하며 이 작업을 완료할 센티넬은 선거를 통해 결정되어야 합니다. 구체적인 프로세스는 다음과 같습니다.
      • 선거 동안 각 센티널은 한 번의 투표로 인트라넷의 다른 센티널을 선거인으로 알리라는 지시를 내립니다. 이 선거 지침을 발행하면 sentinel3이 신청서를 받은 후 sentinel3이 정당 중 하나에 투표하고 도착 순서에 따라 투표합니다
      • 이에 따라 투표를 한 정당이 더 갖게 됩니다.
      • 이 과정에서 실패가 발생할 수 있습니다. 예를 들어 1차에서 선거가 실패하면 2차와 3차에도 마찬가지입니다. 라운드는 선거가 완료될 때까지 계속됩니다
    • 센티넬 간의 선거가 완료된 후, 다음으로 선거에서 승리한 센티넬은 노예 중 한 명을 선택하여 새로운 마스터로 전환하게 됩니다.
  • 파수꾼이 서버 목록에서 대체 마스터를 선택하는 원칙:

    먼저 제외하고

    를 선택합니다.
    • 온라인이 아닌 OUT

      slaveof no one 指令

    • 向其他slave发送 slaveof 新masterIP端口응답이 느린 OUT

    • 오랜 시간 동안 원래 마스터와 연결이 끊어진 OUT
  • 제외가 종료되고 선택이 시작됩니다
  • 우선순위가 높은 OUT이 선택됩니다

  • 오프셋이 큰 OUT (상대적으로 크다) 원본 마스터가 동기화된 데이터가 가장 많다는 의미)

아직 선택하지 않은 경우에는 runid를 기준으로 최종 선택됩니다.

새 마스터 선택 후 , 센티넬은 서버에 다음 명령을 보냅니다.

  1. 새 마스터에게 slaveof no one 명령 보내기
  2. slaveof new masterIP port 명령
  3. 보내기
다른 슬레이브에게 알리고 다른 보초에게도 새 마스터가 누구인지 알려줍니다.

🎜5. 요약🎜🎜🎜모니터링 단계: 정보 동기화 🎜🎜알림 단계: 연결 유지 🎜🎜장애 조치 단계: 🎜🎜🎜Sentinel이 문제는 주관적인 오프라인과 객관적인 오프라인을 차례로 표시🎜🎜책임 파수꾼을 선출합니다🎜 🎜새 마스터를 선호합니다🎜🎜새 마스터가 취임하면 다른 슬레이브는 새 마스터에 연결되고, 🎜원래 마스터가 복원된 후 새 마스터에 연결됩니다. 노예로서의 주인🎜🎜🎜🎜추천 학습: 🎜Redis 비디오 튜토리얼🎜🎜

위 내용은 Redis 감시 모드를 함께 분석해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿