Научная статья на тему 'АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ ГЕОРАСПРЕДЕЛЕННЫХ КЛАСТЕРОВ SPLUNK C ПОМОЩЬЮ TERRAFORM И ANSIBLE'

АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ ГЕОРАСПРЕДЕЛЕННЫХ КЛАСТЕРОВ SPLUNK C ПОМОЩЬЮ TERRAFORM И ANSIBLE Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
168
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
SPLUNK / TERRAFORM / ANSIBLE / DEVOPS / АВТОМАТИЗАЦИЯ / КЛАСТЕРИЗАЦИЯ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гумеров Булат Зуфарович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEPLOYMENT AUTOMATION OF GEO-DISTRIBUTED SPLUNK CLUSTERS USING TERRAFORM AND ANSIBLE

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 C ПОМОЩЬЮ TERRAFORM И ANSIBLE»

ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ

DOI - 10.32 743/UniTech.2022.98.5.13 795

АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ ГЕОРАСПРЕДЕЛЕННЫХ КЛАСТЕРОВ SPLUNK

C ПОМОЩЬЮ TERRAFORM И ANSIBLE

Гумеров Булат Зуфарович

Компания «Д14», старший инженер РФ, Республика Башкортостан, г. Уфа E-mail: bulat.gumerov.z@gmail. com

DEPLOYMENT AUTOMATION OF GEO-DISTRIBUTED SPLUNK CLUSTERS USING TERRAFORM AND ANSIBLE

Bulat Gumerov

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

АННОТАЦИЯ

В современных реалиях жизни требуется думать быстро, делать оперативно и правильно, при этом не допуская ошибок. В статье говорится об автоматизации развёртывания кластеров 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), базы дан-m^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].

Библиографическое описание: Гумеров Б.З. АВТОМАТИЗАЦИЯ РАЗВЁРТЫВАНИЯ КЛАСТЕРОВ SPLUNK C ПОМОЩЬЮ TERRAFORM И ANSIBLE В МУЛЬТИОБЛАЧНОМ ОКРУЖЕНИИ // Universum: технические науки : электрон. научн. журн. 2022. 5(98). URL: https://7universum. com/ru/tech/archive/item/13795

№ 5 (98)

А1

UNIVERSUM:

ТЕХНИЧЕСКИЕ НАУКИ

май, 2022 г.

Перечень задач, которые нужно совершить на серверах, описаны в плейбуках и ролях. Это список действий в формате 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].

terraform {

required providers { vsphere = {

source = "hashicorp/vsphere" version = "2.0.2"

Деплой геораспределенного кластера 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:

}

}

provider "vsphere" {

alias =

user =

password =

vsphere server =

allow unverified ssl =

}

"msk"

"your user@vsphere.local" "your password" "10.07251.100" true

provider "vsphere" {

alias =

user =

password =

vsphere server =

allow unverified ssl =

}

"spb"

"your user@vsphere.local" "your password" "10.17251.100" true

В файле main.tf необходимо описать требуемую позволят уменьшить объем кода и повысить его чи-

инфраструктуру для каждого из компонентов кла- таемость. Полный код приведен в репозитории [5].

стера. Для этого будут использованы модули, которые Ниже приведена часть кода для создания Splunk

indexer cluster в московском датацентре:

module "splunk-indexer-msk-linuxvm" { providers = {

vsphere = vsphere.msk #Указываем датацентр — Москва либо Санкт-Петербург

}

source = "Terraform-VMWare-Modules/vm/vsphere" version = "3.1.0" #Используется модульная архитектура dc = "MSK-Datacenter"

vmrp = "/MSK-Datacenter/host/vSAN Cluster/Resources" vmfolder = "CT/CT21" is windows image = false

vmtemp = "tpl-centos8" #Образ для клонирования ВМ firmware = "efi"

instances = 2 #Количество виртуальных машин и их

cpu number = 16 #характеристики

ram size = 32768

vmname = "msk-srv-ct21-idx"

domain = "example.com"

network = {

"Customer21 Network" = ["10.0.21.20", "10.0.21.21"]

}

ipv4submask = ["24"] network type = ["vmxnet3"]

dns_server_list = ["10.0.250.10", "10.1.250.10"] vmgateway = "10.0.21.1" tags = {

"terraform-category" = "terraform-tag" "env" = "production" "role" = "splunk-indexer"

}

data disk = { #Здесь описаны два диска для хранения данных

hot disk = {

size_gb = 2000, thin provisioned = false, data_disk_scsi_controller = 0, datastore id = "datastore-1"

}

frozen disk = { size_gb = 3000, thin provisioned = false, data_disk_scsi_controller = 0, datastore id = "datastore-2"

}

}

scsi_bus_sharing = "physicalSharing" scsi type = "pvscsi" scsi_controller = 0 enable disk uuid = true

}

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

terraform apply -auto-approve

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

plugin: community.vmware.vmware vm inventory strict: False

hostname: 10.0.251.100 #IP адрес VMware Vsphere и данные для входа

username: your username@vsphere.local

password: 'your_password'

validate certs: False

# with tags: True

properties:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

- 'runtime.powerState'

- 'config.name'

- 'guest.ipAddress' filters:

- runtime.powerState == "poweredOn" and (config.name is search('msk-srv-splunk') or config.name is search('spb-srv-splunk')) #Фильтруем по имени серверов Splunk hostnames:

- config.name

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

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

Но прежде чем приступить к запуску официальной роли Splunk, необходимо подготовить операционную систему и окружение для запуска кластера,

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

- hosts: all

gather facts: yes strategy: free vars:

version: 8.2.1 #Устанавливаемая версия Splunk build: ddff1c41e5cf

license uri: https://172.17.240.40:8089 #IP адрес Splunk license master password: your_password

shc pass4symmkey: your shc pass4symmkey #Параметры searchhead кластера shc label: your shc label

idxc pass4symmkey: your idxc pass4symmkey #Параметры indexer кластера

idxc discoverypass4symmkey: your idxc pass4symmkey

idxc label: your idxc label

pass4symmkey: your shc pass4symmkey

multisite replication factor origin: 1

multisite replication factor total: 3

multisite search factor origin: 1

multisite search factor total: 3

all sites: #Здесь задаются наши датацентры

- site1 # В Москве

- site2 # и Санкт-Петербурге roles:

- prepare post tasks:

- name: Touch ansible log file #Логи пишутся в этот файл ansible.builtin.file:

path: /opt/container artifact/ansible.log state: touch owner: ansible group: ansible become: yes

#Запуск официального плейбука splunk-ansible: - name: Execute splunk-ansible deployment

shell: cd /opt/ansible/ && ansible-playbook -i inventory/environ.py -connection local site.yml become: yes

Заключение

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

а в тестовых стендах обычно тестируются новые интеграции с различными системами и сервисами. Предлагаемый подход к автоматизации развертывания геораспределённых кластеров позволяет быстро создать новый кластер, что-то в нём протестировать и поэкспериментировать, а затем также быстро его выключить и удалить.

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

https://github.com/Bulat-Gumerov/prepare-splunk https://github.com/Bulat-Gumerov/splunk-muШsite-duster

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

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

i Надоели баннеры? Вы всегда можете отключить рекламу.