Elasticsearch — это масштабируемый полнотекстовый поисковый и аналитический поисковый движок с открытым исходным кодом, позволяющий хранить большие объемы данных, проводить среди них быстрый поиск и аналитику. Он является чрезвычайно мощным инструментом для поиска и анализа данных, благодаря его способности к масштабированию. Описание всех преимуществ этого движка доступно на официальном сайте.
Читать далееАрхив рубрики: high availability
Балансировка нагрузки на кластер MySQL с помощью HAProxy
Введение
Как правило, приложение взаимодействует с кластером, устанавливая соединение с одним из доступных узлов. Если узел базы данных становится недоступен, приложение должно переподключиться к другому узлу базы данных, чтобы продолжать обрабатывать запросы.
Существуют различные способы обеспечения отказоустойчивого соединения с одним или несколькими серверами базы данных MySQL. Один из них заключается в использовании драйвера базы данных, поддерживающего пул соединений, балансировку нагрузки и отработку отказа, например:
- драйвер JDBC для MySQL (MySQL Connector/J);
- драйвер, используемый по умолчанию в PHP MySQL для master-slave (mysqlnd-ms).
Эти драйверы позволяют обеспечить прозрачность подключения клиентов к автономному серверу MySQL, решению MySQL Cluster (NDB) или топологии, использующим репликацию MySQL.
Однако при использовании этих драйверов с кластером Galera для MySQL или MariaDB есть ряд проблем, так как они не обладают расширенной информацией о состоянии Galera. Например, узел-донор Galera может находиться в режиме «только для чтения» , когда помогает другому узлу повторно синхронизироваться (если для передачи снимка состояния (SST) используется mysqldump или rsync), или в случае split brain он может быть в состоянии Non-Primary. То есть, существуют случаи, когда даже драйверы с поддержкой пуллинга и балансировки не предоставляют необходимый уровень поддержки кластера.
Часто используемое альтернативное решение заключается в применении балансировщика нагрузки между клиентами и кластером базы данных. Из этой статьи вы узнаете, как с помощью ClusterControl развернуть, настроить и управлять балансировкой нагрузки MySQL с использованием HAProxy.
Читать далееПроизводительность репликации в кластере MySQL Galera
Администраторы часто настраивают кластер Galera с тремя и более узлами в сетях с пропускной способностью 1 Гбит/с. Кажется, что 1 Гбит/с это довольно много? Фактически, не так уж и много, если задуматься о том, как происходит репликация данных между серверами кластера.
Galera поддерживает два режима репликации — с использованием одноадресной рассылки (ip unicast), либо с использованием многоадресной рассылки, для работы которого может требоваться поддержка на уровне инфраструктуры провайдера или вашего сетевого оборудования, если используется собственная инфраструктура.
Читать далееЗащита сетевого трафика кластера MySQL Galera с помощью шифрования SSL
В том случае, если вы эксплуатируете кластер Galera с узлами, работающими в разных центрах обработки данных, соединение между которыми устанавливается по незащищенному каналу, вам необходимо обеспечить защиту данных, передаваемых между клиентами и кластером и между узлами кластера.
Кластер Galera поддерживает шифрование соединения с использованием протокола SSL. В статье мы рассмотрим, как зашифровать все соединения кластера с помощью SSL-шифрования.
Читать далееНастройка высокодоступного, масштабируемого отказоустойчивого сайта с помощью Nginx, GlusterFS и MySQL Galera в Linux
Современные сайты часто должны работать в режиме 24x7x365 без остановок на обслуживание. В этих условиях владельцы сайтов готовы инвестировать дополнительные средства в оборудование и программные решения для обеспечения высокой доступности.
Сайт без единой точки отказа становится де-факто требованием в мире, где большинство операций выполняются дистанционным образом. Простои обходятся дорого, особенно, если они происходят в неподходящее время — праздники, выходные, высокий сезон.
В этой статье мы рассмотрим как настроить высокодоступный сайт на трех узлах, которые могут быть как виртуальными так и аппаратными серверами. В ходе настройки мы будем использовать Nginx, СУБД MariaDB (MySQL), распределенную файловую систему GlusterFS, CDN CloudFlare, сертификаты Let’s Encrypt.
Читать далееНастройка отказоустойчивого кластера MySQL с синхронной мульти-master репликацией с помощью Galera в Ubuntu, Debian и CentOS Linux
Синхронная мульти-master репликация в MySQL появилась сравнительно недавно, однако была востребована довольно давно. До этого момента пользователям приходилось использовать либо репликацию в режиме Master-Slave и переключать операции записи на ведомый сервер при отказе главного сервера, либо использовать довольно сложный вариант с Master-Master репликацией на основании двунаправленной Master-Slave репликации.
Стоит отметить, что в конфигурации Master-мульти-Slave реализация автоматического переключения становится сложнее и не всегда возможна без человеческого вмешательства. Более того, репликация Master-Slave является не полностью синхронной, отчего могут быть проблемы с потерей данных при выходе сервера Master из строя, если ведомый сервер существенно отстал.
С появлением Galera все стало намного проще. Для надежной работы вам необходимо эксплуатировать нечетное количество серверов, например 3 или 5 для защиты от партиционирования, так, чтобы при ситуации, когда кластер «рассыпался» Galera могла принять обоснованное решение о том, является ли наблюдаемый сегмент кластера целостным.
Читать далееНастраиваем распределенную файловую систему GlusterFS на трехузловом кластере под управлением Linux
В этом руководстве мы рассмотрим настройку распределенной файловой системы GlusterFS на кластере, состоящем из трех узлов. Кластерные файловые системы часто используются в отказоустойчивых системах для обеспечения общего хранилища файлов.
Мы не рекомендуем использовать кластерные системы в задачах, где предполагается интенсивная запись данных, требующая высоких показателей IOPS и прогнозируемую задержку IO. Однако, для задач, в которых операции чтения значительно преобладают над операциями записи и нет требований к ультранизкой задержке IO, кластерные файловые системы вполне могут использоваться.
Читать далееРеализация динамических черных и белых списков доступа по IP большого объема в Nginx с помощью Lua и Redis в Ubuntu и Debian
В данном руководстве мы рассмотрим как реализовать концепцию большого динамического черного или белого списка с помощью веб-сервера Nginx, сервера Redis и скрипта расширения Nginx, реализованного на Lua.
В данном руководстве все программное обеспечение будет устанавливаться в Ubuntu 16.04 или 18.04. Практически без изменений данные решения можно применить и в других дистрибутивах, основанных на Debian.
Nginx содержит встроенный механизм обработки черных или белых списков, который подходит в случае использования небольших списков. Однако, этот механизм неудобен, когда требуется работать с большими списками адресов, когда списки формируются динамически.
К счастью, Nginx поддерживает модули расширения на языке Lua, которые совместно с кэшу в памяти Redis позволяют реализовать требуемую функциональность черных и белых списков.
Читать далееДоступ к сообщениям журнала ядра при переходе ядра Linux в режим паники
Часто встречающаяся ситуация: виртуальный или аппаратный сервер завис и не отвечает. Заходите на него с помощью инструмента удаленного управления IPMI или консоли VNC, видите только черный экран и ничего кроме. Скорее всего, ядро Linux вошло в режим паники (Kernel Panic), который вызван сбоем одного из модулей ядра, ошибкой в самом ядре, критической аппаратной ошибкой.
Вы перезагружаете сервер, ищите журналы на предмет релевантных сообщений, а в ответ пустота — ничего криминального нет. На самом деле, сообщения сопровождающую возникшую ошибку были, но они не дошли до файла журнала. Связано это с тем, что, когда ядро Linux сталкивается с критической ситуацией, особенно, если она связана с файловой системой, то ему не удается использовать модули файловых систем, чтобы записать данные в файл журнала. Как результат, записи, сопровождающие ошибку теряются.
Усиление безопасности сервера Redis
Redis — NoSQL хранилище типа “ключ/значение”, размещаемое в памяти, имеющее возможность сохранения на диск. Чаще всего Redis используется для кэширования данных, хранения сессий и для реализации различных механизмов масштабирования.
Redis был спроектирован для использования доверенными клиентами в надежной среде, и в нем не предусмотрено собственных надежных функций безопасности. Для подтверждения этого приведем цитату с официального сайта Redis:
Читать далее«Redis предназначен для доступа доверенных клиентов в доверенных средах. Это означает, что, как правило, не рекомендуется размещать экземпляр Redis непосредственно в Интернете или, вообще, в среде, где непроверенные клиенты могут напрямую обратиться к TCP-порту Redis или сокету UNIX… В общем, дизайн Redis спроектирован для обеспечения максимальной производительности и простоты управления, но не для максимальной безопасности.»