복붙노트

[REDIS] 마스터 / 슬레이브와 동일한 서버에 파수꾼을 레디 스?

REDIS

마스터 / 슬레이브와 동일한 서버에 파수꾼을 레디 스?

나는 레디 스 센티넬를 사용하는 방법에 대한 몇 가지 독서를하고 있었고, 클라이언트 측에서 호출 할 때 나는 2 개 이상 센티넬을 가질 수 알고, 그들 사이의로드 밸런싱.

그것은 좋은 연습 내 마스터 + 슬레이브와 동일한 서버에서 이러한 2 파수꾼이 있나요? 즉, 1 개 마스터와 동일한 물리적 서버에서 감시하고, 다른 동일한 물리적 서버에서 슬레이브로 있나요?

마스터 서버가 죽으면, 슬레이브의 감시가 단순히 마스터 슬레이브을 촉진 날 것으로 보인다. 마스터가 여전히 있기 때문에 슬레이브 서버 죽으면, 그건 문제가되지 않습니다.

나는 뭔가를 놓치고 있습니까? 단점은 무엇입니까?

차라리 센티넬이 지연 줄일 수있는 마스터 / 슬레이브와 같은 물리적 서버에있을 수 있습니다.

해결법

  1. ==============================

    1.첫째, 센티넬은 부하 분산 또는 레디 스의 프록시는 아니다.

    첫째, 센티넬은 부하 분산 또는 레디 스의 프록시는 아니다.

    둘째, 모든 실패는 호스트의 죽음이다. 때로는 서버 중단 짧게, 때로는 네트워크 케이블은 당신의 레디 스 인스턴스와 동일한 호스트에서 센티넬을 실행하는 것은 좋은 방법이 아닙니다,이 때문에 f를 등을 분리 가져옵니다. 세 센티넬이 레디 스 마스터와 슬레이브 (들)가 아닌 다른 노드에서 실행 미만, 장애 조치 아무것도를 관리 할 수 ​​센티넬을 사용하는 경우 문제가 요구된다.

    센티넬은 장애 조치와 슬레이브에 투표 정족수 메커니즘을 사용합니다. 채 2 센티넬하면 두 개 이상의 레디 스 서버가 마스터 생각 분할 뇌의 위험을 실행합니다.

    각에 두 서버 및 실행 감시를 실행하는 시나리오를 상상해보십시오. 당신이 하나를 분실 한 경우에는 신뢰할 수있는 페일 오버 기능을 잃게됩니다.

    클라이언트는 현재 마스터 연결 정보를 배울 수 센티넬에 연결합니다. 언제든지 클라이언트는이 과정을 반복 연결을 잃는다. 센티넬은 레디 스의 프록시 아니다 - 레디 스에 대한 명령은 레디 스로 직접 이동합니다.

    세 개 미만의 파수꾼으로 센티넬를 실행하는 신뢰할 수있는 유일한 이유는 장애 복구 관리를 위해 사용하지 않을 것을 의미 서비스 발견을위한 것입니다.

    두 개의 호스트 시나리오를 고려하십시오

    Host A: redis master + sentinel 1 (Quorum 1)
    Host B: redis slave + sentinel 2  (Quorum 1)
    

    호스트 B는 일시적으로이 시나리오에서 호스트 A에 대한 네트워크 연결이 끊기면 호스트 B는 마스터에 자신을 추진합니다. 이제 당신은 :

    Host A: redis master + sentinel 1 (Quorum 1)
    Host B: redis master + sentinel 2  (Quorum 1)
    

    센티넬 1로 연결하는 클라이언트는 호스트에게 마스터 말했다됩니다 반면 센티넬 2에 연결하는 모든 클라이언트는 호스트 B는 마스터 말했다됩니다 (이, 당신이 부하 분산 장치 뒤에 센티넬이있는 경우, 고객의 수단 절반).

    따라서 당신이 최소 허용 신뢰할 수있는 장애 복구 관리를 얻기 위해 실행해야 할 것입니다 :

    Host A: Redis master
    Host B: Redis Slave
    Host C: Sentinel 1
    Host D: Sentinel 2
    Host E: Sentinel 2
    

    귀하의 클라이언트는 센티넬에 연결하고 (이름)가 레디 스 인스턴스의 현재 마스터를 획득, 다음에 연결합니다. 마스터는 클라이언트 / 다시 센티넬에 연결하고 새로운 정보를 얻을해야합니다 그러자 연결이 클라이언트에 의해 삭제 될해야 죽으면.

    얼마나 잘 각 클라이언트 라이브러리는 핸들이 라이브러리에 따라 달라집니다.

    이상적으로 C, D, E는 당신이에서 레디 스에 연결 동일한 호스트에 하나되어 호스트 (예. 클라이언트 호스트). 또는 좋은 샘플링이 그들을 가지고 나타냅니다. 여기에 주요 추력은 당신이에서 레디 스에 연결해야 할 곳에서 체크인 할 수 있도록하는 것입니다. 같은 DC에서 그 장소를 실패 / 클라이언트로 / 지역 랙.

    당신이하고자하는 경우 고객이 센티넬의 홀수를 얻기 위해 필요에 따라 추가 비 LB 호스트를 추가하는 LB 노드 가능한 경우에 당신의 센티넬을 가지고로드 밸런서 시도 이야기> 이와 2. 예외가 있다면 당신의 클라이언트 호스트는 이들의 수는 (그들은 예를 들어, 느린 기간 동안 아래, 트래픽에 대한 확장) 일치하지 않는 부분에서 동적입니다. 이 시나리오에서는 꽤 많은 비 클라이언트 및 비 레디 스 서버 호스트에 파수를 실행해야합니다.

    이 작업을 수행 할 경우 다음 현재 마스터 만의 이야기를 구성해야합니다 - 어떤 LB의를 업데이트 할 수있는 마스터 스위치 이벤트의 센티넬 PUBSUB 채널을 모니터링 데몬을 작성해야합니다 (모두 얘기하지 마십시오). 단지 LB IP / 포트 얘기를 알고있다 -하지만 클라이언트에 투명 센티넬의 메이크업에 사용합니까 그렇게 더 많은 작품입니다.

  2. ==============================

    2.그것은 모두 당신이 달성하고자하는 재해 복구의 수준을 따라, 이제 독립적가 호스팅되는 경우 다음과 같은 구성 요소가 있다고 가정하자 :

    그것은 모두 당신이 달성하고자하는 재해 복구의 수준을 따라, 이제 독립적가 호스팅되는 경우 다음과 같은 구성 요소가 있다고 가정하자 :

    1 마스터 1+ 노예

    하나의 호스트 시나리오

    호스트가 실패 : 당신은 대부분의 사용 사례에 대한 모든 나쁜 복제 시나리오를 잃게됩니다.

    두 호스트 시나리오

    호스트 1 :

    호스트 2 :

    이 시나리오에서 당신이 호스트가 당신에게 몇 가지 보안 수준을 제공 한 번에 하나 실패 할 수 있다는 사실이다. 다른 서버에서 물리적으로 다른 호스트를 의미하는 경우 그냥 이해하려고 노력. 이 같은 호스트에 바로 VM을 경우에, 당신은 DR (재해 복구)의 동일한 수준을하지 않습니다.

    귀하의 질문에 대해서는 :

    , 그들은 단지 현재 마스터 읽기의 관점에서 예를 들어 센티넬, 경유 및 쓰기 위치를하지 않은 얻을 공지 사항 센티넬은 현재 마스터와 슬레이브를 추적하지만, 레디 스 클라이언트가 마스터 VIA 센티넬에 연결하지 않는 것이 어떤 상당한 * 대기 시간을 향상 찾고.

    (참조 : http://redis.io/topics/sentinel)

    나는 지연의 관점에서 당신이 가지고있는 유일한 이득을 볼 수있는 방법은 감시에 마스터 및 슬레이브에서 보낸 하트 비트입니다. 만큼 당신이 전 세계를 통해 서버를 확산하지 않는 한 확인을해야 그.

    그것은 모든 사용 사례에 따라 다르지만 다른 모든 조건이 동일 (비용, 클라이언트까지의 거리 등) 경우 가능한 한 분리 등의 일을 유지하기 위해 최선을 다 할 것 같다.

  3. ==============================

    3.그것은 확실히 권장되는 방법이 아닙니다.

    그것은 확실히 권장되는 방법이 아닙니다.

    레디 스 센티넬 문서는 꽤 잘 장단점을 설명합니다. 도움이 되었기를 바랍니다. https://redis.io/topics/sentinel#example-sentinel-deployments

  4. ==============================

    4.수의 (3/5/7)을 당신은 마스터 / 슬레이브와 동일한 시스템에 파수꾼을 가질 수 있지만, 센티넬은 홀수해야합니다. 이 세 가지 파수꾼이어야하고 그것이어야 한 감시를위한 전용 시스템을 가지고 필수입니다한다.

    수의 (3/5/7)을 당신은 마스터 / 슬레이브와 동일한 시스템에 파수꾼을 가질 수 있지만, 센티넬은 홀수해야합니다. 이 세 가지 파수꾼이어야하고 그것이어야 한 감시를위한 전용 시스템을 가지고 필수입니다한다.

    당신이 다음 분할 뇌의 경우 두 개의 노드가있는 경우 상황 (네트워크 중단), 슬레이브는 마스터로 승격됩니다. 상황이 정상으로 돌아 올 때 모두 마스터가 지금 clients.However에서 데이터를 받아, 마스터 중 하나는 노예로 강등됩니다. 지금 노예이며, 현재 마스터에서 데이터를 복제 할로 그 마스터는 모든 데이터를 잃게됩니다.

    이익을 위해 레디 스 건축의 desings 및 분할 뇌의 설명이 확인 : http://www.yzuzun.com/2015/04/some-architectural-design-concepts-for-redis/

  5. from https://stackoverflow.com/questions/28323936/redis-sentinels-in-same-servers-as-master-slave by cc-by-sa and MIT license