Лучшая практика подключения к кластеру галер?

Если у меня 7 серверов с 7 IP-адресами, как лучше всего к ним подключиться?

Я думал о: 1.) Указывать все мои запросы через один IP-адрес 2.) Использование rand() для случайного выбора IP-адреса и подключения к нему, распределяя все запросы по серверам

1 ответ

Используйте HAProxy или любой другой интеллектуальный балансировщик нагрузки перед кластером Galera. Лучший способ использования кластера galera - это распределение всех запросов по всем активным и исправным серверам.

Как определить, является ли сервер активным и теплым?

Это довольно просто. Поскольку HAProxy AFAIK не имеет ничего общего с проверкой mysql, он не может сделать это сам. Но у HAProxy есть проверка работоспособности HTTP. Таким образом, вы можете запустить небольшой http-сервер на каждом узле galera (для этого идеально подойдет nginx), и будет скрипт, который будет подключаться к локальному узлу, выполнять некоторые операции и возвращать код состояния в зависимости от ответа galera. Вы должны попытаться выполнить все распространенные типы запросов (INSERT, SELECT, UPDATE и DELETE), чтобы убедиться, что узел здоров, но когда происходит сбой WSREP, каждый запрос на этом узле дает сбой, даже такой простой, как select now();, HAProxy будет периодически запускать этот скрипт и реагировать на возвращенный код состояния.

Как просто избежать HAProxy SPOF?

Установите его на каждом сервере приложений! HAProxy - довольно небольшая часть программного обеспечения, так что вы можете запустить его с вашим приложением. Бонусом для этого подхода является то, что ваше приложение будет направлять все запросы к базе данных на localhost и ничего не будет касаться кластера, поэтому вы можете масштабировать его по своему усмотрению, просто обновляя конфигурацию HAProxy (это можно сделать на лету с помощью сокета api).

Почему указание на один IP или rand() плохая идея?

Rand () не может реагировать на сбой сервера базы данных. И, как я вижу в своем кластере, Galera не является стабильной технологией.

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

Другие вопросы по тегам