Это вопрос не о том, как установить сервер или его возможностях, а скорее о вопросе дизайна.
Итак, у меня есть кластер серверов 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-адрес этого балансировщика нагрузки.