Инструменты пользователя

Инструменты сайта


common_linux:galera_cluster

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
common_linux:galera_cluster [2022/08/23 13:04] rootcommon_linux:galera_cluster [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1
Строка 3: Строка 3:
  \\ Для небольшой инсталляции будет использовано две ноды MariaDB, а для создания нечетного количества нод будет добавлен арбитр - сервис garbd (https://galeracluster.com/library/documentation/arbitrator.html)  \\ Для небольшой инсталляции будет использовано две ноды MariaDB, а для создания нечетного количества нод будет добавлен арбитр - сервис garbd (https://galeracluster.com/library/documentation/arbitrator.html)
  \\ Если планируется использовать 3 ноды репликации, то арбитр не требуется.  \\ Если планируется использовать 3 ноды репликации, то арбитр не требуется.
-{{ :common_linux:pasted:20220823-121022.png }}+{{ common_linux:pasted:20220823-121022.png }}
 Сервис арбитража будет установлен на ноду балансировки нагрузки. В качестве балансировщика используется haproxy. Сервис арбитража будет установлен на ноду балансировки нагрузки. В качестве балансировщика используется haproxy.
  \\ В данном примере будет задействован только один балансировщик, он же будет являться единственной точкой отказа. Для серьезных инсталляций лучше использовать аппаратный балансировщик (типа Citrix Netscaler), либо несколько экземпляров haproxy, на которые в свою очередь ставиться keepalived демон, который создает общий виртуальный IP адрес.  \\ В данном примере будет задействован только один балансировщик, он же будет являться единственной точкой отказа. Для серьезных инсталляций лучше использовать аппаратный балансировщик (типа Citrix Netscaler), либо несколько экземпляров haproxy, на которые в свою очередь ставиться keepalived демон, который создает общий виртуальный IP адрес.
Строка 11: Строка 11:
 | db-sql             | 192.168.100.39  | Балансировщик и арбитр  | | db-sql             | 192.168.100.39  | Балансировщик и арбитр  |
  
-===== Установка Maria DB =====+===== Установка Maria DB и включение механизма репликации=====
 Перед инсталляцией необходимо обновить ОС и пакеты на **всех** узлах: Перед инсталляцией необходимо обновить ОС и пакеты на **всех** узлах:
 <code bash> <code bash>
Строка 51: Строка 51:
 nano /etc/mysql/conf.d/galera.cnf nano /etc/mysql/conf.d/galera.cnf
 </code> </code>
-<code ini | download>+<code ini | galera.cnf>
 [mysqld] [mysqld]
 binlog_format=ROW binlog_format=ROW
Строка 63: Строка 63:
  
 # Galera Cluster Configuration # Galera Cluster Configuration
-wsrep_cluster_name="galera_cluster" +wsrep_cluster_name="galera_cluster" #указываем наименование кластера 
-wsrep_cluster_address="gcomm://192.168.100.37,192.168.100.38"+wsrep_cluster_address="gcomm://192.168.100.37,192.168.100.38" #сюда вписываем через запятую IP/имена всех узлов (MariaDB) кластера
  
 # Galera Synchronization Configuration # Galera Synchronization Configuration
Строка 72: Строка 72:
 wsrep_node_address="192.168.100.37" # для второй ноды указываем соответственно 192.168.100.38 wsrep_node_address="192.168.100.37" # для второй ноды указываем соответственно 192.168.100.38
 wsrep_node_name="db-msql-01" # для второй ноды указываем соответственно db-msql-02 wsrep_node_name="db-msql-01" # для второй ноды указываем соответственно db-msql-02
 +</code>
  
 +На нодах db-msql-01 и db-msql-02 останавливаем службу mariadb:
 +<code bash>
 +systemctl stop mariadb
 </code> </code>
 +На первой ноде db-msql-01 запустить скрипт создания кластера galera:
 +<code bash>
 +galera_new_cluster
 +</code>
 +На второй ноде db-msql-02 запустить службу mariadb:
 +<code bash>
 +systemctl start mariadb
 +</code>
 +На любом из узлов db-msql-01 или db-msql-02 выполнить проверку количества узлов в кластере (количество должно быть равно 2):
 +<code bash>
 +root@db-msql-01:~# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
 +Enter password:
 ++--------------------+-------+
 +| Variable_name      | Value |
 ++--------------------+-------+
 +| wsrep_cluster_size | 2     |
 ++--------------------+-------+
 +</code>
 +Устанавливаем службу арбитрации на узле db-sql:
 +<code bash>
 +apt-get install galera-arbitrator-4
 +</code>
 +Редактируем конфигурационный файл /etc/default/garb:
 +<code ini | garb>
 +GALERA_NODES="192.168.100.37,192.168.100.38" # указываем через запятую узлы кластера
 +GALERA_GROUP="galera_cluster" # указываем наименование кластера
 +</code>
 +Запускаем службу garbd:
 +<code bash>
 +systemctl status garbd
 +</code>
 +Если все сделали правильно, то при повторе запроса на размер кластера получим увеличение количества до 3:
 +<code bash>
 +root@db-msql-01:~# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
 +Enter password:
 ++--------------------+-------+
 +| Variable_name      | Value |
 ++--------------------+-------+
 +| wsrep_cluster_size | 3     |
 ++--------------------+-------+
 +</code>
 +
 +===== Установка haproxy и настройка балансировки =====
 +На узлах db-msql-01 и db-msql-02 необходимо отредактировать значение параметра **bind-address** в файле конфигурации **/etc/mysql/mariadb.conf.d/50-server.cnf** для того, что бы демон mariadb принимал запросы не только с локального интерфейса, но из других сетей:
 +<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            = 0.0.0.0
 +</code>
 +После необходимо перезапустить службу mariadb:
 +<code bash>
 +systemctl restart mariadb.service
 +</code>
 +Далее на любой из нод необходимо выполнить вход в sql-кдлиент и создать пользователя для haproxy:
 +<code bash>
 +root@db-msql-01:~# mysql -u root -p
 +Enter password:
 +MariaDB [(none)]> CREATE USER 'haproxy'@'192.168.100.39';
 +MariaDB [(none)]> FLUSH PRIVILEGES;
 +</code>
 +
 +На узле db-sql устанавливаем пакет haproxy:
 +<code bash>
 +apt-get install haproxy
 +</code>
 +В конфигурационный файл **/etc/haproxy/haproxy.cfg** добавляем блок:
 +<code ini | haproxy.cfg>
 +listen galera
 +     bind 192.168.100.39:3306 # вешаем сервис на физический IP:порт
 +     balance source
 +     mode tcp
 +     option tcpka
 +     option mysql-check user haproxy # указываем опцию проверки sql, с указанием имени пользователя, который будет стучаться к СУБД
 +     server node1 192.168.100.37:3306 check weight 1 # указываем первый и 
 +     server node2 192.168.100.38:3306 check weight 1 # последующие бэкенды
 +</code>
 +Перезагружаем службу haproxy и проверяем статус:
 +<code bash>
 +systemctl reload haproxy.service
 +systemctl status haproxy.service
 +● haproxy.service - HAProxy Load Balancer
 +     Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
 +     Active: active (running) since Mon 2022-08-22 13:58:31 UTC; 22h ago
 +       Docs: man:haproxy(1)
 +             file:/usr/share/doc/haproxy/configuration.txt.gz
 +   Main PID: 23096 (haproxy)
 +      Tasks: 3 (limit: 4612)
 +     Memory: 2.7M
 +     CGroup: /system.slice/haproxy.service
 +             ├─23096 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock -sf 23488 -x /run/haproxy/admin.sock
 +             └─23953 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock -sf 23488 -x /run/haproxy/admin.sock
 +
 +Aug 22 14:18:15 db-sql haproxy[23488]: [WARNING] 233/141815 (23488) : Stopping frontend GLOBAL in 0 ms.
 +Aug 22 14:18:15 db-sql haproxy[23488]: [WARNING] 233/141815 (23488) : Stopping proxy galera in 0 ms.
 +Aug 22 14:18:15 db-sql haproxy[23488]: [WARNING] 233/141815 (23488) : Proxy GLOBAL stopped (FE: 1 conns, BE: 1 conns).
 +Aug 22 14:18:15 db-sql haproxy[23488]: [WARNING] 233/141815 (23488) : Proxy galera stopped (FE: 0 conns, BE: 0 conns).
 +Aug 22 14:18:15 db-sql haproxy[23953]: [WARNING] 233/141815 (23953) : Server galera/node1 is DOWN, reason: Socket error, info: "Connection reset by peer", check duration: 1m>
 +Aug 22 14:18:15 db-sql haproxy[23096]: [WARNING] 233/141815 (23096) : Former worker #1 (23488) exited with code 0 (Exit)
 +Aug 22 14:18:16 db-sql haproxy[23953]: [WARNING] 233/141816 (23953) : Server galera/node2 is DOWN, reason: Socket error, info: "Connection reset by peer", check duration: 1m>
 +Aug 22 14:18:16 db-sql haproxy[23953]: [ALERT] 233/141816 (23953) : proxy 'galera' has no server available!
 +Aug 22 14:26:19 db-sql haproxy[23953]: [WARNING] 233/142619 (23953) : Server galera/node2 is UP, reason: Layer7 check passed, code: 0, info: "5.5.5-10.3.34-MariaDB-0ubuntu0.>
 +Aug 22 14:26:20 db-sql haproxy[23953]: [WARNING] 233/142620 (23953) : Server galera/node1 is UP, reason: Layer7 check passed, code: 0, info: "5.5.5-10.3.34-MariaDB-0ubuntu0.>
 +</code>
 +
common_linux/galera_cluster.1661249073.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)