sql >> Database teknologi >  >> RDS >> MariaDB

Introduktion til MaxScale Administration Brug af maxctrl til MariaDB Cluster

MariaDB Cluster består af MariaDB Server med Galera Cluster og MariaDB MaxScale. Som en multi-master replikeringsløsning kan enhver MariaDB Server med Galera Cluster fungere som en primær server. Dette betyder, at ændringer foretaget på en hvilken som helst knude i klyngen replikeres til hver anden knude i klyngen ved hjælp af certificeringsbaseret replikering og global bestilling af transaktioner til InnoDB-lagringsmotoren. MariaDB MaxScale er en databaseproxy, der sidder oven på MariaDB-serveren, der udvider den høje tilgængelighed, skalerbarhed og sikkerhed, mens den samtidig forenkler applikationsudviklingen ved at afkoble den fra den underliggende databaseinfrastruktur.

I denne blogserie skal vi se på MaxScale-administrationen ved hjælp af maxctrl til vores MariaDB-klynge. I denne første del af blogserien vil vi dække introduktionen og nogle grundlæggende funktioner i maxctrl kommandolinjeværktøj. Vores opsætning består af én MaxScale-server og en 3-node MariaDB 10.4 med Galera 4, som illustreret i følgende diagram:

Vores MariaDB Cluster blev implementeret og administreret af ClusterControl, mens vores MaxScale-vært er en ny vært i klyngen og blev ikke implementeret af ClusterControl til formålet med denne gennemgang.

MaxScale-installation

MaxScale-installationen er ret ligetil. Vælg det rigtige operativsystem fra MariaDB-downloadsiden til MaxScale og download det. Følgende eksempel viser, hvordan man ville installere MaxScale på en CentOS 8-vært:

$ 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

Når dæmonen er startet, vil MaxScale-komponenter som standard køre på følgende porte:

  • 0.0.0.0:4006 - Standard læse-skrive-opdelingslytter.
  • 0.0.0.0:4008 – Standard round-robin lytter.
  • 127.0.0.1:8989 - MaxScale Rest API.

Ovenstående porte er udskiftelige. Det er almindeligt, at en selvstændig MaxScale-server i produktion kører med læse/skriveopdelingen på port 3306 og round-robin på port 3307. Denne konfiguration er, hvad vi vil implementere i dette blogindlæg.

Vigtige filer og mappestruktur

Når pakken er installeret, får du følgende hjælpeprogrammer/programmer:

  • maxscale - Selve MaxScale.
  • maxctrl - Den administrative kommandolinjeklient for MaxScale, som bruger MaxScale REST API til kommunikation.
  • maxadmin - Den forældede MaxScale-administrations- og monitorklient. Brug i stedet maxctrl.
  • maxkeys - Dette værktøj skriver ind i filen .secrets, i den angivne mappe, AES-krypteringsnøglen og init-vektoren, der bruges af værktøjet maxpasswd, ved kryptering af adgangskoder, der bruges i MariaDB MaxScale-konfigurationsfilen.
  • maxpasswd - Dette værktøj opretter en krypteret adgangskode ved hjælp af en .secrets-fil, der tidligere er blevet oprettet ved hjælp af maxkeys.

MaxScale vil indlæse alle konfigurationsmulighederne fra følgende steder, i den bestemte rækkefølge:

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

For at forstå mere om MaxScale-konfigurationen, se MaxScale-konfigurationsvejledningen.

Når MaxScale er initialiseret, er standardfilerne og mappestrukturerne:

  • MaxScale-datamappe:/var/lib/maxscale
  • MaxScale PID-fil:/var/run/maxscale/maxscale.pid
  • MaxScale-logfil:/var/log/maxscale/maxscale.log
  • MaxScale-dokumentation:/usr/share/maxscale

MaxCtrl - CLI

Når vi er startet, kan vi bruge MaxCtrl-kommandolinjeklienten til at administrere MaxScale ved at bruge MaxScale REST API-lytter på port 8989 på den lokale vært. Standardlegitimationsoplysningerne for REST API er "admin:mariadb". Brugerne, der bruges af REST API, er de samme, som bruges af MaxAdmin-netværksgrænsefladen. Dette betyder, at alle brugere, der er oprettet til MaxAdmin-netværksgrænsefladen, skal arbejde med MaxScale REST API og MaxCtrl.

Vi kan bruge maxctrl-værktøjet i interaktiv tilstand, svarende til mysql-klienten. Bare skriv "maxctrl", og du kommer ind i den interaktive tilstand (hvor prompten ændrede sig fra shell-prompten til maxctrl-prompt), ligesom følgende skærmbillede:

Alternativt kan vi udføre den samme kommando direkte i shell-prompten, for eksempel:

MaxCtrl-kommandoindstillinger afhænger af den MaxScale-version, der følger med. På det tidspunkt, hvor dette skrives, er MaxScale-versionen 2.4, og du bør se i denne dokumentation for en komplet liste over kommandoer. MaxCtrl bruger MaxScale REST API-grænsefladen, som forklarer detaljeret her.

Tilføjelse af MariaDB-servere til MaxScale

Når vi først starter vores MaxScale, vil den generere en konfigurationsfil på /etc/maxscale.cnf med nogle standardparametre og eksempler. Vi kommer ikke til at bruge denne konfiguration, og vi vil skabe vores egen i stedet. Opret en sikkerhedskopi af denne fil, fordi vi ønsker at tømme den senere:

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

Genstart MaxScale for at starte alt på en frisk:

$ systemctl restart maxscale

Udtrykket "server" i MaxScale betyder grundlæggende MariaDB-serveren, som i dette tilfælde alle 3 noder i vores MariaDB-klynge. For at tilføje alle de 3 MariaDB Cluster-servere til MaxScale runtime skal du bruge følgende kommandoer:

$ 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

For at bekræfte de tilføjede servere skal du bruge listekommandoen:

$ maxctrl list servers

Og du skulle se følgende output:

Tilføjelse af overvågning til MaxScale

Den næste ting er at konfigurere overvågningstjenesten til MaxScale-brug. MaxScale understøtter en række overvågningsmoduler afhængigt af databasetypen, nemlig:

  • MariaDB Monitor
  • Galera Monitor
  • Clustrix Monitor
  • ColumnStore Monitor
  • Aurora Monitor

I denne opsætning skal vi bruge Galera Monitor-modulet kaldet "galeramon". For det første skal vi oprette en databasebruger, der skal bruges af MaxScale på en af ​​serverne i MariaDB Cluster. I dette eksempel valgte vi mariadbgalera1, 192.168.0.221 til at køre følgende udsagn:

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';

Hvor 192.168.0.220 er IP-adressen på vores MaxScale-server.

Det er ikke sikkert at gemme maxscale_monitor-brugeradgangskoden i almindelig tekst. Det anbefales stærkt at gemme adgangskoden i et krypteret format i stedet for. For at opnå dette skal vi generere en hemmelig nøgle specifikt til denne MaxScale-instans. Brug "maxkeys"-værktøjet til at generere den hemmelige nøgle, der vil blive brugt af MaxScale til krypterings- og dekrypteringsformål:

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

Nu kan vi bruge værktøjet maxpasswd til at generere den krypterede værdi af vores adgangskode:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Vi vil altid bruge ovenstående værdi i stedet for, når vi gemmer vores overvågningsbrugeroplysninger i MaxScale. Nu er vi klar til at tilføje Galera-overvågningstjenesten til MaxScale ved hjælp af maxctrl:

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

Bekræft med følgende kommando:

Tilføjelse af tjenester til MaxScale

Service er grundlæggende, hvordan MaxScale skal dirigere forespørgslerne til backend-serverne. MaxScale 2.4 understøtter flere tjenester (eller routere), nemlig:

  • Avrorouter
  • Binlogrouter
  • Kat
  • CLI
  • HintRouter
  • Readconnroute
  • Readwritesplit
  • SchemaRouter
  • SmartRouter

Til vores MariaDB-klynge har vi kun brug for to routingtjenester - Læs-skrive-split og round-robin belastningsbalancering. For læse-skrive-opdeling vil skriveforespørgsler kun blive videresendt til en enkelt MariaDB-server, indtil serveren ikke kan nås, hvor MaxScale så videresender skriveforespørgslerne til den næste tilgængelige node. For round-robin-balancering vil forespørgslerne blive videresendt til alle backend-knuderne på en round-robin-måde.

Opret en routingtjeneste til round-robin (eller multi-master):

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

Opret en anden routingtjeneste til læse-skriveopdeling (eller single-master):

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

Bekræft med:

Alle de vellykkede oprettede komponenter af MaxCtrl vil generere sin egen konfigurationsfil under / var/lib/maxscale/maxscale.cnf.d. På dette tidspunkt ser mappen sådan ud:

$ 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

Tilføjelse af lyttere til MaxScale

Lyttere repræsenterer de porte, tjenesten vil lytte til indgående forbindelser. Det kan være en port- eller UNIX-socket-fil, og komponenttypen skal være "listener". Almindeligvis er lyttere bundet til tjenester. I vores opsætning vil vi oprette to lyttere - Read-Write Listener på port 3306 og Round-Robin Listener på port 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

Bekræft med følgende kommandoer:

På dette tidspunkt er vores MaxScale nu klar til at indlæse balance forespørgslerne til vores MariaDB-klynge. Fra applikationerne skal du sende forespørgslerne til MaxScale-værten på port 3306, hvor skriveforespørgslerne altid vil ramme den samme databaseknude, mens læseforespørgslerne sendes til de to andre noder. Dette er også kendt som en enkelt-skriver opsætning. Hvis du gerne vil bruge en multi-writer opsætning, hvor skrivninger vil blive videresendt til alle backend MariaDB noder baseret på round-robin balanceringsalgoritmer. Du kan finjustere afbalanceringen yderligere ved at bruge prioritet og vægt.

Igen, når du ændrer konfigurationsindstillingerne via maxctrl, vil alle succesfuldt oprettede komponenter have sin egen konfigurationsfil inde i /var/lib/maxscale/maxscale.cnf.d, som vist i følgende output:

$ 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

Ovenstående konfigurationsmuligheder kan ændres direkte, så de passer yderligere til dine behov, men det kræver, at MaxScale-tjenesten genstartes for at indlæse de nye ændringer. Hvis du gerne vil starte på en frisk igen, kan du slette alt under denne mappe og genstarte MaxScale.

I næste afsnit vil vi se nærmere på MaxCtrls styrings- og overvågningskommandoer for vores MariaDB-klynge.


  1. SQLite JSON_PATCH()

  2. C# parametriserede forespørgsler til Oracle - alvorlig og farlig fejl!

  3. MySQL antal elementer i klausulen

  4. LOBBEHOLDELSE