MySQL Cluster · 2 min read · Oct 02, 2025
Как настроить кластер MySQL с балансировкой нагрузки
Как настроить кластер MySQL с балансировкой нагрузки
Версия 1.0
Автор: Фалько Тимме
Это руководство показывает, как настроить кластер MySQL 5 с тремя узлами: два узла хранения и один управляющий узел. Этот кластер балансируется с помощью балансировщика нагрузки высокой доступности, который на самом деле имеет два узла, использующих пакет Ultra Monkey, который предоставляет heartbeat (для проверки, жив ли другой узел) и ldirectord (для распределения запросов между узлами кластера MySQL).
В этом документе я использую Debian Sarge для всех узлов. Поэтому настройка может немного отличаться для других дистрибутивов. Версия MySQL, которую я использую в этой настройке, — 5.0.19. Если вы не хотите использовать MySQL 5, вы также можете использовать MySQL 4.1, хотя я его не тестировал.
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Мои серверы
Я использую следующие серверы Debian, которые все находятся в одной сети (192.168.0.x в этом примере):
- sql1.example.com: 192.168.0.101 Узел кластера MySQL 1
- sql2.example.com: 192.168.0.102 Узел кластера MySQL 2
- loadb1.example.com: 192.168.0.103 Балансировщик нагрузки 1 / сервер управления кластером MySQL
- loadb2.example.com: 192.168.0.104 Балансировщик нагрузки 2
Кроме того, нам нужен виртуальный IP-адрес: 192.168.0.105. Он будет назначен кластеру MySQL балансировщиком нагрузки, чтобы приложения имели один IP-адрес для доступа к кластеру.
Хотя мы хотим иметь два узла кластера MySQL в нашем кластере MySQL, нам все равно нужен третий узел, сервер управления кластером MySQL, по одной основной причине: если один из двух узлов кластера MySQL выходит из строя, и сервер управления не работает, то данные на двух узлах кластера станут несогласованными (“разделенный мозг”). Нам также нужен этот сервер для настройки кластера MySQL.
Таким образом, обычно нам нужно пять машин для нашей настройки:
2 узла кластера MySQL + 1 сервер управления кластером + 2 балансировщика нагрузки = 5Поскольку сервер управления кластером MySQL не использует много ресурсов, и система просто будет сидеть без дела, мы можем разместить наш первый балансировщик нагрузки на той же машине, что сэкономит нам одну машину, и в итоге у нас останется четыре машины.
2 Настройка сервера управления кластером MySQL
Сначала нам нужно скачать MySQL 5.0.19 (версия max!) и установить сервер управления кластером (ndb_mgmd) и клиент управления кластером (ndb_mgm - он может использоваться для мониторинга происходящего в кластере). Следующие шаги выполняются на loadb1.example.com (192.168.0.103):
loadb1.example.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm
Затем мы должны создать файл конфигурации кластера, /var/lib/mysql-cluster/config.ini:
loadb1.example.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Раздел для узла управления кластером [NDB_MGMD] # IP-адрес управляющего узла (эта система) HostName=192.168.0.103 # Раздел для узлов хранения [NDBD] # IP-адрес первого узла хранения HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # IP-адрес второго узла хранения HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # один [MYSQLD] на каждый узел хранения [MYSQLD] [MYSQLD] |
Пожалуйста, замените IP-адреса в файле соответствующим образом.
Затем мы запускаем сервер управления кластером:
loadb1.example.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini Имеет смысл автоматически запускать сервер управления при загрузке системы, поэтому мы создаем очень простой скрипт и соответствующие ссылки для запуска:
loadb1.example.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
Get new posts in your inbox
No spam. Unsubscribe anytime.