2015-05-06 2 views
0

У нас есть установка с:
2 PHP сервер
2 Redis серверов, работающих в качестве ведущего/ведомого устройства
1 Log сервера, в котором хранятся все виды бревен в elastcisearch

Redis реализация дозорного

Мы хотим реализовать автоматический переход на другой ресурс для серверов redis, прямо сейчас на php-серверах redis master address ir hardcoded.

И в лог-сервере, который имеет экземпляр logstash с вводом redis от master, также кодируется в конфигурации logstash.

Мы установили redis sentinel на обоих серверах redis, и он работает нормально.

Но проблема в том, как получить мастер в php и logstash, или это не так.

Для PHP Я нашел клиента обертку https://github.com/Sparkcentral/PSRedis

Но ничего для logstash не нашел, я Quess, что я просто поиск в неправильном направлении

Таким образом, вопрос если это правильное направление, если бы кто-то не мог указать мне на это.

ответ

5

Для работы с Sentinel помните, что вам нужно три экземпляра, поэтому в вашей настройке обязательно установите экземпляр Sentinel на сервере журнала и один в каждом экземпляре сервера redis. Три копии Sentinel должны запускаться на компьютерах/виртуальных машинах, которые, как считается, терпят неудачу способом, независимым друг от друга (поэтому несколько виртуальных машин на одном физическом узле не являются хорошей идеей).

При этом, чтобы работать на Sentinel, вашим клиентам необходимо реализовать протокол Sentinel, как указано здесь: http://redis.io/topics/sentinel-clients.

На странице https://github.com/Sparkcentral/PSRedis я не могу найти никакого намека на то, что они точно реализуют, внедряют ли они последний протокол Sentinel, как указано в моем сообщении выше? Я бы открыл проблему и спросил, реализуют ли они документированный протокол Sentinel: если нет, они должны, если да, они должны документировать их в README.

Видимо сам Predis пока не реализует поддержку Стража: https://github.com/nrk/predis/issues/131

Если у вас есть время, чтобы потратить, я предлагаю:

  1. Спросите PSRedis, что именно они реализуют.
  2. Познакомьтесь с протоколом, описанным в документе Sentinel, это довольно простой материал.
  3. Убедитесь, что PSRedis правильно его использует, если нет, укажите запрос на извлечение.

Счастливый взлом.

+0

Теперь predis оказывает поддержку Redis-дозорных (https://github.com/nrk/predis): Поддержка мастер- ведомые репликации и redis-sentinel. – MingalevME

-3

В Python, если вы хотите знать, если ваш Redis является хозяином сделать:

import redis 

R = redis.Redis() 
role = R.info()['role'] 
if role=='master': 
    print 'I am master' 
else: 
    print 'I am slave' 
+0

Привет. Вопрос помечен тегом [tag: php]. Пожалуйста, напишите свой ответ в соответствии с тегами. Благодаря! :) –

Смежные вопросы