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

Sådan installeres og konfigureres MaxScale til MariaDB

Der er forskellige grunde til at tilføje en belastningsbalancer mellem dit program og din database. Hvis du har høj trafik (og du ønsker at balancere trafikken mellem forskellige databasenoder), eller du vil bruge belastningsbalanceren som et enkelt slutpunkt (så i tilfælde af failover, vil denne belastningsbalancer klare dette problem ved at sende trafikken til tilgængelig/sund node.) Det kan også være, at du vil bruge forskellige porte til at skrive og læse data fra din database.

I alle disse tilfælde vil en load balancer være nyttig for dig, og hvis du har en MariaDB-klynge, er en mulighed for dette at bruge MaxScale, som er en databaseproxy for MariaDB-databaser.

I denne blog vil vi vise dig, hvordan du installerer og konfigurerer det manuelt, og hvordan ClusterControl kan hjælpe dig med denne opgave. I dette eksempel vil vi bruge en MariaDB-replikeringsklynge med 1 master- og 1 slavenode og CentOS8 som operativsystem.

Sådan installeres MaxScale

Vi antager, at du har din MariaDB-database oppe at køre, og også en maskine (virtuel eller fysisk) til at installere MaxScale. Vi anbefaler, at du bruger en anden vært, så i tilfælde af masterfejl kan MaxScale failover til slavenoden, ellers kan MaxScale ikke foretage sig noget, hvis serveren, hvor den kører, går ned.

Der er forskellige måder at installere MaxScale på, i dette tilfælde vil vi bruge MariaDB-lagrene. For at tilføje det til MaxScale-serveren skal du køre:

$ 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

Installer nu MaxScale-pakken:

$ yum install maxscale

Nu har du din MaxScale-node installeret, før du starter, skal du konfigurere den.

Sådan konfigureres MaxScale

Når MaxScale udfører opgaver som godkendelse, overvågning og mere, skal du oprette en databasebruger med nogle specifikke 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'@'%';

Husk, at MariaDB version 10.2.2 til 10.2.10 også kræver:

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

Nu har du databasebrugeren klar, lad os se konfigurationsfilerne. Når du installerer MaxScale, vil filen maxscale.cnf blive oprettet under /etc/. Der er flere variabler og forskellige måder at konfigurere det på, så lad os se et eksempel:

$ 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 denne konfiguration har vi 2 databasenoder, 192.168.100.126 (Master) og 192.168.100.127 (Slave), som du kan se i afsnittet Serverdefinition.

Vi har også 2 forskellige tjenester, en til skrivebeskyttet, hvor der er slaveknuden, og en anden til læse-skrive, hvor der er masterknuden.

Endelig har vi 2 lyttere, en til hver tjeneste. Den skrivebeskyttede lytter, der lytter i port 4008, og den læse-skrive lytter i port 4006.

Dette er en grundlæggende konfigurationsfil. Hvis du har brug for noget mere specifikt, kan du følge den officielle MariaDB-dokumentation.

Nu er du klar til at starte den, så bare kør:

$ systemctl start maxscale.service

Og tjek det:

$ maxctrl list services
ff
$ maxctrl list servers

Du kan finde en maxctrl-kommandoliste her, eller du kan endda bruge maxadmin at administrere det.

Lad os nu teste forbindelsen. Til dette kan du prøve at få adgang til din database ved hjælp af MaxScale IP-adressen og den port, du vil teste. I vores tilfælde skal trafikken på port 4006 sendes til server1, og trafikken på port 4008 til 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 virker!

Sådan implementerer du MaxScale med ClusterControl

Lad os nu se, hvordan du kan bruge ClusterControl til at forenkle denne opgave. Til dette antager vi, at du har tilføjet din MariaDB-klynge til ClusterControl.

Gå til ClusterControl -> Vælg MariaDB-klyngen -> Cluster Actions -> Add Load Balancer -> MaxScale.

Her kan du implementere en ny MaxScale-node, eller du kan også importere en eksisterende en. Hvis du implementerer det, skal du tilføje IP-adressen eller værtsnavnet, admin- og brugerens MaxScale-legitimationsoplysninger, mængden af ​​tråde og porte (skrive- og skrivebeskyttet). Du kan også angive, hvilken databasenode du vil tilføje til MaxScale-konfigurationen.

Du kan overvåge opgaven i afsnittet ClusterControl Activity. Når det er færdigt, vil du have en ny MaxScale-node i din MariaDB-klynge.

Og køre MaxScale-kommandoerne fra ClusterControl-brugergrænsefladen uden behov for at få adgang til server via SSH.

Det ser nemmere ud end at implementere det manuelt, ikke?

Konklusion

At have en Load Balancer er en god løsning, hvis du ønsker at balancere eller opdele din trafik, eller endda for failover-handlinger, og MaxScale, som et MariaDB-produkt, er en god mulighed for MariaDB-databaser.

Installationen er nem, men konfigurationen og brugen kan være vanskelig, hvis det er noget nyt for dig. I så fald kan du bruge ClusterControl til at implementere, konfigurere og administrere det på en nemmere måde.


  1. Opret indlejrede JSON-arrays ved hjælp af FOR JSON PATH

  2. Ydeevnemyter:Klyngede vs. ikke-klyngede indekser

  3. Slet alle tabeller, hvis navne begynder med en bestemt streng

  4. Sådan krypterer du en opdelt database i Access 2016