Regularnie otrzymujemy pytania dotyczące konfiguracji klastra Galera z zaledwie 2 węzłami.
Dokumentacja wyraźnie stwierdza, że powinieneś mieć co najmniej 3 węzły Galera, aby uniknąć partycjonowania sieci. Istnieją jednak uzasadnione powody, dla których warto rozważyć wdrożenie 2-węzłowe, np. jeśli chcesz osiągnąć wysoką dostępność bazy danych, ale masz ograniczony budżet do wydania na trzeci węzeł bazy danych. A może używasz Galery w środowisku deweloperskim/piaskownicy i wolisz minimalną konfigurację.
Galera implementuje algorytm oparty na kworum, aby wybrać główny składnik, za pomocą którego wymusza spójność. Główny składnik musi mieć większość głosów, więc w systemie dwuwęzłowym nie byłoby większości skutkującej podziałem mózgu. Na szczęście możliwe jest dodanie garbd (Galera Arbitrator Daemon), który jest lekkim bezstanowym demonem, który może działać jako nieparzysty węzeł. Awaria arbitra nie wpływa na działanie klastra, a nowa instancja może zostać ponownie dołączona do klastra w dowolnym momencie. W klastrze może być kilku arbitrów.
ClusterControl obsługuje wdrażanie garbd na hostach niebędących bazą danych.
Zwykle klaster Galera wymaga co najmniej trzech hostów, aby w pełni funkcjonować, jednak w momencie wdrożenia dwa węzły wystarczą do utworzenia podstawowego komponentu. Oto kroki:
- Wdróż klaster Galera składający się z dwóch węzłów,
- Po wdrożeniu klastra przez ClusterControl, dodaj garbd w węźle ClusterControl.
Powinieneś otrzymać poniższą konfigurację:
Wdróż klaster Galera
Przejdź do sekcji ClusterControl Deploy, aby wdrożyć klaster.
Po wybraniu technologii, którą chcemy wdrożyć, musimy określić Użytkownika, Klucz lub Hasło oraz port do połączenia przez SSH z naszymi hostami. Potrzebujemy również nazwy dla naszego nowego klastra i jeśli chcemy, aby ClusterControl zainstalował dla nas odpowiednie oprogramowanie i konfiguracje.
Po skonfigurowaniu informacji dostępowych SSH, musimy wybrać dostawcę/wersję i musimy zdefiniować hasło administratora bazy danych, datadir i port. Możemy również określić, którego repozytorium użyć.
Mimo że ClusterControl ostrzega, że klaster Galera wymaga nieparzystej liczby węzłów, dodaj tylko dwa węzły do klastra.
Wdrożenie klastra Galera uruchomi zadanie ClusterControl, które można monitorować na stronie Zadania.
Zainstaluj Garbd
Po zakończeniu wdrażania zainstaluj garbd na hoście ClusterControl. Mamy opcję wdrożenia garbd z ClusterControl, ale ta opcja nie zadziała, jeśli chcemy wdrożyć go na tym samym serwerze ClusterControl. Ma to na celu uniknięcie pewnych problemów związanych z wersjami baz danych i zależnościami pakietów.
Dlatego musimy zainstalować go ręcznie, a następnie zaimportować garbd do ClusterControl.
Zobaczmy ręczną instalację Percona Garbd na CentOS 7.
Utwórz plik repozytorium Percona:
$ 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
Następnie zainstaluj pakiet garbd Percona XtraDB Cluster:
$ yum install Percona-XtraDB-Cluster-garbd-57
Teraz musimy skonfigurować garbd. W tym celu musimy edytować plik /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=""
Zmień parametry GALERA_NODES i GALERA_GROUP zgodnie z konfiguracją węzłów Galera. Musimy również usunąć wiersz # USUŃ TO PO KONFIGURACJI przed uruchomieniem usługi.
A teraz możemy uruchomić usługę garb:
$ service garb start
Redirecting to /bin/systemctl start garb.service
Teraz możemy zaimportować nowy garbd do ClusterControl.
Przejdź do ClusterControl -> Wybierz Cluster -> Dodaj Load Balancer.
Następnie wybierz sekcję Garbd i Importuj Garbd.
Tutaj musimy tylko określić nazwę hosta lub adres IP i port nowego Garbd.
Importowanie garbd uruchomi zadanie ClusterControl, które można monitorować na stronie Zadania. Po zakończeniu możesz sprawdzić, czy garbd działa za pomocą zielonej ikony zaznaczenia na górnym pasku:
To wszystko!
Nasz minimalny dwuwęzłowy klaster Galera jest już gotowy!