sql >> Databasteknik >  >> RDS >> MariaDB

Hur man installerar och konfigurerar MaxScale för MariaDB

Det finns olika anledningar till att lägga till en lastbalanserare mellan din applikation och din databas. Om du har hög trafik (och du vill balansera trafiken mellan olika databasnoder) eller om du vill använda lastbalanseraren som en enda slutpunkt (så i händelse av failover kommer denna lastbalanserare att hantera detta problem och skicka trafiken till tillgänglig/frisk nod.) Det kan också vara så att du vill använda olika portar för att skriva och läsa data från din databas.

I alla dessa fall kommer en lastbalanserare att vara användbar för dig, och om du har ett MariaDB-kluster är ett alternativ för detta att använda MaxScale som är en databasproxy för MariaDB-databaser.

I den här bloggen kommer vi att visa dig hur du installerar och konfigurerar det manuellt, och hur ClusterControl kan hjälpa dig i denna uppgift. I det här exemplet kommer vi att använda ett MariaDB-replikeringskluster med 1 master- och 1 slavnod och CentOS8 som operativsystem.

Hur man installerar MaxScale

Vi antar att du har din MariaDB-databas igång och även en maskin (virtuell eller fysisk) för att installera MaxScale. Vi rekommenderar att du använder en annan värd, så i händelse av masterfel kan MaxScale failover till slavnoden, annars kan MaxScale inte vidta några åtgärder om servern där den körs går ner.

Det finns olika sätt att installera MaxScale, i det här fallet kommer vi att använda MariaDB-förråden. För att lägga till den i MaxScale-servern måste du köra:

$ 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

Installera nu MaxScale-paketet:

$ yum install maxscale

Nu har du din MaxScale-nod installerad, innan du börjar måste du konfigurera den.

Hur man konfigurerar MaxScale

När MaxScale utför uppgifter som autentisering, övervakning och mer, måste du skapa en databasanvändare med vissa specifika privilegier:

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

Tänk på att MariaDB-versionerna 10.2.2 till 10.2.10 också kräver:

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

Nu har du databasanvändaren redo, låt oss se konfigurationsfilerna. När du installerar MaxScale kommer filen maxscale.cnf att skapas under /etc/. Det finns flera variabler och olika sätt att konfigurera det, så låt oss se ett exempel:

$ 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

I den här konfigurationen har vi 2 databasnoder, 192.168.100.126 (Master) och 192.168.100.127 (Slav), som du kan se i avsnittet Serverdefinition.

Vi har också 2 olika tjänster, en för skrivskyddad, där det finns slavnoden, och en annan för läs-skriv där det finns masternoden.

Äntligen har vi två lyssnare, en för varje tjänst. Den skrivskyddade lyssnaren, lyssnar i port 4008, och den läs-skrivande lyssnaren i port 4006.

Detta är en grundläggande konfigurationsfil. Om du behöver något mer specifikt kan du följa den officiella MariaDB-dokumentationen.

Nu är du redo att starta den, så kör bara:

$ systemctl start maxscale.service

Och kontrollera det:

$ maxctrl list services
ff
$ maxctrl list servers

Du kan hitta en maxctrl-kommandolista här, eller så kan du till och med använda maxadmin för att hantera det.

Låt oss nu testa anslutningen. För detta kan du försöka komma åt din databas med hjälp av MaxScale IP-adressen och porten som du vill testa. I vårt fall ska trafiken på port 4006 skickas till server1 och trafiken på port 4008 till server2.

$ 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   |

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

Det fungerar!

Hur man distribuerar MaxScale med ClusterControl

Låt oss se nu hur du kan använda ClusterControl för att förenkla den här uppgiften. För detta antar vi att du har lagt till ditt MariaDB-kluster i ClusterControl.

Gå till ClusterControl -> Välj MariaDB-klustret -> Cluster Actions -> Add Load Balancer -> MaxScale.

Här kan du distribuera en ny MaxScale-nod eller så kan du också importera en befintlig ett. Om du distribuerar det måste du lägga till IP-adressen eller värdnamnet, administratörs- och användaruppgifterna MaxScale, antal trådar och portar (skriv- och skrivskyddad). Du kan också ange vilken databasnod du vill lägga till i MaxScale-konfigurationen.

Du kan övervaka uppgiften i avsnittet ClusterControl-aktivitet. När det är klart kommer du att ha en ny MaxScale-nod i ditt MariaDB-kluster.

Och köra MaxScale-kommandona från ClusterControl-gränssnittet utan att behöva komma åt server via SSH.

Det ser lättare ut än att distribuera det manuellt, eller hur?

Slutsats

Att ha en lastbalanserare är en bra lösning om du vill balansera eller dela upp din trafik, eller till och med för failover-åtgärder, och MaxScale, som en MariaDB-produkt, är ett bra alternativ för MariaDB-databaser.

Installationen är enkel, men konfigurationen och användningen kan vara svår om det är något nytt för dig. I så fall kan du använda ClusterControl för att distribuera, konfigurera och hantera det på ett enklare sätt.


  1. Vad är nytt i MariaDB 10.4

  2. Infoga Blobs i MySql-databaser med php

  3. Ändra materialiserad vyfråga

  4. Bygg ett nyhetsbrevssystem med PHP och MySQL