Установка Wimark One - HA

Предустановка

Для установки платформы Wimark One необходимо два сервера с предустановленной ОС на базе Linux.
В случае L2 связности - схема Intra DC, в случае L3 связности - Inter DC.

Для корректной работы ПО и для подключения ТД в Firewall необходимо открыть следующие порты:

  • TCP: 80 / 443 (DST) - для управления через WEB-интерфейс;

  • UDP: 500 / 4500 (DST) - для туннеля IPSec между ТД и платформой (ТД подключается по ipsec);

  • TCP: 8080 / 8443 (DST) - для портала авторизации пользователей (для Portal модуля);

  • TCP: 1883 (DST) - для подключения ТД без туннеля (MQTT);

  • Убедиться, что открыт TCP: 27017 -  (MongoDB).

Настройка беспарольного доступа между серверами

ВАЖНО! Это необходимо выполнить на двух машинах!

  1. Необходимо создать нового пользователя - one:

adduser one


       2. Добавить пользователя one в суперпользователи:

sudo usermod -aG sudo one

       3. Войти в систему под этим пользователем :

su one

       4. Сгенерировать ssh ключ:

ssh-keygen -t rsa

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

Запрос о введении кодовой фразы следует пропустить, т.к. может помешать автоматизации некоторых процессов.

Далее указать место, где хранятся ID и открытый ключ.


Рисунок 1 - Пример вывода команды ssh-keygen

       5. Скопировать ssh-ключ на указанный сервер:

ssh-copy-id one@{IP}

{IP} - IP сервера, куда будет скопирован ключ.

После завершения, следует убедиться, что действительно получилось сделать беспарольный доступ между двумя серверами.
Для этого необходимо под пользователем one с одного сервера подключиться ко второму.
Тоже самое выполнить со второго сервера на первый.
ssh one@{IP}

Если при подключении запрос пароля не поступил, то всё работает правильно.

Установка Wimark One

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

Пример: выполнить установку Docker (п. 3) на первом сервере, после окончания выполнения данного пункта выполнить тоже самое на втором сервере.

Необходимо загрузить дистрибутив Wimark One на тот сервер, где планируется установка ПО (при наличии доступа в интернет):

wget <URL> \
 -O /tmp/<название файла>

Формат названия файла установщика: продукт - версия - дата сборки - лицензия* - брендирование - формат установки - формат инсталлятора - installer run.

* Лицензия:

  • base - NMS;

  • portal - NMS + портал;

  • anl - NMS + аналитика;

  • pro - NMS + портал + аналитика.


Для запуска установки необходимо выполнить:

  1. Сделать загруженный ранее дистрибутив Wimark One исполняемым:

sudo chmod +x /tmp/<название файла>

       2. Запустить установку на первом сервере:

sudo /tmp/<название файла>

Начиная с версии Wimark One 1.12, в дистрибутиве содержится интерактивный “установщик”, который поможет заполнить необходимые параметры для установки платформы.

На момент установки платформы на двух серверах рекомендуется иметь доступ в Интернет, в противном случает подразумевается, что все перечисленные пакеты уже имеются на сервере.

       3. Установка Docker:


Рисунок 2 - Установка Docker

       4. Установка следующих пакетов: tcpdump, keepalived и rsync.

Для корректной работы платформы и установщика, необходимы установленные пакеты: tcpdump, keepalived и rsync. Если во время установки данные пакеты не будут обнаружены, то установщик самостоятельно скачает и установит их.



Рисунок 3 - Проверка и установка необходимых пакетов

       5. Указать параметры Management IP, Neighbor IP и VIP:



Рисунок 4 - Management IP, Neighbor IP и VIP

Management IP - IP-адрес управления.

Neighbor IP - IP-адрес соседнего сервера.

VIP - виртуальный IP используемый сервисом keepalived, который будет одинаковым, независимо от сервера.


       6. Во время установки будет предложено заполнить FQDN:

Данный пункт необходимо выполнить только на первом сервере! Следуйте инструкциям в пункте 7.



Рисунок 5 - FQDN

Если пользователь не собирается использовать FQDN, то следует указать любое доменное имя, например: one.mydomain.com

FQDN (Fully Qualified Domain Name) полное доменное имя определяющее узел в сети Интернет (имя домена, на которое будет реагировать веб-сервер).

FQDN должен быть одинаковым, что на первом сервере, что на втором сервере.

       7. После установки основных компонентов будет предложено установить SMTP (рисунок 6).


Рисунок 6 - Установка SMTP

SMTP_HOST - имя хоста или IP-адрес SMTP-сервера, который будет отправлять сообщения;

SMTP_PORT - номер порта для подключения к SMTP-серверу, по умолчанию 25;

SMTP_USER - логин учетной записи (УЗ) для SMTP;

SMTP_PASS - пароль УЗ для SMTP.

       8. Дальше выполняется создание, запуск платформы и инициализация БД (рисунок 7).


Рисунок 7 - Ожидание ответа от второго сервера

       9. После завершения установки отобразится запись:

-- УСТАНОВЩИК -- Процесс установки окончен

Необходимо добавить выполнение скрипта start.sh в cron:

sudo crontab -u root -e


* * * * * bash /opt/wimark/one/start.sh
* * * * * sleep 10 && bash /opt/wimark/one/start.sh
* * * * * sleep 20 && bash /opt/wimark/one/start.sh
* * * * * sleep 30 && bash /opt/wimark/one/start.sh
* * * * * sleep 40 && bash /opt/wimark/one/start.sh
* * * * * sleep 50 && bash /opt/wimark/one/start.sh


Проверка работоспособности

Для контроля работоспособности Wimark One пользователю следует перейти на web интерфейс платформы. При успешном завершении установки отобразится форма авторизации в соответствии с рисунком 8.

Логин/пароль по умолчанию: wimark/wimark




Рисунок 8 - Форма авторизации

Создание резервных копий (версия 1.11.8 и выше)

Перед созданием резервной копии БД необходимо убедиться в том, что на сервере достаточно свободного места.
Для создания резервной копии платформы Wimark One рекомендуется иметь от 6 до 10 ГБ свободного места.

Есть два варианта создания резервной копии БД: полное и частичное.
При создании частичной резервной копии копируется только конфигурация (локации, настройки), лицензионный ключ и static файлы. Использование данного метода значительно ускоряет сам процесс восстановления БД и уменьшает размер резервной копии БД.

При создании полной резервной копии БД копируются все данные, т.е. статистика, конфигурация, static, ключ и т.д. Использование данного метода гарантирует полное копирование данных, но значительно замедляет процесс восстановление БД, и сама резервная копия БД занимает довольно много места.

При создании резервной копии платформы Wimark One версии 1.12 в команды не нужно добавлять:  --port 30001 --host rs0/mongo-rs-1

Создание полной резервной копии

Достаточно выполнить только на одной машине!

Если имя контейнера с MongoDB отличается от того, что указано в команде, то можно использовать docker ps для поиска нужного контейнера.


  1. Создать резервную копию БД:

docker exec -it  $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
 awk '{ print $1;}') mongodump --port 30001 --host rs0/mongo-rs-1 --db=test --gzip --archive=/tmp/backup_wimark.gz


rs0/mongo-rs-1 зависит от доступности серверов.

Если первый сервер недоступен, то следует заменить его на второй сервер.

127.0.0.1 localhost mongo-rs-1
1.1.1.1 mongo-rs-2

При недоступности второго сервера, заменить его на первый.

       2. Подготовить папку на сервере для резервной копии:

sudo mkdir /opt/wimark_backup/

       3. Копировать архив с резервной копией БД из контейнера в систему:

docker cp $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
 awk '{ print $1;}'):/tmp/backup_wimark.gz /opt/wimark_backup/

       4. Создать резервную копию static файлов, которые находятся в папке /opt/wimark/static:

cp -r /opt/wimark/static /opt/wimark_backup/static

Создание частичной резервной копии

  1. Подготовить папку на сервере для резервной копии:

sudo mkdir /opt/wimark_backup/

       2. Зайти в контейнер с MongoDB:

docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
 awk '{ print $1;}') bash

       3. Создать резервную копию БД:

mongodump --port 30001 --host rs0/mongo-rs-1 --db=test \
--excludeCollection=radar_probes_real --excludeCollection=radar_probes_raw \
--excludeCollection=client_addr --excludeCollection=cpe_scan_data \
--excludeCollection=cpe_stat_info --excludeCollection=client_stats \
--excludeCollection=client_rf --excludeCollection=events \
--excludeCollection=client_session_info --excludeCollection=bss_stat_info \
--excludeCollection=client_stat_info --excludeCollection=stats \
--excludeCollection=lbs_client_data --excludeCollection=lbs_client_coords \
--excludeCollection=lbs_cpe_info --excludeCollection=lbs_client_probes_testing \
--excludeCollection=lbs_client_probes --gzip --archive=/tmp/backup_wimark.gz; exit

rs0/mongo-rs-1 зависит от доступности серверов.

Если первый сервер недоступен, то следует заменить его на второй сервер.

127.0.0.1 localhost mongo-rs-1
1.1.1.1 mongo-rs-2

При недоступности второго сервера, заменить его на первый.


Данная команда для создания резервной копии указана в качестве примера!

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

       4. Копировать архив с резервной копией БД из контейнера в систему:

docker cp $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
 awk '{ print $1;}'):/tmp/backup_wimark.gz /opt/wimark_backup/

       5. Создать резервную копию static файлов, которые находятся в папке /opt/wimark/static:

cp -r /opt/wimark/static /opt/wimark_backup/static

Обновление Wimark One (HA) до версии 1.12.1

При обновлении Wimark One с более ранних версий (до 1.11.8), необходимо сначала выполнить обновление на версию 1.11.8 в соответствии с документацией “Wimark One: установка и обновление на свои сервера (HA)_1.11”.

  1. Подготовить резервную копию БД.

  2. Определить сервер, на котором БД является PRIMARY:

docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | awk '{ print $1;}') \
 mongo --port 30001 --eval "printjson(db.runCommand('ismaster'))" | grep ismaster

Если в выводе "ismaster" : false , то перейти на другой сервер и повторить.

Если "ismaster" : true, то следует оставаться на этом сервере.

       3. Остановить сервис - keepalived:

service keepalived stop

       4. Удалить из cron задачи связанные со скриптом checker.sh:

sudo crontab -u root -e


* * * * * bash /opt/wimark/checker.sh
* * * * * sleep 10 && bash /opt/wimark/checker.sh
* * * * * sleep 20 && bash /opt/wimark/checker.sh
* * * * * sleep 30 && bash /opt/wimark/checker.sh
* * * * * sleep 40 && bash /opt/wimark/checker.sh
* * * * * sleep 50 && bash /opt/wimark/checker.sh

       5. Удалить старую платформу (необходимо выполнить из под root - sudo su):

При обновлении с версии 1.12 на версию 1.12.1 на обоих серверах удалить каталог /opt/mongodb/ при его наличии.


rm -r /opt/wimark; docker rm -f $(docker ps -qaf "name=one-|master|backup|one_")

       6. Удалить все остановленные контейнеры, образы, сети и тома из Docker:

docker system prune --all --volumes


Данная команда удалит все остановленные контейнеры, “висящие” (неиспользуемые) Docker-образы, неиспользуемые сети и тома.

Если вы дополнительно установили контейнеры поверх Wimark One, то следует создать резервные копии для них/их настроек и установить после завершения обновления.

       7. Удалить упоминания о mongo-rs-1, mongo-rs-2 и mongo-rs-3 из /etc/hosts:

sudo nano /etc/hosts


127.0.0.1 localhost mongo-rs-2
{IP-1} mongo-rs-1
{VIP} mongo-rs-3

       8. Проверить, что всё отработало корректно, т.е. второй сервер должен быть в состоянии Master.
Для этого может понадобиться несколько минут с момента отключения keepalived.

Более подробный процесс описан в разделе по установке Wimark One.

       9. Необходимо загрузить дистрибутив Wimark One на оба сервера, затем запустить установку на первом сервере (при наличии доступа в интернет).

wget <URL> \
 -O /tmp/<название файла>

       10. Сделать загруженный ранее дистрибутив Wimark One исполняемым:

sudo chmod +x /tmp/<название файла>

       11. Запустить установку на первом сервере:

sudo /tmp/<название файла>

Начиная с версии Wimark One 1.12, в дистрибутиве содержится интерактивный “установщик”, который поможет заполнить необходимые параметры для установки платформы.

На момент установки платформы на двух сервера рекомендуется иметь доступ в Интернет, в противном случает подразумевается, что все перечисленные пакеты уже имеются на сервере.

       12. Заполнить настройки и согласиться удалить старые настройки keepalived.


Рисунок 9 - Обновление платформы

Это связанно с тем, что начиная с версии 1.12 Wimark One используется третья версия VRRP и изменён стандартный конфигурационный файл keepalived.

       13. Указать данный сервер как Master, т.е. создать новый мастер-сервер (ввести значение “0):


Рисунок 10 - Новый мастер-сервер

       14. На рисунке 11 отображается ожидание окончания инициализации, настройка SMTP, затем ожидание сообщения о том, что данный сервер ждёт ответа от MongoDB со второго сервера.


Рисунок 11 - Ожидание обновления второго сервера

       15. Перейти на второй сервер.

       16. Остановить сервис - keepalived:

service keepalived stop

       17. Удалить из cron задачи связанные со скриптом checker.sh:

sudo crontab -u root -e


* * * * * bash /opt/wimark/checker.sh
* * * * * sleep 10 && bash /opt/wimark/checker.sh
* * * * * sleep 20 && bash /opt/wimark/checker.sh
* * * * * sleep 30 && bash /opt/wimark/checker.sh
* * * * * sleep 40 && bash /opt/wimark/checker.sh
* * * * * sleep 50 && bash /opt/wimark/checker.sh

       18. Удалить старую платформу (необходимо выполнить из под root - sudo su):

rm -r /opt/wimark; docker rm -f $(docker ps -qaf "name=one-|master|backup|one_")

       19. Удалить все остановленные контейнеры, образы, сети и тома из Docker:

docker system prune --all --volumes


Данная команда удалит все остановленные контейнеры, “висящие” (неиспользуемые) Docker-образы, неиспользуемые сети и тома.

Если вы дополнительно установили контейнеры поверх Wimark One, то следует создать резервные копии для них/их настроек и установить после завершения обновления.

       20. Удалить упоминания о mongo-rs-1, mongo-rs-2 и mongo-rs-3 из /etc/hosts:

sudo nano /etc/hosts


127.0.0.1 localhost mongo-rs-2
{IP-1} mongo-rs-1
{VIP} mongo-rs-3

       21. Сделать загруженный ранее дистрибутив Wimark One исполняемым:

sudo chmod +x /tmp/WiMark-one-installer.run

       22. Запустить установку на втором сервере:

sudo /tmp/WiMark-one-installer.run

       23. Заполнить настройки и согласиться удалить старые настройки keepalived.


Рисунок 12 - Обновление второго сервера

При выборе мастер-сервера, выбираем тот, который сейчас активен на первом сервере.

       24. После завершения установки проверить, что на первом сервере тоже закончилась установка. Для этого может понадобится несколько минут, пока БД и другие контейнеры на втором сервере будут запускаться (рисунок 13).


Рисунок 13 - Завершение установки на первом сервере

       25. Скопировать ранее созданную резервную копию БД в контейнер с новой БД:

docker cp /opt/wimark_backup/backup_wimark.gz $(docker ps | \
 grep 'one-mongo-1\|one-mongo-ha-1' | awk '{ print $1;}'):/tmp/

       26. Запустить процесс восстановления данных из резервной копии БД:

docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
 awk '{ print $1;}') mongorestore --drop --nsInclude='test.*' \
 --gzip --archive=/tmp/backup_wimark.gz

       27. Копировать обратно static-файлы:

rm -r /opt/wimark/static
cp -r /opt/wimark_backup/static /opt/wimark/

       28. Добавить на двух серверах скрипт в cron:

sudo crontab -u root -e


* * * * * bash /opt/wimark/one/start.sh
* * * * * sleep 10 && bash /opt/wimark/one/start.sh
* * * * * sleep 20 && bash /opt/wimark/one/start.sh
* * * * * sleep 30 && bash /opt/wimark/one/start.sh
* * * * * sleep 40 && bash /opt/wimark/one/start.sh
* * * * * sleep 50 && bash /opt/wimark/one/start.sh


После этого обязательно необходимо перезагрузить первый, а затем второй сервер!

  • Нет меток