Установка и настройка Splunk в отказоустойчивой конфигурации. Часть 4 – настройка кластера Search Head

Продолжение серии статей о том, как выполняется установка и настройка Splunk в отказоустойчивой конфигурации. В этой публикации я расскажу о том, как выполняется настройка кластера Search Head, т.е. в этой статье мы будем говорить про вот эту часть:

Из общей схемы развертывания распределенной архитектуры.

Предварительно нужно выполнить подготовку серверов Linux.

Установка Splunk

Этот шаг включает в себя установки Splunk. Я буду использовать версию 8.0.10.

Необходимо установить Splunk на следующие сервера:

  • spl_sh01
  • spl_sh02

На сервере spl_mgr01 Splunk был установлен в прошлой публикации.

Сервер spl_mgr01 будет выступать в качестве менеджера кластера, а сервера spl_sh01 и spl-sh02 будут являться узлами кластера.

В качестве опорного руководства по установке я использовал свою же статью. Только с поправкой на версию 8.0.10.

Настройка лицензии

На кажждом из серверов нужно настроить адрес для получения лицензии от сервиса лицензирования.

Для этого выполним следующие шаги. Я покажу на примере сервера spl_idx01:

1. Перейдем в соответствующий раздел настроек:

https://10.10.10.27/en-GB/manager/system/licensing

2. Нажмем на кнопку “Change to slave”.

3. Укажем адрес сервера лицензирования.

4. Перезапустим сервис Splunk.

5. Выполнить шаги из пунктов выше на сервере spl_sh02.

Настройка кластера Search Head

Теперь перейдем непосредственно к настройке кластера.

Подготовка Deployer

Сначала подготовим менеджер кластера на сервере spl_mgr01 (10.10.10.19):

1. Укажем кластерный ключ:

sudo nano /opt/splunk/etc/system/local/server.conf

2. В секции [shclustering] добавим параметр pass4SymmKey:

[shclustering]
pass4SymmKey = Qwerty123

3. Сохраните внесенные изменения. Splunk затем сам хеширует этот ключ.

4. Перезапустим Splunk.

sudo systemctl restart Splunkd

Подготовка узлов кластера

Теперь выполним настройки на узлах:

1. Подключимся к первому узлу Search Head – spl_sh01 (10.10.10.27).

2. Добавим его в кластер Search Head:

sudo /opt/splunk/bin/splunk init shcluster-config -mgmt_uri https://10.10.10.27:8089 -replication_port 8088 -conf_deploy_fetch_url https://10.10.10.19:8089 -secret Qwerty123 -shcluster_label sh_cluster

3. Перезапустим Splunk на spl_sh01:

sudo systemctl restart Splunkd

4. Теперь добавим второй узел кластера – spl_sh02 (10.10.10.28):

sudo /opt/splunk/bin/splunk init shcluster-config -mgmt_uri https://10.10.10.28:8089 -replication_port 8088 -conf_deploy_fetch_url https://10.10.10.19:8089 -secret Qwerty123 -shcluster_label sh_cluster

5. Перезапустим Splunk на spl_sh02:

sudo systemctl restart Splunkd

6. Теперь выберем капитана. На одном из узлов кластера выполним команду:

sudo /opt/splunk/bin/splunk bootstrap shcluster-captain -servers_list "https://10.10.10.27:8089,https://10.10.10.28:8089"
[root@spl-sh01 roman]# sudo /opt/splunk/bin/splunk bootstrap shcluster-captain -servers_list "https://10.10.10.27:8089,https://10.10.10.28:8089"
Successfully bootstrapped this node as the captain with the given servers.
[root@spl-sh01 roman]#

Проверка работы кластера

Потребуется некоторое время на то, чтобы кластер полностью инициализировался. В моем случае это заняло около 10 минут.

Проверить статус кластера Search Head можно вот такой командой:

sudo /opt/splunk/bin/splunk show shcluster-status
[root@spl-sh01 roman]# sudo /opt/splunk/bin/splunk show shcluster-status

 Captain:
                               dynamic_captain : 1
                               elected_captain : Wed Apr 23 21:28:15 2025
                                            id : 193D0DB7-A468-4E23-9FBB-A52D3B029227
                              initialized_flag : 0
                                         label : spl-sh01.itproblog.ru
                                      mgmt_uri : https://10.10.10.27:8089
                         min_peers_joined_flag : 0
                          rolling_restart_flag : 0
                            service_ready_flag : 0

 Members:
        spl-sh01.itproblog.ru
                                         label : spl-sh01.itproblog.ru
                                      mgmt_uri : https://10.10.10.27:8089
                                mgmt_uri_alias : https://10.10.10.27:8089
                                        status : Up
        spl-sh02.itproblog.ru
                                         label : spl-sh02.itproblog.ru
                         last_conf_replication : Pending
                                      mgmt_uri : https://10.10.10.28:8089
                                mgmt_uri_alias : https://10.10.10.28:8089
                                        status : Up
[root@spl-sh01 roman]#

Подключение серверов Search Head к индексаторам

Теперь подключим сервера Search Head к индексаторам. Для этого на каждом из узлов Search Head необходимо:

1. Выполнить команду:

sudo /opt/splunk/bin/splunk edit cluster-config -mode searchhead -master_uri https://10.10.10.19:8089 -secret Qwerty123

2. Перезапустить службу Splunk:

sudo systemctl restart Splunkd

3. Перейдем на страницу управления кластером на менеджере кластера:

https://10.10.10.19/en-GB/manager/system/clustering?tab=searchheads

Там должны отобразиться два наших узла Search Head

Настройка балансировщика

Теперь настроим балансировку трафика между двумя узлами Search Head. Для этого нам понадобится третий сервер – spl_lb01. Последовательность действий:

1. Подключимся по SSH на сервер spl_lb01 и отключим SELinux:

sudo setenforce 0

2. Установим nginx:

sudo dnf install -y nginx
sudo systemctl enable --now nginx

3. Создадим директорию для сертификатов:

sudo mkdir -p /etc/nginx/ssl

4. Скопируем сертификаты в директорию /etc/nginx/ssl и настроим разрешения:

sudo chmod -R 440 /etc/nginx/ssl/
sudo chown -R root:root /etc/nginx/ssl/

5. Откроем для редактирования конфигурационный файл nginx:

sudo nano /etc/nginx/nginx.conf

6. В блок http добавил следующие директивы:

upstream splunk {
        ip_hash;
        server 10.10.10.27:443;
        server 10.10.10.28:443;
    }
 
server {
        listen       80;
        listen       [::]:80;
        server_name  sh.itproblog.ru;
        #root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        return 301 https://$host$request_uri;
    }

# Settings for a TLS enabled server.

    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  sh.itproblog.ru;
        #root         /usr/share/nginx/html;

        ssl_certificate "/etc/nginx/ssl/itproblog_wild.crt";
        ssl_certificate_key "/etc/nginx/ssl/itproblog_wild.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass https://splunk;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-NginX-Proxy true;
            real_ip_header X-Real-IP;
        }
    }

7. Проверим конфигурацию сервиса nginx:

sudo nginx -t

8. Перезапустим сервис nginx:

sudo systemctl restart nginx

9. Попробуем подключиться к серверам SH через балансировщик:

https://sh.itproblog.ru/

Подключение через балансировщик работает корректно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *