АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ КЛАСТЕРОВ SPLUNK C ПОМОЩЬЮ TERRAFORM И ANSIBLE В МУЛЬТИОБЛАЧНОМ ОКРУЖЕНИИ

DEPLOYMENT AUTOMATION OF GEO-DISTRIBUTED SPLUNK CLUSTERS USING TERRAFORM AND ANSIBLE
Гумеров Б.З.
Цитировать:
Гумеров Б.З. АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ КЛАСТЕРОВ SPLUNK C ПОМОЩЬЮ TERRAFORM И ANSIBLE В МУЛЬТИОБЛАЧНОМ ОКРУЖЕНИИ // Universum: технические науки : электрон. научн. журн. 2022. 5(98). URL: https://7universum.com/ru/tech/archive/item/13795 (дата обращения: 05.05.2024).
Прочитать статью:
DOI - 10.32743/UniTech.2022.98.5.13795

 

АННОТАЦИЯ

В современных реалиях жизни требуется думать быстро, делать оперативно и правильно, при этом не допуская ошибок. В статье говорится об автоматизации развёртывания кластеров Splunk с помощью Terraform и Ansible. Использование данных программ позволяет автоматизированно создавать и администрировать кластеры легко, быстро, безопасно и централизованно. До внедрения данных программ создание одного кластера занимало от 3 до 7 рабочих дней и участия двух инженеров, а после внедрения этот процесс занимает от 20 до 40 минут с участием одного сотрудника.

ABSTRACT

In today's realities of life, you have to think fast, do quickly and correctly, while avoiding mistakes. In this article, we will learn how to automate Splunk cluster deployment using Terraform and Ansible. The use of these software allows the automated creation and administration of clusters easily, quickly, securely and centrally. Before the introduction of these programs, the creation of a single cluster took from 3 to 7 working days and the participation of two engineers, and now the process takes 20 to 40 minutes with a single employee.

 

Ключевые слова: Splunk, Terraform,  Ansible, DevOps, автоматизация, кластеризация.

Keywords: Splunk, Terraform,  Ansible, DevOps, automation, clusterization.

 

Terraform

Terraform это один из популярных инструментов с открытым исходным кодом для описания инфраструктуры в виде кода. Он позволяет просто и быстро описывать инфраструктуру в виде кода, который можно запустить в облаке, виртуальной машине или локально. Terraform позволяет использовать декларативный подход для описания инфраструктуры и  получить более простой и понятный код, который можно просматривать и исправлять в любой момент [2]. Terraform поддерживает множество облачных провайдеров, например Amazon web services, Azure, Google cloud, OpenStack, VMware, Cloudflare и многие другие. Помимо этого поддерживаются системы оркестрации контейнеров (Kubernetes, Openshift, Rancher, Docker), системы Continuous Integration/Deployment (CI/CD), базы данных(MSSQL, MySQL, Elasticsearch), сетевые устройства(PaloAlto, Fortinet, CheckPoint) и многие другие. В приведенном в статье примере будет использован  официальный провайдер VMware Vsphere. Данное программное обеспечение написано на языке программирования Golang компанией Hashicorp.

Ansible

Ansible это открытая система управления конфигурациями, которая используется для автоматизации развёртывания и последующей настройки программного обеспечения, написанное на языке программирования Python. Для подключения к серверам с Unix-подобными операционными системами, такими как Linux, BSD, macOS, используется протокол SSH, либо WinRM для ОС Windows. Также Ansible  поддерживает работу с сетевыми устройствами, на которых доступны SSH и Python. В настоящее время Ansible разрабатывается и поддерживается компанией Red Hat [3].

Перечень задач, которые нужно совершить на серверах, описаны в плейбуках и ролях. Это список действий в формате YAML, которые должны будут выполнены на определенной группе хостов.

Ansible позволяет управлять сразу множеством серверов, которые описаны в inventory файле — текстовом документе в форматах YAML, JSON, либо INI. Также можно использовать динамический inventory, например, обратившись к облачному провайдеру посредством API и получить список облачных серверов с IP-адресами. Данный подход помогает избежать ошибок при составлении статичных текстовых inventory файлов, а также упрощает и ускоряет работу по написанию плейбуков.

Splunk

Splunk это проприетарное программное обеспечение для поиска, мониторинга и анализа больших объемов машинных данных и событий. Обладает удобным веб интерфейсом и API. Splunk Enterprise Security это довольно мощный инструмент для обработки и анализа лог-файлов и событий информационной безопасности, собираемых с таких источников как антивирусы, файрволлы, системы идентификации и управления доступа, сетевые устройства, виртуальные машины, сервера и различные облачные провайдеры и т.д [1].

Установка и настройка кластера Splunk вручную занимает довольно длительное время. Сначало необходимо подобрать характеристики виртуальных машин под каждый из компонентов кластера Splunk – cluster master, indexer, search head, heavy forwarder. Затем нужно рассчитать объем индексируемых log-файлов в сутки, количество горячих, холодных и замороженных бакетов с помощью калькулятора [4].

Деплой геораспределенного кластера  Splunk

Для повышения отказоустойчивости и ускорения работы при индексировании и анализе больших объемов данных необходимо создать геораспределенный (то есть multisite по официальной терминологии) кластер Splunk. В каждом из датацентров будет располагаться по два indexer, три search head и один cluster master.

Сердцем Splunk является indexer, который принимает, обрабатывает, индексирует и хранит логи. Для минимальной работы Splunk indexer необходимо иметь высокопроизводительные SSD-диски с хорошим IOPS, серверный процессор с 12 физическими ядрами (или 24 потока), 12 ГБ оперативной памяти.

Splunk search head занимаются распределением поисковых запросов в кластере индексеров и сбором результатов. Минимальные системные требования следующие: серверный процессор c 16 физическими ядрами, 12 ГБ оперативной памяти. Для поиска событий обычно открывается порт HTTP(S) 8000 для доступа к веб-интерфейсу аналитикам по информационной безопасности.

Splunk cluster master управляет всеми компонентами кластера, при этом возможна работа только одного активного cluster master, второй cluster master во втором датацентре используется в качестве резервного. Системные требования здесь минимальные, 1 ГБ оперативной памяти и процессор с одним ядром успешно справляются с задачей. Так же не лишним будет напомнить, что скорость сетевых интерфейсов на каждом из серверов должна быть не менее 1 Гб/сек.

Предлагаемая  инфраструктура в Terraform: имеются два датацентра в Москве и Санкт-Петербурге, которые работают на VMware Vsphere и соединены  друг с другом через VPN по протоколу IPSEC со скоростью соединения до 1 Гб/сек. Для начала следует инициализировать используемых провайдеров в файле providers.tf:

В файле main.tf необходимо описать требуемую инфраструктуру для каждого из компонентов кластера. Для этого будут использованы модули, которые позволят уменьшить объем кода и повысить его читаемость. Полный код приведен в репозитории. [5]

Ниже приведена часть кода для создания Splunk indexer cluster в московском датацентре:

Из приведенного выше части кода следует, что с помощью terraform будут созданы необходимые виртуальные машины. Запуск  процесса создания виртуальных машин в скрипте происходит с помощью команды:

terraform apply -auto-approve

Через две минуты виртуальные машины готовы и можно приступить к началу конфигурации кластера Splunk с помощью Ansible.  Ansible умеет динамически выгружать списки серверов через плагин vmware_vm_inventory:

Компания Splunk разрабатывает и поддерживает официальную роль Ansible для развёртывания их продукта внутри контейнеров docker. [6]

Далее будет  использован динамический скрипт inventory, с помощью которого задаются основные параметры кластера, такие как версия Splunk, пароли для веб-интерфейса, ключи для searchhead и indexer кластеризации, фактор репликации и тому подобные настройки.

Но прежде чем приступить к запуску официальной роли Splunk, необходимо подготовить операционную систему и окружение для запуска кластера, так как эта роль предназначена для работы только внутри контейнеров docker, в которых уже имеется всё необходимое. К примеру, необходимо обновить все пакеты в системе, создать пользователя и группу splunk с ограниченными правами доступа, а также пользователя деплоя с полными правами для ansible, отключить transparent huge pages, включить синхронизацию времени на сервере по протоколу NTP и т.д. Поскольку фактически ничего этого нет, запустим созданную роль prepare, которая все подготовит и затем запустит основную официальную роль Splunk:

Заключение

В данной статье показано как с помощью современных DevOps инструментов можно уменьшить скорость развёртывания кластера Splunk от нескольких дней до 20 – 30 минут. Кроме того, это уменьшает вероятность возникновения ошибок при развёртывании путём минимизации человеческого фактора. Также данный подход можно использовать для развёртывания нескольких кластеров для различных сред – тестовых и основных рабочих. В рабочих средах важна надёжность и отказоустойчивость работы, а в тестовых стендах обычно тестируются новые интеграции с различными системами и сервисами. Предлагаемый подход к автоматизации развертывания  геораспределённых кластеров позволяет быстро создать новый кластер, что-то в нём протестировать и поэкспериментировать, а затем также быстро его выключить и удалить.

Весь исходный код проекта доступен в репозиториях GitHub:

https://github.com/Bulat-Gumerov/prepare-splunk

https://github.com/Bulat-Gumerov/splunk-multisite-cluster

 

Список литературы:

  1. James D. Miller. // Mastering Splunk 8. Birmingham, UK, Packt Publishing - 2020 ISBN: 978-1-83898-748-0
  2. Евгений Брикман. // Terraform: Up & Running. Birmingham, UK, Packt Publishing - 2020. ISBN 978-1-492-04690-5
  3. Daniel Oh, James Freeman, Fabio Alessandro Locati. // Practical Ansible 2. Birmingham, UK, Packt Publishing - 2021. ISBN: 978-1-78980-746-2
  4. http://splunk-sizing.appspot.com/
  5. https://github.com/Bulat-Gumerov/splunk-multisite-cluster
  6. https://github.com/splunk/splunk-ansible
Информация об авторах

Компания «Д14», старший инженер, РФ, Республика Башкортостан, г. Уфа

Senior engineer, «D14» L.L.C., Russia, Republic of Bashkortostan, Ufa

Журнал зарегистрирован Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), регистрационный номер ЭЛ №ФС77-54434 от 17.06.2013
Учредитель журнала - ООО «МЦНО»
Главный редактор - Ахметов Сайранбек Махсутович.
Top