Vi får regelbundet frågor om hur man ställer in ett Galera-kluster med bara 2 noder.
Dokumentationen säger tydligt att du bör ha minst 3 Galera-noder för att undvika nätverkspartitionering. Men det finns några giltiga skäl för att överväga en distribution med två noder, t.ex. om du vill uppnå en hög databastillgänglighet men har en begränsad budget att spendera på en tredje databasnod. Eller så kanske du kör Galera i en utvecklings-/sandlådemiljö och föredrar en minimal installation.
Galera implementerar en kvorumbaserad algoritm för att välja en primär komponent genom vilken den upprätthåller konsekvens. Den primära komponenten måste ha en majoritet av rösterna, så i ett system med 2 noder skulle det inte finnas någon majoritet som resulterar i en splittrad hjärna. Lyckligtvis är det möjligt att lägga till en garbd (Galera Arbitrator Daemon), som är en lättviktig statslös demon som kan fungera som den udda noden. Skiljedomarens misslyckande påverkar inte klustrets operationer och en ny instans kan återkopplas till klustret när som helst. Det kan finnas flera skiljemän i klustret.
ClusterControl har stöd för att distribuera garbd på icke-databasvärdar.
Normalt behöver ett Galera-kluster minst tre värdar för att vara fullt fungerande, men vid driftsättning skulle två noder räcka för att skapa en primär komponent. Här är stegen:
- Distribuera ett Galera-kluster med två noder,
- När klustret har distribuerats av ClusterControl, lägg till garbd på ClusterControl-noden.
Du bör sluta med nedanstående inställning:
Distribuera Galera-klustret
Gå till avsnittet ClusterControl Deploy för att distribuera klustret.
Efter att ha valt den teknik som vi vill distribuera måste vi ange användare, nyckel eller lösenord och port för att ansluta med SSH till våra värdar. Vi behöver också namnet på vårt nya kluster och om vi vill att ClusterControl ska installera motsvarande programvara och konfigurationer åt oss.
Efter att ha ställt in SSH-åtkomstinformationen måste vi välja leverantör/version och vi måste definiera databasens administratörslösenord, datadir och port. Vi kan också specificera vilket arkiv som ska användas.
Även om ClusterControl varnar dig för att ett Galera-kluster behöver ett udda antal noder, lägg bara till två noder till klustret.
Att distribuera ett Galera-kluster kommer att utlösa ett ClusterControl-jobb som kan övervakas på jobbsidan.
Installera Garbd
När distributionen är klar installerar du garbd på ClusterControl-värden. Vi har möjlighet att distribuera garbd från ClusterControl, men det här alternativet fungerar inte om vi vill distribuera det i samma ClusterControl-server. Detta för att undvika vissa problem relaterade till databasversionerna och paketberoendena.
Så vi måste installera det manuellt och sedan importera garbd till ClusterControl.
Låt oss se den manuella installationen av Percona Garbd på CentOS 7.
Skapa Percona-förvarsfilen:
$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0
Installera sedan Percona XtraDB Cluster garbd-paketet:
$ yum install Percona-XtraDB-Cluster-garbd-57
Nu måste vi konfigurera garbd. För detta måste vi redigera filen /etc/sysconfig/garb:
$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""
Ändra parametern GALERA_NODES och GALERA_GROUP enligt Galera-nodernas konfiguration. Vi måste också ta bort raden # REMOVE THIS EFTER KONFIGURATION innan du startar tjänsten.
Och nu kan vi starta garb-tjänsten:
$ service garb start
Redirecting to /bin/systemctl start garb.service
Nu kan vi importera den nya garbd till ClusterControl.
Gå till ClusterControl -> Välj Cluster -> Add Load Balancer.
Välj sedan avsnittet Garbd och Importera Garbd.
Här behöver vi bara ange värdnamnet eller IP-adressen och porten för den nya Garbd.
Import av garbd kommer att utlösa ett ClusterControl-jobb som kan övervakas på jobbsidan. När det är klart kan du verifiera att garbd körs med en grön bockikon i det övre fältet:
Det är det!
Vårt minimala Galera-kluster med två noder är nu klart!