У меня есть 2 выделенных сервера для хранилищ данных моего следующего проекта. Хранилища данных настроены для репликации главный-подчиненный. Не существует автоматического переключения при отказе, но я, конечно, этого хочу. То есть, мне бы хотелось, чтобы доступ к главному хранилищу данных всегда работал, без необходимости настраивать клиентскую библиотеку для обнаружения, когда главный сервер не работает, и переключения на подчиненное устройство.
Я видел Wackamole, основанный на Spread Toolkit. Вы предоставляете Wackamole набор IP-адресов и группу узлов, и независимо от состояния работы любого из узлов эти IP-адреса будут оставаться доступными / активными. Wackamole определяет, когда узел выходит из строя, и ARP отправляет IP-адреса, которые были активированы на узле, который сейчас не работает. На самом деле это довольно изящно.
Итак, я решил использовать Wackamole, чтобы поддерживать доступными / активными 2 виртуальных частных IP-адреса. Тогда клиенты всегда будут использовать один и тот же частный IP-адрес для доступа к главному хранилищу данных и один и тот же, но отдельный IP-адрес для подчиненного хранилища данных, даже если эти IP-адреса размещены на одном узле.
Доступ к моим серверам хранилища данных осуществляется через частную сеть. Я не уверен, что это плохо с Wackamole.
Это безумие? Как вы обычно обрабатываете автоматическое переключение частных служб, таких как хранилище данных.
FWIW, это не имеет значения, но хранилище данных - Redis. Я не хочу слышать "используйте mySQL", пожалуйста :)
Спасибо.
Мне это кажется разумным. Будет короткий период времени, когда ваш клиент вообще не сможет подключиться. Преимущество того, что клиент знает о разных серверах, состоит в том, что он может сразу же попробовать подчиненный. Однако, если вы можете жить с небольшим количеством ошибок, это должно сработать.
Используйте репликацию master master, а не master slave. пусть ваши клиенты пишут обоим мастерам. Читатели будут подключаться к любому доступному мастеру.