sql >> Databasteknik >  >> RDS >> MariaDB

Introduktion till MaxScale Administration Använda maxctrl för MariaDB Cluster

MariaDB Cluster består av MariaDB Server med Galera Cluster och MariaDB MaxScale. Som en multimasterreplikeringslösning kan vilken MariaDB-server som helst med Galera Cluster fungera som en primär server. Detta innebär att ändringar som görs på valfri nod i klustret replikerar till varannan nod i klustret, med användning av certifieringsbaserad replikering och global ordning av transaktioner för InnoDB-lagringsmotorn. MariaDB MaxScale är en databasproxy som sitter ovanpå MariaDB-servern som utökar den höga tillgängligheten, skalbarheten och säkerheten samtidigt som den förenklar applikationsutvecklingen genom att koppla den från den underliggande databasinfrastrukturen.

I den här bloggserien kommer vi att titta på MaxScale-administrationen med maxctrl för vårt MariaDB-kluster. I den här första delen av bloggserien kommer vi att täcka introduktionen och några grunder för maxctrl kommandoradsverktyg. Vår installation består av en MaxScale-server och en 3-nod MariaDB 10.4 med Galera 4, som illustreras i följande diagram:

Vårt MariaDB-kluster distribuerades och hanterades av ClusterControl, medan vår MaxScale-värd är en ny värd i klustret och distribuerades inte av ClusterControl för syftet med denna genomgång.

MaxScale-installation

MaxScale-installationen är ganska enkel. Välj rätt operativsystem från MariaDB-nedladdningssidan för MaxScale och ladda ner det. Följande exempel visar hur man skulle installera MaxScale på en CentOS 8-värd:

$ 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 demonen har startat kommer MaxScale-komponenter som standard att köras på följande portar:

  • 0.0.0.0:4006 – Standard läs-skriv-delande lyssnare.
  • 0.0.0.0:4008 – Standard round-robin-lyssnare.
  • 127.0.0.1:8989 - MaxScale Rest API.

Ovanstående portar är utbytbara. Det är vanligt att en fristående MaxScale-server i produktion körs med läs/skrivdelning på port 3306 och round-robin på port 3307. Denna konfiguration är vad vi kommer att distribuera i det här blogginlägget.

Viktiga filer och katalogstruktur

När paketet är installerat får du följande verktyg/program:

  • maxscale - Själva MaxScale.
  • maxctrl - Kommandoradsadministrativ klient för MaxScale som använder MaxScale REST API för kommunikation.
  • maxadmin - Den föråldrade administratörs- och övervakningsklienten för MaxScale. Använd maxctrl istället.
  • maxkeys - Det här verktyget skriver in i filen .secrets, i den angivna katalogen, AES-krypteringsnyckeln och initvektorn som används av verktyget maxpasswd, vid kryptering av lösenord som används i MariaDB MaxScale-konfigurationsfilen.
  • maxpasswd - Det här verktyget skapar ett krypterat lösenord med en .secrets-fil som tidigare har skapats med maxkeys.

MaxScale kommer att ladda alla konfigurationsalternativ från följande platser, i den speciella ordningen:

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

För att förstå mer om MaxScale-konfiguration, kolla in MaxScale Configuration Guide.

När MaxScale har initierats är standardfilerna och katalogstrukturerna:

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

MaxCtrl - CLI

När vi har startat kan vi använda kommandoradsklienten MaxCtrl för att administrera MaxScale genom att använda MaxScale REST API-lyssningar på port 8989 på den lokala värden. Standardinloggningsuppgifterna för REST API är "admin:mariadb". Användarna som används av REST API är desamma som används av MaxAdmin nätverksgränssnitt. Detta innebär att alla användare som skapats för MaxAdmin-nätverksgränssnittet bör fungera med MaxScale REST API och MaxCtrl.

Vi kan använda verktyget maxctrl i interaktivt läge, liknande mysql-klienten. Skriv bara "maxctrl" så kommer du in i det interaktiva läget (där prompten ändrades från skalprompten till maxctrl prompt), precis som följande skärmdump:

Alternativt kan vi köra samma kommando direkt i skalprompten, till exempel:

MaxCtrl-kommandoalternativen beror på MaxScale-versionen som medföljer. När detta skrivs är MaxScale-versionen 2.4 och du bör titta i den här dokumentationen för en komplett lista med kommandon. MaxCtrl använder MaxScale REST API-gränssnittet, som förklarar i detalj här.

Lägga till MariaDB-servrar i MaxScale

När vi först startar vår MaxScale kommer den att generera en konfigurationsfil på /etc/maxscale.cnf med några standardparametrar och exempel. Vi kommer inte att använda den här konfigurationen och vi kommer att skapa vår egen istället. Skapa en säkerhetskopia av den här filen eftersom vi vill tömma den senare:

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

Starta om MaxScale för att starta allt på nytt:

$ systemctl restart maxscale

Termen "server" i MaxScale betyder i princip den bakre delen av MariaDB-servern, som i det här fallet, alla tre noder i vårt MariaDB-kluster. För att lägga till alla 3 MariaDB Cluster-servrarna i MaxScale runtime, använd följande kommandon:

$ 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

För att verifiera de tillagda servrarna, använd listkommandot:

$ maxctrl list servers

Och du bör se följande utdata:

Lägga till övervakning i MaxScale

Nästa sak är att konfigurera övervakningstjänsten för MaxScale-användning. MaxScale stöder ett antal övervakningsmoduler beroende på databastyp, nämligen:

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

I den här installationen kommer vi att använda Galera Monitor-modulen som heter "galeramon". För det första måste vi skapa en databasanvändare som ska användas av MaxScale på en av servrarna i MariaDB-klustret. I det här exemplet valde vi mariadbgalera1, 192.168.0.221 för att köra följande satser:

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

Där 192.168.0.220 är IP-adressen för vår MaxScale-server.

Det är inte säkert att lagra användarlösenordet för maxscale_monitor i vanlig text. Det rekommenderas starkt att lagra lösenordet i ett krypterat format istället. För att uppnå detta måste vi skapa en hemlig nyckel specifikt för denna MaxScale-instans. Använd verktyget "maxkeys" för att generera den hemliga nyckeln som kommer att användas av MaxScale för kryptering och dekrypteringsändamål:

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

Nu kan vi använda maxpasswd-verktyget för att generera det krypterade värdet av vårt lösenord:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Vi kommer alltid att använda ovanstående värde istället när vi lagrar våra användaruppgifter för övervakning i MaxScale. Nu är vi redo att lägga till Galera-övervakningstjänsten i MaxScale med maxctrl:

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

Verifiera med följande kommando:

Lägga till tjänster i MaxScale

Tjänsten är i grunden hur MaxScale ska dirigera frågorna till backend-servrarna. MaxScale 2.4 stöder flera tjänster (eller routrar), nämligen:

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

För vårt MariaDB-kluster behöver vi bara två routingtjänster - Läs-skriv-delad och round-robin lastbalansering. För läs-skrivdelning kommer skrivfrågor att vidarebefordras till endast en enda MariaDB-server tills servern inte går att nå, där MaxScale sedan vidarebefordrar skrivfrågorna till nästa tillgängliga nod. För round-robin-balansering kommer frågorna att vidarebefordras till alla backend-noder på ett round-robin-sätt.

Skapa en routingtjänst för round-robin (eller multi-master):

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

Skapa en annan routningstjänst för läs-skrivdelning (eller singelmaster):

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

Verifiera med:

Alla framgångsrikt skapade komponenter av MaxCtrl kommer att generera sin egen konfigurationsfil under / var/lib/maxscale/maxscale.cnf.d. Vid det här laget ser katalogen ut så här:

$ 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

Lägga till lyssnare i MaxScale

Lyssnare representerar portarna som tjänsten lyssnar på inkommande anslutningar. Det kan vara en port- eller UNIX-socket-fil och komponenttypen måste vara "lyssnare". Vanligtvis är lyssnare bundna till tjänster. I vår installation kommer vi att skapa två lyssnare - Read-Write Listener på port 3306 och 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

Verifiera med följande kommandon:

Vid denna tidpunkt är vår MaxScale nu redo att lastbalansera frågorna för att vårt MariaDB-kluster. Från applikationerna skickar du frågorna till MaxScale-värden på port 3306, där skrivfrågorna alltid kommer att träffa samma databasnod medan läsfrågorna kommer att skickas till de andra två noderna. Detta är också känt som en enkelskrivaruppställning. Om du vill använda en multi-writer-inställning, där skrivningar vidarebefordras till alla backend MariaDB-noder baserat på round-robin balanseringsalgoritmer. Du kan finjustera balanseringen ytterligare genom att använda prioritet och vikt.

Återigen, när du ändrar konfigurationsalternativen via maxctrl, kommer alla framgångsrikt skapade komponenter att ha sin egen konfigurationsfil inuti /var/lib/maxscale/maxscale.cnf.d, som visas i följande utdata:

$ 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

Ovanstående konfigurationsalternativ kan modifieras direkt för att passa dina behov, men det kräver att MaxScale-tjänsten startas om för att ladda de nya ändringarna. Om du vill börja om igen kan du rensa allt under den här katalogen och starta om MaxScale.

I nästa avsnitt kommer vi att titta på MaxCtrls hanterings- och övervakningskommandon för vårt MariaDB-kluster.


  1. orakel | radera dubbletter av poster

  2. Hur skickar jag in lösenordet till pg_dump?

  3. om min tabell har 4 kolumner och jag vill hämta den tredje kolumnen vad gör jag.

  4. #1273 - Okänd sammanställning:'utf8mb4_unicode_ci' cPanel