Назад | Перейти на главную страницу

Как добиться высокой доступности с помощью кластера MySQL?

Это вопрос не о том, как установить сервер или его возможностях, а скорее о вопросе дизайна.

Итак, у меня есть кластер серверов MySQL.
У меня также есть DNS-запись "data.example.com".

Кластер MySQL имеет ТРИ узла MySQL / запроса (конечные точки кластера, к которым подключаются приложения).
За этим находятся остальные серверы этого кластера (данные / управление).

Цель состоит в том, чтобы рассматривать этот кластер как единое целое (со стороны).

Теперь внешнее приложение (например, веб-сервер) хочет действовать (писать / читать) в базе данных. Вот шаги:
1) Разрешите DNS "data.example.com".
2) Подключитесь к IP (это узел SQL).
3) Делай работу.

Первый выпуск что возникает, более простой:
Как мне открыть все три узла SQL через этот единственный DNS?
- Циклический перебор на уровне DNS-сервера?
- Установить, что запись DNS указывает на три IP-адреса узлов SQL?

Второй выпуск это возникает, допустим, что DNS разрешен до 10.0.0.7, который является только одним из трех узлов SQL: Что, если этот узел не работает?
Весь кластер по-прежнему в порядке, но теперь приложение, которое пытается подключиться к этому узлу, видит кластер как «неработающий», потому что этот узел действительно не работает, поэтому я теряю «высокую доступность».

Итак, мой вопрос прост:
Что бы вы сделали для решения проблемы? Пожалуйста, опишите подробно, сложность меня не пугает :)

Обратите внимание, что я хотел бы спросить здесь о балансировке нагрузки или тому подобном, но я предпочитаю оставить этот вопрос «открытым» и услышать более широкий спектр решений. Спасибо!

Высокая доступность обычно достигается с помощью так называемого VIP (виртуального IP-адреса). Итак, этот IP-адрес должен отличаться от "статически«назначить IP-адрес каждому узлу кластера. Этот VIP должен быть назначен»динамично"решением высокой доступности, которое вы используете. Таким образом, только один узел будет обслуживать запросы в этом случае, и если этот узел выйдет из строя, программное обеспечение высокой доступности назначит VIP другому узлу в кластере. Таким образом, вы не будете страдают от простоя, за исключением очень небольшой части времени при переключении с одного узла на другой.

Если вы выполняете балансировку нагрузки, вам потребуется два узла балансировки нагрузки и как минимум два узла кластера. VIP будет назначен одному из узлов балансировки нагрузки. Запросы приложений будут направляться на узлы кластера через один из узлов балансировки нагрузки.

Важный момент, о котором следует беспокоиться, - это синхронизация данных между узлами кластера, особенно в сценариях балансировки нагрузки. Например, представьте, что вы пишете в один узел и читаете из другого. Конечно, это не сработает, если не будет применен хороший механизм синхронизации / балансировки нагрузки.

РЕДАКТИРОВАТЬ:

VIP обычно представляет собой частный IP-адрес, назначаемый программным обеспечением высокой доступности активному узлу в кластере. Это просто IP-адрес, отличный от исходного IP-адреса каждого узла. Его можно просто назначить из той же подсети. Если узлы кластера должны быть доступны через NAT, общедоступный IP-адрес должен быть преобразован в NAT для VIP. Это важно для доступа к службе независимо от того, какой из узлов является активным.

Вам нужно будет развернуть балансировщик нагрузки, чтобы разделить нагрузку на ваши узлы sql, разрешить ваш DNS на IP-адрес этого балансировщика нагрузки.