Обеспечиваем отказоустойчивость серверной IT-инфраструктуры. Специализируемся на СУБД серверах: PostgreSQL, MySQL и in-memory базы данных Tarantool (mail.ru), а также Aerospike/Cassandra
Обеспечиваем отказоустойчивость популярных СУБД серверов и in-memory баз данных за счёт кластеризации
Осуществим кластеризацию PostgreSQL с помощью Patroni, обеспечим переход со standalone MySQL на более производительную Percona XtraDB Cluster (PXC) для MySQL. Обеспечим отказоустойчивость Tarantool – СУБД разработки mail.ru, а также Aerospike/Cassandra
Попутно обеспечим отказоустойчивость
Контроллеров домена
Файловых серверов
Почты и сервера документооборота
Web-сервисов
Корпоративного портала
Интернет каналов
Шлюзов интернет и удаленного доступа
Прокси-серверов
Системы хранения данных
Аппаратных носителей
Терминальных серверов
Переход c Redis на PostgreSQL/Patroni
Высоконагруженный сервис: 2+ млн пользователей, 50К+ активных пользователей каждый день. Сервера находятся в Public Cloud (AWS, Mail.ru Cloud, etc): в работе постоянно 100+ различных серверов, из них больше половины — с базами данных
Backend — большое монолитное stateful-приложение на Java, которое держит постоянное websocket соединение с клиентом. Одновременная нагрузка - 10К запросов в секунду к базам. В данный момент используется Redis, где в пиковой нагрузке пишется по 80-100К запросов в секунду
Допустим вы решили переехать с Redis на PostgresQL, где есть транзакции и нет такой зависимости от параметра latency и нужно обеспечить соответствующую отказоустойчивость
Мы поможем: – быстро и безопасно осуществить саму миграцию текущая СУБД -> PostgreSQL – обеспечить нужный уровень отказоустойчивости
Как мы делаем последнее? Мы используем Patroni - шаблон на Python для управления PostgreSQL c исходным кодом на GitHub
Почему Patroni? – Описан каждый параметр конфигурации в документации – Автоматический failover из коробки – Полностью управляет PostgreSQL, позволяет менять конфигурацию сразу на всех нодах кластера, а если для применения новой конфигурации требуется перезапуск кластера, то это можно сделать опять же с помощью Patroni
Кейс перехода с MySQL на Percona Cluster
Кластеризация сервера большого web-приложения на СУБД Percona MySQL 5.
Проблема:
MySQL репликация- асинхронная, слейвы могли отставать на неопределенное время.
Сложность разработки приложения
Ручное переключение в случае аварии
Задача: обеспечить приемлемую отказоустойчивость для СУБД
Стек технологий: Percona MySQL 5.7, кэширование в Redis и Memcached
Решение: MySQL Galera cluster
Почему Galera кластер? Замена всей СУБД было бы сложным решением, т.к. приложение большое, во многих местах завязано на функционал или синтаксис mysql и миграция, например, на PostgreSQL займет кучу времени и ресурсов.
MySQL Group Replication не подойдёт, т.к. накладывает больше ограничений на приложение и схему БД, а значит произвести миграцию будет сложнее. Во-вторых Group Replication решает проблему отказоустойчивости и split brain, но репликация в кластере по-прежнему асинхронная. Galera позволяет полностью решить проблему с отказоустойчивостью MySQL и частично решить проблему с актуальностью данных на слейвах.
Специализируемся на решении сложных и масштабных задач по обеспечению:
Отказоустойчивости
Мы обеспечим нужное вам количество «nines» в availability и выведем на уровень отказоустойчивости: 99.9% — недоступность сервера не более 5 минут в неделю 99.99% — недоступность сервера не более 5 минут в месяц 99.999% — недоступность сервера не более 5 минут в год
Производительности
Если текущая производительность серверов не устраивает, если повышение мощностей слишком дорого, то мы проведём аудит существующей архитектуры, выявим бутылочные горлышки, построим план улучшений и реализуем проект под ключ. В результате мы сможем обеспечить до 30% роста производительности, оптимизируем мощности инфраструктуры
Повышение безопасности веб-серверов жизненно важно для защиты от хакеров и утечки данных
Чтобы свести к минимуму риск потери данных вашего бизнеса в результате несанкционированного проникновения или взлома, крайне важно убедиться, что ваш веб-сервер настроен как можно более безопасно. Если безопасность вашего сервера будет скомпрометирована, это может привести к чему угодно, от внедрения спам-рекламы на веб-сайт компании до перехвата и кражи пользовательских данных при отправке форм. Об этом подробнее описано встатье
Масштабируемости
Решаем основные задачи масштабирования — распределение вычислений и распределение данных. При необходимости разделим роли команды на frontend, backend, базу данных и хранилище файлов. В случае небольших объёмов данных и highload обеспечим зеркалирование базы данных — синхронную или асинхронную репликацию, а при больших объемах данных распределим базу данных, обеспечим хранение бинарных файлов в распределенных файловых системах, обеспечим равномерную балансировку запросов
Техподдержка СУБД Tarantool
Мы одни из немногих, кто специализируется на дистанционной поддержке СУБД Tarantool (Mail.ru), и умеем обеспечивать отказоустойчивость, безопасность и производительность этой СУБД в облаке.
Если для вас жизненно важно не допустить отказов нагруженных серверов, то направление наших действий таково:
Профессиональная оценка рисков и снижение вероятности их возникновения
Разработка мероприятий по предотвращению или смягчению рисков
Построение модели угроз
Внедрение мероприятий «под ключ»
Мы обеспечим нужное Вам количество «nines» в availability и выведем на уровень отказоустойчивости:
99.9% — недоступность сервера не более 5 минут в неделю 99.99% — недоступность сервера не более 5 минут в месяц 99.999% — недоступность сервера не более 5 минут в год
Используемые программные продукты
Patroni
Шаблон для построения отказоустойчивых кластеров на базе PostgreSQL. Обеспечивает автоматическое переключение на резервный сервер при сбое ведущего сервера. Patroni управляет экземпляром базы данных PostgreSQL и использует внешние системы (ZooKeeper, etcd, Consul или Kubernetes) для хранения общей для всех узлов кластера информации, такой как список узлов кластера и положение ведущего сервера
etcd
Согласованное распределенное хранилище пар ключ-значение, обеспечивающее надежный способ хранения данных, к которым могут обращаться распределенная система или кластер машин
HAProxy
Прокси сервер TCP и HTTP трафика. Позволяет создать единую точку подключения к PostgreSQL, не зависящую от распределения ролей в кластерах PostgreSQL