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

Въведение в администрирането на MaxScale Използване на maxctrl за MariaDB Cluster

Клъстер MariaDB се състои от MariaDB сървър с Galera Cluster и MariaDB MaxScale. Като решение за репликация с множество главни, всеки MariaDB сървър с Galera Cluster може да работи като основен сървър. Това означава, че промените, направени в който и да е възел в клъстера, се репликират на всеки друг възел в клъстера, като се използва базирана на сертификация репликация и глобално подреждане на транзакции за машината за съхранение на InnoDB. MariaDB MaxScale е прокси сървър на база данни, разположен върху сървъра на MariaDB, който разширява високата наличност, мащабируемост и сигурност, като в същото време опростява разработването на приложения, като го отделя от основната инфраструктура на базата данни.

В тази серия от блогове ще разгледаме администрацията на MaxScale, използвайки maxctrl за нашия MariaDB клъстер. В тази първа част от поредицата от блогове ще покрием въведението и някои основи на помощната програма за команден ред maxctrl. Нашата настройка се състои от един сървър MaxScale и MariaDB 10.4 с 3 възли с Galera 4, както е илюстрирано на следната диаграма:

Нашият MariaDB клъстер беше внедрен и управляван от ClusterControl, докато нашият хост MaxScale е нов хост в клъстера и не е разгърнат от ClusterControl за целите на това ръководство.

Инсталиране на MaxScale

Инсталацията на MaxScale е доста проста. Изберете правилната операционна система от страницата за изтегляне на MariaDB за MaxScale и я изтеглете. Следният пример показва как човек би инсталирал MaxScale на хост на CentOS 8:

$ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
$ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
$ systemctl enable maxscale
$ systemctl start maxscale

След стартиране на демона, по подразбиране компонентите на MaxScale ще работят на следните портове:

  • 0.0.0.0:4006 – Слушател за разделяне на четене и запис по подразбиране.
  • 0.0.0.0:4008 - Стандартен кръгъл слушател.
  • 127.0.0.1:8989 – MaxScale Rest API.

Горните портове са променливи. Обичайно е самостоятелен сървър MaxScale в производство да работи с разделяне на четене/запис на порт 3306 и кръгово на порт 3307. Тази конфигурация е това, което ще внедрим в тази публикация в блога.

Важни файлове и структура на директории

След като пакетът бъде инсталиран, ще получите следните помощни програми/програми:

  • maxscale - Самата MaxScale.
  • maxctrl – Административният клиент от командния ред за MaxScale, който използва MaxScale REST API за комуникация.
  • maxadmin - Отхвърленият клиент за администриране и мониторинг на MaxScale. Вместо това използвайте maxctrl.
  • maxkeys - Тази помощна програма записва във файла .secrets, в посочената директория, ключа за криптиране AES и вектора за инициализиране, които се използват от помощната програма maxpasswd, когато криптира пароли, използвани в конфигурационния файл на MariaDB MaxScale.
  • maxpasswd - Тази помощна програма създава криптирана парола с помощта на файл .secrets, който е бил създаден по-рано с помощта на клавиши maxkeys.

MaxScale ще зареди всички опции за конфигурация от следните места, в определен ред:

  1. /etc/maxscale.cnf
  2. /etc/maxscale.cnf.d/*.cnf
  3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

За да разберете повече за конфигурацията на MaxScale, вижте Ръководството за конфигуриране на MaxScale.

След като MaxScale се инициализира, файловете по подразбиране и структурите на директории са:

  • Директория с данни на MaxScale:/var/lib/maxscale
  • PID файл на MaxScale:/var/run/maxscale/maxscale.pid
  • Регистрационен файл на MaxScale:/var/log/maxscale/maxscale.log
  • Документация за MaxScale:/usr/share/maxscale

MaxCtrl - CLI

След като стартираме, можем да използваме клиента от командния ред MaxCtrl, за да администрираме MaxScale, като използваме MaxScale REST API изслушване на порт 8989 на локалния хост. Идентификационните данни по подразбиране за REST API са "admin:mariadb". Потребителите, използвани от REST API, са същите, които се използват от мрежовия интерфейс на MaxAdmin. Това означава, че всички потребители, създадени за мрежовия интерфейс на MaxAdmin, трябва да работят с MaxScale REST API и MaxCtrl.

Можем да използваме помощната програма maxctrl в интерактивен режим, подобно на mysql клиента. Просто напишете "maxctrl" и ще влезете в интерактивния режим (където подканата се промени от подкана на shell в подкана maxctrl), точно като следната екранна снимка:

Алтернативно можем да изпълним същата команда директно в подканата на shell, например:

Опциите на командата MaxCtrl зависят от версията на MaxScale, която идва с нея. Към момента на това писане версията на MaxScale е 2.4 и трябва да разгледате тази документация за пълен списък с команди. MaxCtrl използва MaxScale REST API интерфейс, който обяснява подробно тук.

Добавяне на MariaDB сървъри в MaxScale

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

$ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
$ cat /dev/null > /etc/maxscale.cnf # empty the file

Рестартирайте MaxScale, за да стартирате всичко наново:

$ systemctl restart maxscale

Терминът "сървър" в MaxScale основно означава сървърния MariaDB сървър, както в този случай, всичките 3 възела на нашия MariaDB клъстер. За да добавите всички 3 MariaDB Cluster сървъра към MaxScale runtime, използвайте следните команди:

$ maxctrl create server mariadbgalera1 192.168.0.221 3306
$ maxctrl create server mariadbgalera2 192.168.0.222 3306
$ maxctrl create server mariadbgalera3 192.168.0.222 3306

За да проверите добавените сървъри, използвайте командата list:

$ maxctrl list servers

И трябва да видите следния изход:

Добавяне на наблюдение в MaxScale

Следващото нещо е да конфигурирате услугата за наблюдение за използване на MaxScale. MaxScale поддържа редица модули за наблюдение в зависимост от типа база данни, а именно:

  • Монитор на MariaDB
  • Монитор на Галера
  • Clustrix Monitor
  • Монитор на ColumnStore
  • Монитор Aurora

В тази настройка ще използваме модула Galera Monitor, наречен "galeramon". Първо, трябва да създадем потребител на база данни, който да се използва от MaxScale на един от сървърите в клъстера MariaDB. В този пример избрахме mariadbgalera1, 192.168.0.221, за да изпълним следните оператори:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Където 192.168.0.220 е IP адресът на нашия сървър MaxScale.

Не е безопасно да съхранявате потребителската парола maxscale_monitor в обикновен текст. Силно препоръчително е вместо това паролата да се съхранява в криптиран формат. За да постигнем това, трябва да генерираме таен ключ специално за този екземпляр на MaxScale. Използвайте помощната програма "maxkeys", за да генерирате секретния ключ, който ще се използва от MaxScale за целите на криптиране и декриптиране:

$ maxkeys
Generating .secrets file in /var/lib/maxscale.

Сега можем да използваме помощната програма maxpasswd, за да генерираме криптираната стойност на нашата парола:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Винаги ще използваме горната стойност вместо това, когато съхраняваме нашите потребителски идентификационни данни за наблюдение в MaxScale. Сега сме готови да добавим услугата за наблюдение Galera в MaxScale с помощта на maxctrl:

maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB

Проверете със следната команда:

Добавяне на услуги в MaxScale

Услугата е основно начинът, по който MaxScale трябва да насочва заявките към сървърите на бекенда. MaxScale 2.4 поддържа множество услуги (или рутери), а именно:

  • Avrorouter
  • Binlogrouter
  • Котка
  • CLI
  • HintRouter
  • Readconnroute
  • Разделяне на четене на запис
  • SchemaRouter
  • SmartRouter

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

Създайте услуга за маршрутизиране за кръгово (или мулти-мастер):

maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Създайте друга услуга за маршрутизиране за разделяне на четене-запис (или единична главна):

maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Проверете с:

Всички успешно създадени компоненти от MaxCtrl ще генерират свой собствен конфигурационен файл под / var/lib/maxscale/maxscale.cnf.d. В този момент директорията изглежда така:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
total 24
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

Добавяне на слушатели в MaxScale

Слушателите представляват портовете, които услугата ще слуша входящите връзки. Това може да бъде файл на порт или UNIX сокет и типът на компонента трябва да е "слушател". Обикновено слушателите са обвързани с услуги. В нашата настройка ще създадем два слушателя - Read-Write Listener на порт 3306 и Round-Robin Listener на порт 3307:

maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

Проверете със следните команди:

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

Отново, когато променяте опциите за конфигурация чрез maxctrl, всички успешно създадени компоненти ще имат свой собствен конфигурационен файл в /var/lib/maxscale/maxscale.cnf.d, както е показано в следния изход:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

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

В следващия епизод ще разгледаме командите за управление и наблюдение на MaxCtrl за нашия MariaDB клъстер.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част първа

  2. Производителност на драйвера на MariaDB Java Connector

  3. Съвети за наблюдение на MariaDB клъстер

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

  5. Как LTRIM_ORACLE() работи в MariaDB