В настоящее время я запускаю веб-приложение Rails 3 с MySQL на одном первом сервере и приложение Rails API на втором сервере, которое подключается к базе данных MySQL с первого сервера.
Меня не устраивает, что API зависит от базы данных с первого сервера, и я решил использовать репликацию / кластеризацию, но я не уверен, что лучше всего подходит для моего случая?
Что, если один узел выйдет из строя, означает ли это, что как только он выйдет из строя и будет использовать второй узел в качестве донора, весь кластер станет недоступен? Как мне этого избежать?
Как вы думаете, какой вариант здесь лучше всего?
Таким образом, вы не можете кластеризовать только 2 узла. Вам нужен кворум, иначе вы можете потерять сервер и разделить мозг, тогда вы не будете уверены, у какого из них есть какие данные.
У вас может быть 2 сервера данных и 3-й сервер для голосования, который не хранит данные, а только член кластера для голосования.
Обычно у меня есть кластер mysql, и все мои клиенты подключаются локально к haproxy, и haproxy решает, куда отправлять соединения, и он отправляет все записи на один сервер в 100% случаев, пока он не умирает, а затем переходит в резервный сервер.