Редовно получаваме въпроси за това как да настроим клъстер на Galera само с 2 възела.
Документацията ясно посочва, че трябва да имате поне 3 възела на Galera, за да избегнете разделяне на мрежата. Но има някои основателни причини да обмислите внедряване на 2 възела, например, ако искате да постигнете висока наличност на базата данни, но имате ограничен бюджет, който да похарчите за трети възел на базата данни. Или може би работите с Galera в среда за разработка/песочна среда и предпочитате минимална настройка.
Galera внедрява базиран на кворум алгоритъм за избор на основен компонент, чрез който налага последователност. Основният компонент трябва да има мнозинство от гласовете, така че в система с 2 възела няма да има мнозинство, което води до разделяне на мозъка. За щастие е възможно да се добави garbd (Galera Arbitrator Daemon), който е лек демон без състояние, който може да действа като нечетен възел. Неизправността на арбитъра не засяга операциите на клъстера и нов екземпляр може да бъде повторно свързан към клъстера по всяко време. В клъстера може да има няколко арбитри.
ClusterControl има поддръжка за разполагане на garbd на хостове, които не са бази данни.
Обикновено клъстерът на Galera се нуждае от поне три хоста, за да бъде напълно функционален, но по време на разгръщане два възела биха били достатъчни за създаване на основен компонент. Ето стъпките:
- Разгръщане на клъстер на Galera от два възела,
- След като клъстерът бъде разгърнат от ClusterControl, добавете garbd към възела ClusterControl.
Трябва да получите следната настройка:
Разгръщане на клъстера Galera
Отидете в секцията ClusterControl Deploy, за да разположите клъстера.
След като изберем технологията, която искаме да разположим, трябва да посочим потребител, ключ или парола и порт за свързване чрез SSH към нашите хостове. Нуждаем се и от името на нашия нов клъстер и ако искаме ClusterControl да инсталира съответния софтуер и конфигурации вместо нас.
След като настроим информацията за SSH достъп, трябва да изберем доставчик/версия и трябва да дефинираме администраторска парола на базата данни, datadir и порт. Можем също да посочим кое хранилище да използваме.
Въпреки че ClusterControl ви предупреждава, че един клъстер на Galera се нуждае от нечетен брой възли, добавете само два възела към клъстера.
Разгръщането на клъстер Galera ще задейства ClusterControl задание, което може да се наблюдава на страницата Jobs.
Инсталирайте Garbd
След като разполагането приключи, инсталирайте garbd на хоста на ClusterControl. Имаме възможност да разположим garbd от ClusterControl, но тази опция няма да работи, ако искаме да го разположим в същия сървър на ClusterControl. Това е за избягване на някои проблеми, свързани с версиите на базата данни и зависимостите на пакетите.
Така че трябва да го инсталираме ръчно и след това да импортираме garbd в ClusterControl.
Нека видим ръчната инсталация на Percona Garbd на CentOS 7.
Създайте файла на хранилището на 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
След това инсталирайте garbd пакета Percona XtraDB Cluster:
$ yum install Percona-XtraDB-Cluster-garbd-57
Сега трябва да конфигурираме garbd. За това трябва да редактираме файла /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=""
Променете параметъра GALERA_NODES и GALERA_GROUP според конфигурацията на възлите на Galera. Трябва също да премахнем реда # REMOVE THIS СЛЕД КОНФИГУРАЦИЯ, преди да стартираме услугата.
И сега можем да стартираме услугата garb:
$ service garb start
Redirecting to /bin/systemctl start garb.service
Сега можем да импортираме новия garbd в ClusterControl.
Отидете на ClusterControl -> Изберете Cluster -> Add Load Balancer.
След това изберете секция Garbd и Import Garbd.
Тук трябва само да посочим името на хоста или IP адреса и порта на новия Garbd.
Импортирането на garbd ще задейства задание на ClusterControl, което може да се наблюдава на страницата Jobs. След като приключите, можете да потвърдите, че garbd работи със зелена икона за отметка в горната лента:
Това е!
Нашият минимален клъстер Galera с два възела вече е готов!