MariaDB.Настройка Galera Cluster
В рамках данной статьи рассматривается настройка синхронизации нескольких серверов баз данных, организованных на MariaDB. В качестве утилиты синхронизации используется стандартный инструмент MariaDB — Galera. Подобная настройка позволяет использовать синхронизацию вида мастер-мастер (active-active), в данном виде синхронизации преимуществом является то, что данные можно записывать и считывать одновременно на всех узлах кластера. Перед началом установки необходимо добавить […]
В рамках данной статьи рассматривается настройка синхронизации нескольких серверов баз данных, организованных на 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;
Настройки для 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.
Пример команд добавления полртов в 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 кластера завершена.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.