common_linux:galera_cluster
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| common_linux:galera_cluster [2022/08/31 17:28] – удалено - внешнее изменение (Unknown date) 127.0.0.1 | common_linux:galera_cluster [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Кластер MariaDB (Galera Cluster) ====== | ||
| + | Установка будет производиться на Ubuntu 20.04 LTS. | ||
| + | \\ Для небольшой инсталляции будет использовано две ноды MariaDB, а для создания нечетного количества нод будет добавлен арбитр - сервис garbd (https:// | ||
| + | \\ Если планируется использовать 3 ноды репликации, | ||
| + | {{ common_linux: | ||
| + | Сервис арбитража будет установлен на ноду балансировки нагрузки. В качестве балансировщика используется haproxy. | ||
| + | \\ В данном примере будет задействован только один балансировщик, | ||
| + | ^ Наименование узла | ||
| + | | db-msql-01 | ||
| + | | db-msql-02 | ||
| + | | db-sql | ||
| + | |||
| + | ===== Установка Maria DB и включение механизма репликации===== | ||
| + | Перед инсталляцией необходимо обновить ОС и пакеты на **всех** узлах: | ||
| + | <code bash> | ||
| + | apt update && apt upgrade -yy | ||
| + | </ | ||
| + | |||
| + | Если в сети отсутствует DNS-сервер, | ||
| + | <code bash> | ||
| + | nano /etc/hosts | ||
| + | </ | ||
| + | <code ini> | ||
| + | 192.168.100.37 db-msql-01.virtlab.local db-msql-01 | ||
| + | 192.168.100.38 db-msql-02.virtlab.local db-msql-02 | ||
| + | 192.168.100.39 db-sql.virtlab.local | ||
| + | </ | ||
| + | Установка Maria DB на нодах **db-msql-01** и **db-msql-02**: | ||
| + | <code bash > | ||
| + | apt-get install mariadb-server -y | ||
| + | </ | ||
| + | |||
| + | Запускаем первоначальную настройку на нодах **db-msql-01** и **db-msql-02**: | ||
| + | <code bash> | ||
| + | mysql_secure_installation | ||
| + | </ | ||
| + | <code ini> | ||
| + | Enter current password for root (enter for none): | ||
| + | Set root password? [Y/n] y | ||
| + | New password: | ||
| + | Re-enter new password: | ||
| + | Password updated successfully! | ||
| + | Remove anonymous users? [Y/n] y | ||
| + | Disallow root login remotely? [Y/n] | ||
| + | Remove test database and access to it? [Y/n] | ||
| + | Reload privilege tables now? [Y/n] y | ||
| + | </ | ||
| + | |||
| + | Создадим и отредактируем файл конфигурации galera.cnf на нодах **db-msql-01** и **db-msql-02** | ||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | <code ini | galera.cnf> | ||
| + | [mysqld] | ||
| + | binlog_format=ROW | ||
| + | default-storage-engine=innodb | ||
| + | innodb_autoinc_lock_mode=2 | ||
| + | bind-address=0.0.0.0 | ||
| + | |||
| + | # Galera Provider Configuration | ||
| + | wsrep_on=ON | ||
| + | wsrep_provider=/ | ||
| + | |||
| + | # Galera Cluster Configuration | ||
| + | wsrep_cluster_name=" | ||
| + | wsrep_cluster_address=" | ||
| + | |||
| + | # Galera Synchronization Configuration | ||
| + | wsrep_sst_method=rsync | ||
| + | |||
| + | # Galera Node Configuration | ||
| + | wsrep_node_address=" | ||
| + | wsrep_node_name=" | ||
| + | </ | ||
| + | |||
| + | На нодах db-msql-01 и db-msql-02 останавливаем службу mariadb: | ||
| + | <code bash> | ||
| + | systemctl stop mariadb | ||
| + | </ | ||
| + | На первой ноде db-msql-01 запустить скрипт создания кластера galera: | ||
| + | <code bash> | ||
| + | galera_new_cluster | ||
| + | </ | ||
| + | На второй ноде db-msql-02 запустить службу mariadb: | ||
| + | <code bash> | ||
| + | systemctl start mariadb | ||
| + | </ | ||
| + | На любом из узлов db-msql-01 или db-msql-02 выполнить проверку количества узлов в кластере (количество должно быть равно 2): | ||
| + | <code bash> | ||
| + | root@db-msql-01: | ||
| + | Enter password: | ||
| + | +--------------------+-------+ | ||
| + | | Variable_name | ||
| + | +--------------------+-------+ | ||
| + | | wsrep_cluster_size | 2 | | ||
| + | +--------------------+-------+ | ||
| + | </ | ||
| + | Устанавливаем службу арбитрации на узле db-sql: | ||
| + | <code bash> | ||
| + | apt-get install galera-arbitrator-4 | ||
| + | </ | ||
| + | Редактируем конфигурационный файл / | ||
| + | <code ini | garb> | ||
| + | GALERA_NODES=" | ||
| + | GALERA_GROUP=" | ||
| + | </ | ||
| + | Запускаем службу garbd: | ||
| + | <code bash> | ||
| + | systemctl status garbd | ||
| + | </ | ||
| + | Если все сделали правильно, | ||
| + | <code bash> | ||
| + | root@db-msql-01: | ||
| + | Enter password: | ||
| + | +--------------------+-------+ | ||
| + | | Variable_name | ||
| + | +--------------------+-------+ | ||
| + | | wsrep_cluster_size | 3 | | ||
| + | +--------------------+-------+ | ||
| + | </ | ||
| + | |||
| + | ===== Установка haproxy и настройка балансировки ===== | ||
| + | На узлах db-msql-01 и db-msql-02 необходимо отредактировать значение параметра **bind-address** в файле конфигурации **/ | ||
| + | <code ini> | ||
| + | # Instead of skip-networking the default is now to listen only on | ||
| + | # localhost which is more compatible and is not less secure. | ||
| + | bind-address | ||
| + | </ | ||
| + | После необходимо перезапустить службу mariadb: | ||
| + | <code bash> | ||
| + | systemctl restart mariadb.service | ||
| + | </ | ||
| + | Далее на любой из нод необходимо выполнить вход в sql-кдлиент и создать пользователя для haproxy: | ||
| + | <code bash> | ||
| + | root@db-msql-01: | ||
| + | Enter password: | ||
| + | MariaDB [(none)]> | ||
| + | MariaDB [(none)]> | ||
| + | </ | ||
| + | |||
| + | На узле db-sql устанавливаем пакет haproxy: | ||
| + | <code bash> | ||
| + | apt-get install haproxy | ||
| + | </ | ||
| + | В конфигурационный файл **/ | ||
| + | <code ini | haproxy.cfg> | ||
| + | listen galera | ||
| + | bind 192.168.100.39: | ||
| + | | ||
| + | mode tcp | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | Перезагружаем службу haproxy и проверяем статус: | ||
| + | <code bash> | ||
| + | systemctl reload haproxy.service | ||
| + | systemctl status haproxy.service | ||
| + | ● haproxy.service - HAProxy Load Balancer | ||
| + | | ||
| + | | ||
| + | Docs: man: | ||
| + | | ||
| + | Main PID: 23096 (haproxy) | ||
| + | Tasks: 3 (limit: 4612) | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Aug 22 14:18:15 db-sql haproxy[23488]: | ||
| + | Aug 22 14:18:15 db-sql haproxy[23488]: | ||
| + | Aug 22 14:18:15 db-sql haproxy[23488]: | ||
| + | Aug 22 14:18:15 db-sql haproxy[23488]: | ||
| + | Aug 22 14:18:15 db-sql haproxy[23953]: | ||
| + | Aug 22 14:18:15 db-sql haproxy[23096]: | ||
| + | Aug 22 14:18:16 db-sql haproxy[23953]: | ||
| + | Aug 22 14:18:16 db-sql haproxy[23953]: | ||
| + | Aug 22 14:26:19 db-sql haproxy[23953]: | ||
| + | Aug 22 14:26:20 db-sql haproxy[23953]: | ||
| + | </ | ||
