Как стать автором
Обновить

Быстрая установка SQL кластера Galera MariaDB c HaProxy и ClusterControl от Severalnines

Время на прочтение3 мин
Количество просмотров13K
Добрый день.

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

Итак, с ростом нагрузки на базу данных, а наш сервис — это SaaS платформа по сбору метрик с серверов, количество запросов на запись в нашу базу данных (сейчас более 1000 серверов посылают порядка 20 своих метрик в БД каждые 4 минуты) начало приводить к перегрузке БД и нестабильной работе сервиса. Это зачастую происходило из-за превышения установленного максимального количества соединений к MySQL и большой нагрузки на сервер. К сожалению, все попытки оптимизации MySQL, увеличения серверных ресурсов и настройки параметров max_connections, query cache и т.д. не приводили к успеху.

Т.к. у нас нет отдельного человека, отвечающего за базы данных, а программисты и системные администраторы не могут каждый день тратить кучу времени на поддержание стабильности MySQL и реагировать на каждое падение, мы решили перейти на MariaDB Galera кластер с master-master репликацией и балансировкой нагрузки с помощью HaProxy. У нас до этого не было опыта внедрения бд кластера в production environment и поэтому пришлось наступать на все грабли самостоятельно.

К счастью, на Хабре нашлось много полезных статей на тему настройки Percona XtraDB, HaProxy и Zabbix для Percona, а также серия статей «Идеальный Кластер», которые нам очень помогли в начальной установке.

image


К сожалению, либо отсутствие опыта работы с кластерами, либо недостаток времени (тестирование проводилось по большей части ночью, когда количество пользователей в системе минимально) приводило к тому, что запись данных в кластер могла быть произведена только через основной Master node, а запись в режиме roundrobin или leastconn приводила к падению всей системы. Мы потратили много времени на устранение данной проблемы и уже были готовы отказаться от использования кластера, т.к. решили, что проблема заключается в недостатке навыков настройки кластера.

Тем не менее, дальнейшие поиски решения данной проблемы привели к открытию для себя программного комплекса мониторинга кластеров Galera Percona и MariaDB от компании SeveralNines — ClusterControl. И, хотя сам комплекс имеет достаточно дорогие платные пакеты услуг (от $1000 в год за каждый сервер), у SeveralNines есть и бесплатная версия и 14 дневный период для тестирования полной версии.

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

Ниже мы приводим один из вариантов конфигурации, которую мы использовали для подготовки кластера MariaDB.

image

После генерации файла конфигурации, все что вам нужно — это скачать его на сервер, откуда будет осуществляться управление кластером, распаковать архив и запустить файл deploy.sh (инструкции по установке будут показаны после генерации скрипта установки).

При установке кластера важно учитывать следующее:

  • Все серверы в кластере, включая сервер мониторинга, должны работать на одном типе операционной системы
  • Установка кластера на CentOS 6 и 7 не приводила к положительному результату и постоянно требовала доработки, которая занимала несколько часов (возможно из-за недочетов в скрипте установки ClusterControl). Установка на Debian 6 прошла без проблем с первого раза, поэтому мы рекомендуем использовать именно Debian
  • Вы также всегда можете открыть тикет в тех.поддержку Severalnines, которая бесплатно поможет с установкой
  • Кластер должен иметь минимум 3 нода (сервера) + сервер мониторинга ClusterControl для исключения ситуаций типа split-brain.

  • После установки, вы сможете зайти в панель управления ClusterControl, через: ip-адрес-вашего-сервера/clustercontrol/

    Далее, вам необходимо будет перейти в пункт «Manage >> Load Balancers» и установить HaProxy на одном из ваших кластер нодов. Мы рекомендуем делать это через панель управления, а не вручную — так вы будете уверены, что не забыли ничего добавить в файлы конфигурации кластера.

    Отмечу, что благодаря данному решению (прим., мы не имеем никакого отношения к продукту Severalnines) мы смогли обеспечить бесперебойность работы нашего сервиса. Тем не менее, в ближайшее время мы будем проводить нагрузочное тестирование как front-end'a, так и БД, и обязательно поделимся результатами.

    В заключение, мы надеемся что данная статья будет полезна тем, кто впервые столкнулся с необходимостью масштабирования базы данных своего приложения и поможет вам сохранить какое-то время и силы, потраченные на установку кластера. Тем временем, наша команда продолжает работу в 6м наборе ФРИИ и в ближайшее время мы также напишем статью об опыте миграции нашей инфраструктуры в облако Microsoft Azure, партнером которого мы теперь являемся.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Будет ли вам интересно почитать статьи про дальнейшее развитие инфраструктуры нашего сервиса?
88.89% Да, у моего стартапа похожие проблемы и мне интересна данная тематика32
11.11% Нет, у меня это не «болит», мне хватает одного сервера, даже для обработки больших нагрузок4
Проголосовали 36 пользователей. Воздержались 11 пользователей.
Теги:
Хабы:
+3
Комментарии9

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн