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

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 кластера завершена.

Кейсы внедрения
Asterisk от VoxLink
Узнайте, какие крупные компании уже используют Asterisk в работе.
Скачать
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

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

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

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


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

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.