Иван Санников
17.10.2019
2407

MariaDB.Настройка Galera Cluster

В рамках данной статьи рассматривается настройка синхронизации нескольких серверов баз данных, организованных на MariaDB. В качестве утилиты синхронизации используется стандартный инструмент MariaDB — Galera. Подобная настройка позволяет использовать синхронизацию вида мастер-мастер (active-active), в данном виде синхронизации преимуществом является то, что данные можно записывать и считывать одновременно на всех узлах кластера. Перед началом установки необходимо добавить […]

MariaDB и настройка Galera Cluster

В рамках данной статьи рассматривается настройка синхронизации нескольких серверов баз данных, организованных на MariaDB. В качестве утилиты синхронизации используется стандартный инструмент MariaDB — Galera. Подобная настройка позволяет использовать синхронизацию вида мастер-мастер (active-active), в данном виде синхронизации преимуществом является то, что данные можно записывать и считывать одновременно на всех узлах кластера.

Далее, по-умолчанию, все операции выполняются на обоих узлах кластера, если  явно не указано иное

Перед началом установки необходимо добавить репозиторий, для этого в директории /etc/yum.repos.d создается файл, в котором прописывается данные репозитория, можно назвать его mariadb.repo. Создается файл командой:

touch /etc/yum.repos.d/mariadb.repo


Далее необходимо прописать в этот файл данные репозитория.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Далее необходимо инициализировать репозиторий (закешировать его метаданные), выполняется командой

yum makecache.

Результат выполнения представлен на скриншоте ниже

После этого можно приступать непосредственно к установке необходимых пакетов, командой

yum install MariaDB-server MariaDB-client galera

Также будут автоматически установлены необходимые зависимости

Далее необходимо запустить сервис MariaDB, а также добавить его в автозагрузку.

systemctl start mariadb.service
 systemctl enable mariadb.service

Также рекомендуется выполнить начальную настройку СУБД, делается это аналогично как в MySQL, командой

mysql_secure_installation

Следующим шагом рекомендуется создать отдельного пользователя для репликации:

mysql -u root -p
GRANT USAGE ON *.* to galera_user@'%' IDENTIFIED BY 'Qwerty123';
GRANT ALL PRIVILEGES on *.* to galera_user@'%';
 FLUSH PRIVILEGES;
<strong> Замените Qwerty123 на свой сложный пароль </strong>

Настройки для Galera прописать в файле /etc/my.cnf.d/server.cnf, но рекомендуется создать отдельный файл в директории /etc/my.cnf.d/, например, с именем galera.cnf. И заполнить его следующим содержимым:

[galera]
binlog_format=ROW
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
default_storage_engine=InnoDB
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.170.178,192.168.170.179"
wsrep_sst_method=rsync
wsrep_cluster_name='galera_test_cluster'  #Имя кластера репликации
wsrep_node_address='192.168.170.178'      #Адрес узла
wsrep_node_name='galera1'                       #Имя узла
Далее такой же файл с подобным содержимым, с небольшими отличиями, необходимо создать на остальных узлах кластера. Основное отличие в параметрах:
wsrep_node_address
 wsrep_node_name


Также стоит обратить внимание что в параметре wsrep_cluster_address всегда первым адресом указывается адрес основного узла.

Далее перед запуском кластера необходимо выполнить два шага, а именно отключить SELinux и настроить брандмауэр.

Временно отключить SELinux можно командой

setenforce 0

Для постоянного отключения необходимо в файле /etc/sysconfig/selinux поменять параметр SELINUX= на disabled.

Также необходимо в брандмауэре открыть следующие порты:
3306 — стандартный порт для подключения клиентов Mysql
4568 — IST порт, используемый для инкрементной передачи состояния кластера

4567 — основной порт используемый Galera для репликации

4444 — SST порт, используется для всех способов передачи состояния кластера, за исключением метода mysqldump.

Обратите внимание, что для порта 4567 необходимо открывать оба типа протокола TCP и UDP.

Пример команд добавления полртов в Public зону брандмауэра firewalld:

firewall-cmd --permanent --zone=public —add-port=3306/tcp
 firewall-cmd --permanent --zone=public —add-port=4567/tcp
 firewall-cmd --permanent --zone=public --add-port=4567/udp
firewall-cmd --permanent --zone=public --add-port=4568/tcp
firewall-cmd --permanent --zone=public --add-port=4444/tcp

Но этого недостаточно для прохождения кластера, теперь необходимо добавить ip-адреса узлов кластера в Public зону, если используется более двух узлов, то на каждый узел добавляется адрес каждого узла, если же в схеме всего два узла, то можно в зону добавить адреса перекрестно адреса.

Например, в схеме описанной в статье, для первого узла будет выглядеть так:

firewall-cmd --permanent --zone=public —add-source=192.168.170.179/32

А для второго так:

 firewall-cmd --permanent --zone=public —add-source=192.168.170.178/32

Далее необходимо перечитать правила брандмауэра командой:

firewall-cmd --reload

Теперь можно переходить непосредственно к запуску кластера.
Сначала необходимо остановить службу MariaDB на всех узлах кластера:

systemctl stop mariadb

Далее первый запуск кластера должен проходить в определенной последовательности.
Сначала на ноде, ноде которая будет основной, необходимо запустить предустановленный скрипт galera_new_cluster. Данный скрипт запускает службу MariaDB с ключем –wsrep-new-cluster, который собственно запустит кластер Galera, если запустить службу стандартно, то она не запустится так как кластер изначально не инициализирован и узел будет пытаться подключиться по очереди ко всем перечисленным узлам в файле galera.cnf

После запуска первого узла, рекомендуется проверить состояние кластера по ключу Variable_name, со значениями:
wsrep_cluster_size — отображает количество узлов активных в кластере
wsrep_cluster_status — отображает статус текущего узла клатсера (в данном случае первичный(Primary))
wsrep_connected — подключение
wsrep_ready — готовность кластера
Для проверки статуса необходимо выполнить в mysql апрос вида:

 SHOW GLOBAL STATUS WHERE Variable_name IN ('wsrep_ready', 'wsrep_cluster_size', 'wsrep_cluster_status', 'wsrep_connected');

Далее необходимо запустить MariaDB поочередно на остальных узлах кластера, в данном примере — только на втором узле. Делается это уже стандартной командой:

systemctl start mariadb

И в окончании настройки кластера необходимо обязательно убедиться, что репликация происходит — для этого на первом узле можно создать тестовую базу, заполнить ее одной двумя строками данных и проверить на втором узле что база видна и видны данные в ней.
На скриншоте ниже виден пример создания базы, таблицы в ней и занесения в таблицу данных на первом узле.

На следующем скриншоте видно что на второй узел эти данные среплицировались.

На этом настройка Galera кластера завершена.

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.