MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да инсталирате и конфигурирате MaxScale за MariaDB

Има различни причини за добавяне на балансьор на натоварването между вашето приложение и вашата база данни. Ако имате голям трафик (и искате да балансирате трафика между различни възли на базата данни) или искате да използвате балансира на натоварването като единична крайна точка (така че в случай на отказ, този балансьор на натоварване ще се справи с този проблем, изпращайки трафика към наличен/здрав възел.) Възможно е също така да искате да използвате различни портове за запис и четене на данни от вашата база данни.

Във всички тези случаи ще ви бъде полезен балансьор на натоварването и ако имате MariaDB клъстер, една от опциите за това е използването на MaxScale, който е прокси за база данни за MariaDB бази данни.

В този блог ще ви покажем как да го инсталирате и конфигурирате ръчно и как ClusterControl може да ви помогне в тази задача. За този пример ще използваме MariaDB репликационен клъстер с 1 главен и 1 подчинен възел и CentOS8 като операционна система.

Как да инсталирате MaxScale

Ще приемем, че имате стартирана и работеща база данни MariaDB, както и машина (виртуална или физическа) за инсталиране на MaxScale. Препоръчваме ви да използвате друг хост, така че в случай на повреда на главния, MaxScale може да премине при отказ към подчинения възел, в противен случай MaxScale не може да предприеме никакви действия, ако сървърът, на който работи, се повреди.

Има различни начини за инсталиране на MaxScale, в този случай ще използваме хранилищата на MariaDB. За да го добавите към сървъра MaxScale, трябва да изпълните:

$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo

[info] Adding trusted package signing keys...

[info] Successfully added trusted package signing keys

Сега инсталирайте пакета MaxScale:

$ yum install maxscale

Сега имате инсталиран вашият MaxScale възел, преди да започнете, трябва да го конфигурирате.

Как да конфигурирате MaxScale

Тъй като MaxScale изпълнява задачи като удостоверяване, наблюдение и други, трябва да създадете потребител на база данни с някои специфични привилегии:

MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';

MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';

Имайте предвид, че MariaDB версии от 10.2.2 до 10.2.10 също изискват:

MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

Сега имате готов потребител на базата данни, нека да видим конфигурационните файлове. Когато инсталирате MaxScale, файлът maxscale.cnf ще бъде създаден под /etc/. Има няколко променливи и различни начини да го конфигурирате, така че нека видим пример:

$ cat  /etc/maxscale.cnf 

# Global parameters

[maxscale]

threads = auto

log_augmentation = 1

ms_timestamp = 1

syslog = 1



# Server definitions

[server1]

type=server

address=192.168.100.126

port=3306

protocol=MariaDBBackend

[server2]

type=server

address=192.168.100.127

port=3306

protocol=MariaDBBackend



# Monitor for the servers

[MariaDB-Monitor]

type=monitor

module=mariadbmon

servers=server1,server2

user=maxscaleuser

password=maxscalepassword

monitor_interval=2000



# Service definitions

[Read-Only-Service]

type=service

router=readconnroute

servers=server2

user=maxscaleuser

password=maxscalepassword

router_options=slave

[Read-Write-Service]

type=service

router=readwritesplit

servers=server1

user=maxscaleuser

password=maxscalepassword



# Listener definitions for the services

[Read-Only-Listener]

type=listener

service=Read-Only-Service

protocol=MariaDBClient

port=4008

[Read-Write-Listener]

type=listener

service=Read-Write-Service

protocol=MariaDBClient

port=4006

В тази конфигурация имаме 2 възела на базата данни, 192.168.100.126 (главен) и 192.168.100.127 (подчинен), както можете да видите в раздела „Определяне на сървъри“.

Имаме също 2 различни услуги, една за четене, където има подчинен възел, и друга за четене-запис, където има главния възел.

Накрая имаме 2 слушателя, по един за всяка услуга. Слушателят само за четене, слушащ през порт 4008, и този за четене и запис, слушащ в порт 4006.

Това е основен конфигурационен файл. Ако имате нужда от нещо по-конкретно, можете да следвате официалната документация на MariaDB.

Сега сте готови да го стартирате, така че просто стартирайте:

$ systemctl start maxscale.service

И проверете:

$ maxctrl list services
ff
$ maxctrl list servers

Тук можете да намерите списък с maxctrl команди или дори да използвате maxadmin за да го управлявате.

Сега нека тестваме връзката. За това можете да опитате да получите достъп до вашата база данни, като използвате MaxScale IP адреса и порта, който искате да тествате. В нашия случай трафикът на порт 4006 трябва да бъде изпратен към сървър 1, а трафикът на порт 4008 към сървър 2.

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'

+------------+

| @@hostname |

+------------+

| server1   |

+------------+

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'

+------------+

| @@hostname |

+------------+

| server2   |

+------------+

Работи!

Как да разположите MaxScale с ClusterControl

Нека сега да видим как можете да използвате ClusterControl, за да опростите тази задача. За това ще приемем, че вашият MariaDB клъстер е добавен към ClusterControl.

Отидете на ClusterControl -> Изберете клъстера MariaDB -> Действия на клъстера -> Добавяне на Load Balancer -> MaxScale.

Тук можете да разположите нов възел MaxScale или можете също да импортирате съществуващ един. Ако го разгръщате, трябва да добавите IP адрес или име на хост, идентификационни данни на администратора и потребителя MaxScale, количество нишки и портове (само за запис и четене). Можете също да посочите кой възел на базата данни искате да добавите към конфигурацията на MaxScale.

Можете да наблюдавате задачата в секцията ClusterControl Activity. Когато приключи, ще имате нов възел MaxScale във вашия MariaDB клъстер.

И изпълнение на командите MaxScale от потребителския интерфейс на ClusterControl, без да е необходимо достъп до сървър чрез SSH.

Изглежда по-лесно, отколкото да го внедрявате ръчно, нали?

Заключение

Наличието на Load Balancer е добро решение, ако искате да балансирате или разделите трафика си, или дори за действия при отказ, а MaxScale, като продукт на MariaDB, е добър вариант за бази данни на MariaDB.

Инсталацията е лесна, но конфигурацията и използването може да са трудни, ако е нещо ново за вас. В този случай можете да използвате ClusterControl, за да го разгръщате, конфигурирате и управлявате по по-лесен начин.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задайте набора от символи и сортиране на таблица в MariaDB

  2. Как да мигрираме WHMCS база данни към MariaDB Galera Cluster

  3. Балансиране на натоварването на MariaDB MaxScale на Docker:Управление:Част втора

  4. Как работи RAND() в MariaDB

  5. Сравняване на DBaaS решения при отказ с ръчни настройки за възстановяване