MariaDB (MySQL)-cluster: Azure-zelf studie
Belangrijk
Klassieke virtuele machines zullen worden ingetrokken op 1 maart 2023.
Als u IaaS-resources van ASM gebruikt, voltooit u de migratie op 1 maart 2023. We raden u aan de switch sneller te laten profiteren van de vele functie verbeteringen in Azure Resource Manager.
Zie voor meer informatie uw IaaS-Resources migreren naar Azure Resource Manager op 1 maart 2023.
Notitie
Azure heeft twee verschillende implementatie modellen voor het maken van en werken met resources: Azure Resource Manager en klassiek. Dit artikel is van toepassing op het klassieke implementatiemodel. Micro soft raadt aan de meeste nieuwe implementaties het Azure Resource Manager model te gebruiken.
Notitie
MariaDB Enter prise-cluster is nu beschikbaar in de Azure Marketplace. Met de nieuwe aanbieding wordt automatisch een MariaDB Galera-cluster geïmplementeerd op Azure Resource Manager. U moet de nieuwe aanbieding van Azure Marketplacegebruiken.
In dit artikel wordt beschreven hoe u een Galera -cluster van MariaDBs (een robuuste, schaal bare en betrouw bare vervanging voor MySQL) maakt voor gebruik in een omgeving met hoge Beschik baarheid op Azure virtual machines.
Overzicht van de architectuur
In dit artikel wordt beschreven hoe u de volgende stappen uitvoert:
- Maak een cluster met drie knoop punten.
- Scheid de gegevens schijven van de besturingssysteem schijf.
- Maak de gegevens schijven in de RAID-0/striped-instelling om IOPS te verhogen.
- Gebruik Azure Load Balancer om de belasting voor de drie knoop punten te verdelen.
- Als u terugkerende werk wilt minimaliseren, maakt u een VM-installatie kopie die MariaDB + Galera bevat en gebruikt u deze om de andere cluster-Vm's te maken.

Notitie
In dit onderwerp worden de Azure cli -hulpprogram ma's gebruikt. Zorg er daarom voor dat u deze downloadt en verbindt met uw Azure-abonnement volgens de instructies. Als u een verwijzing nodig hebt naar de opdrachten die beschikbaar zijn in de Azure CLI, raadpleegt u de Naslag informatie voor Azure cli-opdrachten. U moet ook een SSH-sleutel maken voor verificatie en noteer de locatie van het. pem-bestand.
De sjabloon maken
Infrastructuur
Maak een affiniteits groep om de resources samen op te slaan.
azure account affinity-group create mariadbcluster --location "North Europe" --label "MariaDB Cluster"Maak een virtueel netwerk.
azure network vnet create --address-space 10.0.0.0 --cidr 8 --subnet-name mariadb --subnet-start-ip 10.0.0.0 --subnet-cidr 24 --affinity-group mariadbcluster mariadbvnetMaak een opslag account om al onze schijven te hosten. U mag niet meer dan 40 zwaar gebruikte schijven op hetzelfde opslag account plaatsen om te voor komen dat de limiet voor de opslag account van 20.000 IOPS wordt bereikt. In dit geval kunt u zich onder die limiet bevinden, zodat u alles op hetzelfde account opslaat voor eenvoud.
azure storage account create mariadbstorage --label mariadbstorage --affinity-group mariadbclusterZoek de naam van de installatie kopie van de virtuele machine CentOS 7.
azure vm image list | findstr CentOSDe uitvoer is iets zoals
5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20140926.Gebruik die naam in de volgende stap.
Maak de VM-sjabloon en vervang/Path/to/Key.pem door het pad waar u de gegenereerde. pem SSH-sleutel hebt opgeslagen.
azure vm create --virtual-network-name mariadbvnet --subnet-names mariadb --blob-url "http://mariadbstorage.blob.core.windows.net/vhds/mariadbhatemplate-os.vhd" --vm-size Medium --ssh 22 --ssh-cert "/path/to/key.pem" --no-ssh-password mariadbtemplate 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20140926 azureuserKoppel 4 500-GB gegevens schijven aan de virtuele machine voor gebruik in de RAID-configuratie.
FOR /L %d IN (1,1,4) DO azure vm disk attach-new mariadbhatemplate 512 http://mariadbstorage.blob.core.windows.net/vhds/mariadbhatemplate-data-%d.vhdGebruik SSH om u aan te melden bij de sjabloon-VM die u hebt gemaakt op mariadbhatemplate.cloudapp.net:22 en maak verbinding met behulp van uw persoonlijke sleutel.
Software
De hoofdmap ophalen.
sudo suRAID-ondersteuning installeren:
a. Installeer mdadm.
yum install mdadmb. Maak de RAID0/Stripe-configuratie met een EXT4-bestands systeem.
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf mdadm --detail --scan >> /etc/mdadm.conf mkfs -t ext4 /dev/md0c. Maak de koppel punt Directory.
mkdir /mnt/datad. Haal de UUID van het zojuist gemaakte RAID-apparaat op.
blkid | grep /dev/md0e. /Etc/fstab. bewerken
vi /etc/fstabf. Voeg het apparaat toe om automatisch koppelen bij opnieuw opstarten in te scha kelen en vervang de UUID door de waarde die is verkregen van de vorige blkid -opdracht.
UUID=<UUID FROM PREVIOUS> /mnt/data ext4 defaults,noatime 1 2g. Koppel de nieuwe partitie.
mount /mnt/dataInstalleer MariaDB.
a. Maak het bestand MariaDB. opslag plaats.
vi /etc/yum.repos.d/MariaDB.repob. Vul het opslag plaats-bestand in met de volgende inhoud:
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1c. Verwijder bestaande achtervoegsel-en mariadb-bibliotheken om conflicten te voor komen.
yum remove postfix mariadb-libs-*d. Installeer MariaDB met Galera.
yum install MariaDB-Galera-server MariaDB-client galeraVerplaats de MySQL-gegevens Directory naar het RAID-blok apparaat.
a. Kopieer de huidige MySQL-map naar de nieuwe locatie en verwijder de oude map.
cp -avr /var/lib/mysql /mnt/data rm -rf /var/lib/mysqlb. Stel de machtigingen voor de nieuwe map dienovereenkomstig in.
chown -R mysql:mysql /mnt/data && chmod -R 755 /mnt/data/c. Maak een symlink die de oude map naar de nieuwe locatie op de RAID-partitie verwijst.
ln -s /mnt/data/mysql /var/lib/mysqlOmdat selinux de cluster bewerkingen verstoort, is het nood zakelijk om het uit te scha kelen voor de huidige sessie. Bewerk
/etc/selinux/configom het uit te scha kelen voor volgende keer opnieuw opstarten.setenforce 0 then editing `/etc/selinux/config` to set `SELINUX=permissive`MySQL-uitvoeringen valideren.
a. Start MySQL.
service mysql startb. De MySQL-installatie beveiligen, het hoofd wachtwoord instellen, anonieme gebruikers verwijderen om externe basis aanmelding uit te scha kelen en de test database verwijderen.
mysql_secure_installationc. Maak een gebruiker in de Data Base voor cluster bewerkingen en optioneel voor uw toepassingen.
mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO 'cluster'@'%' IDENTIFIED BY 'p@ssw0rd' WITH GRANT OPTION; FLUSH PRIVILEGES; exitd. MySQL stoppen.
service mysql stopMaak een tijdelijke aanduiding voor de configuratie.
a. Bewerk de MySQL-configuratie om een tijdelijke aanduiding voor de cluster instellingen te maken. Vervang de
<Variables>of verwijder de opmerking nu niet. Dit gebeurt nadat u een virtuele machine hebt gemaakt op basis van deze sjabloon.vi /etc/my.cnf.d/server.cnfb. Bewerk de sectie Galera en schakel deze uit.
c. Bewerk de sectie [mariadb] .
wsrep_provider=/usr/lib64/galera/libgalera_smm.so binlog_format=ROW wsrep_sst_method=rsync bind-address=0.0.0.0 # When set to 0.0.0.0, the server listens to remote connections default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 wsrep_sst_auth=cluster:p@ssw0rd # CHANGE: Username and password you created for the SST cluster MySQL user #wsrep_cluster_name='mariadbcluster' # CHANGE: Uncomment and set your desired cluster name #wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3" # CHANGE: Uncomment and Add all your servers #wsrep_node_address='<ServerIP>' # CHANGE: Uncomment and set IP address of this server #wsrep_node_name='<NodeName>' # CHANGE: Uncomment and set the node name of this serverOpen de vereiste poorten op de firewall met behulp van firewalls op CentOS 7.
- MySQL:
firewall-cmd --zone=public --add-port=3306/tcp --permanent - GALERA:
firewall-cmd --zone=public --add-port=4567/tcp --permanent - GALERA IST:
firewall-cmd --zone=public --add-port=4568/tcp --permanent - RSYNC:
firewall-cmd --zone=public --add-port=4444/tcp --permanent - De firewall opnieuw laden:
firewall-cmd --reload
- MySQL:
Optimaliseer het systeem voor de prestaties. Zie voor meer informatie strategie voor het afstemmen van prestaties.
a. Bewerk het MySQL-configuratie bestand opnieuw.
vi /etc/my.cnf.d/server.cnfb. Bewerk de sectie [mariadb] en voeg de volgende inhoud toe:
Notitie
Het is raadzaam dat InnoDB_buffer_pool_size 70 procent van het geheugen van uw virtuele machine is. In dit voor beeld is deze ingesteld op 2,45 GB voor de gemiddelde Azure VM met 3,5 GB aan RAM-geheugen.
innodb_buffer_pool_size = 2508M # The buffer pool contains buffered data and the index. This is usually set to 70 percent of physical memory. innodb_log_file_size = 512M # Redo logs ensure that write operations are fast, reliable, and recoverable after a crash max_connections = 5000 # A larger value will give the server more time to recycle idled connections innodb_file_per_table = 1 # Speed up the table space transmission and optimize the debris management performance innodb_log_buffer_size = 128M # The log buffer allows transactions to run without having to flush the log to disk before the transactions commit innodb_flush_log_at_trx_commit = 2 # The setting of 2 enables the most data integrity and is suitable for Master in MySQL cluster query_cache_size = 0Stop MySQL, schakel de MySQL-service uit bij het opstarten om te voor komen dat het cluster wordt verstoord bij het toevoegen van een knoop punt en de inrichting van de machine te verwijderen.
service mysql stop chkconfig mysql off waagent -deprovisionLeg de virtuele machine vast via de portal. (Momenteel geeft #1268 in de Azure cli-hulpprogram ma's een beschrijving van het feit dat installatie kopieën die zijn vastgelegd door de Azure cli-hulpprogram ma's, de gekoppelde gegevens schijven niet vastleggen.)
a. Sluit de machine af via de portal.
b. Klik op vastleggen en geef de naam van de installatie kopie op als mariadb-Galera-image. Geef een beschrijving op en schakel ' Ik heb waagent uit. '

Het cluster maken
Maak drie Vm's met de sjabloon die u hebt gemaakt, en configureer en start vervolgens het cluster.
- Maak de eerste CentOS-VM van de mariadb-Galera-installatie kopie die u hebt gemaakt en geef de volgende informatie op:
Naam van virtueel netwerk: mariadbvnet
Subnet: mariadb
Computer grootte: gemiddeld
Naam van Cloud service: mariadbha (of de naam die u wilt openen via mariadbha.cloudapp.net)
Computer naam: mariadb1
Gebruikers naam: azureuser
SSH-toegang: ingeschakeld
Het SSH Certificate. pem-bestand door te geven en/Path/to/Key.pem te vervangen door het pad waar u de gegenereerde. pem SSH-sleutel hebt opgeslagen.
Notitie
De volgende opdrachten zijn gesplitst over meerdere regels voor duidelijkheid, maar u moet elke regel opgeven.
azure vm create --virtual-network-name mariadbvnet --subnet-names mariadb --availability-set clusteravset --vm-size Medium --ssh-cert "/path/to/key.pem" --no-ssh-password --ssh 22 --vm-name mariadb1 mariadbha mariadb-galera-image azureuser
Maak twee meer virtuele machines door deze te verbinden met de mariadbha-Cloud service. Wijzig de naam van de virtuele machine en de SSH-poort in een unieke poort die geen conflict veroorzaakt met andere virtuele machines in dezelfde Cloud service.
azure vm create --virtual-network-name mariadbvnet --subnet-names mariadb --availability-set clusteravset --vm-size Medium --ssh-cert "/path/to/key.pem" --no-ssh-password --ssh 23 --vm-name mariadb2 --connect mariadbha mariadb-galera-image azureuser
Voor MariaDB3:
azure vm create
--virtual-network-name mariadbvnet
--subnet-names mariadb
--availability-set clusteravset
--vm-size Medium
--ssh-cert "/path/to/key.pem"
--no-ssh-password
--ssh 24
--vm-name mariadb3
--connect mariadbha mariadb-galera-image azureuser
U moet het interne IP-adres van elk van de drie Vm's ophalen voor de volgende stap:

Gebruik SSH om u aan te melden bij de drie Vm's en bewerk het configuratie bestand op elk hiervan.
sudo vi /etc/my.cnf.d/server.cnfVerwijder
wsrep_cluster_nameenwsrep_cluster_addressdoor de # aan het begin van de regel te verwijderen. Vervang daarnaast<ServerIP>inwsrep_node_addressen<NodeName>inwsrep_node_namemet het IP-adres en de naam van de virtuele machine, respectievelijk, en verwijder deze regels ook.Start het cluster op MariaDB1 en laat het uitvoeren bij het opstarten.
sudo service mysql bootstrap chkconfig mysql onStart MySQL op MariaDB2 en MariaDB3 en laat het worden uitgevoerd bij het opstarten.
sudo service mysql start chkconfig mysql on
Taak verdeling van het cluster
Wanneer u de geclusterde Vm's hebt gemaakt, hebt u deze toegevoegd aan een beschikbaarheidsset met de naam clusteravset om ervoor te zorgen dat ze op verschillende fout-en update domeinen zijn geplaatst en dat Azure nooit onderhoud op alle machines tegelijk wordt uitgevoerd. Deze configuratie voldoet aan de vereisten die worden ondersteund door de Azure service level agreement (SLA).
Gebruik nu Azure Load Balancer om aanvragen te verdelen tussen de drie knoop punten.
Voer de volgende opdrachten uit op de computer met behulp van de Azure CLI.
De structuur van de opdracht parameters is: azure vm endpoint create-multiple <MachineName> <PublicPort>:<VMPort>:<Protocol>:<EnableDirectServerReturn>:<Load Balanced Set Name>:<ProbeProtocol>:<ProbePort>
azure vm endpoint create-multiple mariadb1 3306:3306:tcp:false:MySQL:tcp:3306
azure vm endpoint create-multiple mariadb2 3306:3306:tcp:false:MySQL:tcp:3306
azure vm endpoint create-multiple mariadb3 3306:3306:tcp:false:MySQL:tcp:3306
De CLI stelt het load balancer probe-interval in op 15 seconden. Dit kan iets te lang zijn. Wijzig deze in de portal onder eind punten voor een van de vm's.

Selecteer de set met gelijke taak verdeling opnieuw configureren.

Wijzig het Test interval in 5 seconden en sla uw wijzigingen op.

Het cluster valideren
De vaste hoeveelheid werk wordt uitgevoerd. Het cluster moet nu toegankelijk zijn op mariadbha.cloudapp.net:3306, waarmee de load balancer en de aanvragen tussen de drie Vm's soepel en efficiënt worden doorgestuurd.
Gebruik uw favoriete MySQL-client om verbinding te maken of maak verbinding vanaf een van de virtuele machines om te controleren of dit cluster werkt.
mysql -u cluster -h mariadbha.cloudapp.net -p
Maak vervolgens een Data Base en vul deze met een aantal gegevens.
CREATE DATABASE TestDB;
USE TestDB;
CREATE TABLE TestTable (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255));
INSERT INTO TestTable (value) VALUES ('Value1');
INSERT INTO TestTable (value) VALUES ('Value2');
SELECT * FROM TestTable;
De data base die u hebt gemaakt, retourneert de volgende tabel:
+----+--------+
| id | value |
+----+--------+
| 1 | Value1 |
| 4 | Value2 |
+----+--------+
2 rows in set (0.00 sec)
Volgende stappen
In dit artikel hebt u een Maxi maal beschik bare cluster met drie knoop punten MariaDB + Galera gemaakt op virtuele machines van Azure met CentOS 7. De virtuele machines worden gelijkmatig verdeeld met Azure Load Balancer.
U kunt bijvoorbeeld een andere manier voor het clusteren van MySQL op Linux en manieren om MySQL-prestaties op virtuele machines met Azure Linux te optimaliseren en testen.