Оглавление | ||
---|---|---|
|
Установка 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).
Настройка беспарольного доступа между серверами
Предупреждение |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
Необходимо создать нового пользователя - one:
Блок кода | ||
---|---|---|
| ||
adduser one |
2 2. Добавить пользователя one в суперпользователи:
Блок кода | ||
---|---|---|
| ||
sudo usermod -aG sudo one
sudo usermod -aG docker one |
...
3. Войти в систему под этим пользователем :
Блок кода | ||
---|---|---|
| ||
su one |
4 4. Сгенерировать ssh ключ:
Блок кода | ||
---|---|---|
| ||
ssh-keygen -t rsa |
После ввода данной команды, следует указать место хранения ключей или нажать Enter для того, чтобы принять путь по умолчанию.
Информация |
---|
Запрос о введении кодовой фразы следует пропустить, т.к. может помешать автоматизации некоторых процессов. |
Далее указать место, где хранятся ID и открытый ключ.
Рисунок 1 - Пример вывода команды ssh-keygen
5 5. Скопировать ssh-ключ на указанный сервер:
...
Информация |
---|
{IP} - IP сервера, куда будет скопирован ключ. После завершения, следует убедиться, что действительно получилось сделать беспарольный доступ между двумя серверами. Если при подключении запрос пароля не поступил, то всё работает правильно. |
Установка Wimark One
Предупреждение |
---|
При установке HA необходимы два сервера. Каждый шаг в данном разделе необходимо выполнять одновременно на обоих серверах, сначала на одном сервере, затем на другом. Пример: выполнить установку Docker (п. 3) на первом сервере, после окончания выполнения данного пункта выполнить тоже самое на втором сервере. |
Необходимо загрузить дистрибутив Wimark One на тот сервер, где планируется установка ПО
...
(при наличии доступа в интернет):
Блок кода | ||
---|---|---|
| ||
sudo chmod +xwget <URL> \ -O /tmp/WiMark-one-1.12.1-2024-07-12-pro-qtech-ha-full-installer.run |
2. Запустить установку на первом сервере:
Блок кода | ||
---|---|---|
| ||
sudo /tmp/WiMark-one-1.12.1-2024-07-12-pro-qtech-ha-full-installer.run<название файла> |
Формат названия файла установщика: продукт - версия - дата сборки - лицензия* - брендирование - формат установки - формат инсталлятора - installer run.
* Лицензия:
base - NMS;
portal - NMS + портал;
anl - NMS + аналитика;
pro - NMS + портал + аналитика.
Для запуска установки необходимо выполнить:
Сделать загруженный ранее дистрибутив Wimark One исполняемым:
Блок кода | ||
---|---|---|
| ||
sudo chmod +x /tmp/<название файла> |
2. Запустить установку на первом сервере:
Блок кода | ||
---|---|---|
| ||
sudo /tmp/<название файла> |
Начиная с версии Wimark One 1.12, в дистрибутиве содержится интерактивный “установщик”, который поможет заполнить необходимые параметры для установки платформы.
Предупреждение |
---|
На момент установки платформы на двух сервера серверах рекомендуется иметь доступ в Интернет, в противном случает подразумевается, что все перечисленные пакеты уже имеются на сервере. |
3 3. Установка Docker:
Рисунок 2 - Установка Docker
4 4. Установка следующих пакетов: tcpdump, keepalived и rsync.
Для корректной работы платформы и установщика, необходимы установленные пакеты: tcpdump, keepalived и rsync. Если во время установки данные пакеты не будут обнаружены, то установщик самостоятельно скачает и установит их.
Рисунок 3 - Проверка и установка необходимых пакетов
5 5. Указать параметры Management IP, Neighbor IP и VIP:
Рисунок 4 - Management IP, Neighbor IP и VIP
...
Информация |
---|
Management IP - IP-адрес управления. Neighbor IP - IP-адрес соседнего сервера. VIP - виртуальный IP используемый сервисом keepalived, который будет одинаковым, независимо от сервера. |
6 6. Во время установки будет предложено заполнить FQDN:
Предупреждение |
---|
Данный пункт необходимо выполнить только на первом сервере! Следуйте инструкциям в пункте 7. |
Рисунок 5 - FQDN
Если пользователь не собирается использовать FQDN, то следует указать любое доменное имя, например: one.mydomain.com
Информация |
---|
FQDN (Fully Qualified Domain Name) полное доменное имя определяющее узел в сети Интернет (имя домена, на которое будет реагировать веб-сервер). FQDN должен быть одинаковым, что на первом сервере, что на втором сервере. |
7. После этого запустится инициализация keepalived.
Если в сети присутствуют другие сервера с keepalived, то необходимо будет указать значение “0” для создания нового мастер-сервера, как это показано на рисунке 6.
Рисунок 6 - Инициализация keepalived (MASTER)
Предупреждение |
---|
Особое внимание стоит обратить на строчку: На втором сервере мы ожидаем увидеть подобное сообщение: |
Предупреждение |
---|
Не дожидаясь окончания загрузки образов Docker, необходимо выполнить пункты 6 и 7 на втором сервере. |
На втором сервере необходимо будет выбрать именно тот “Мастер-сервер”, который был создан на первом сервере, например как на рисунке 7.
Рисунок 7 - Инициализация keepalived (BACKUP)
8. После установки основных компонентов будет предложено установить SMTP (рисунок 8).
Рисунок 8 - Установка SMTP
Информация |
---|
SMTP_HOST - имя хоста или IP-адрес SMTP-сервера, который будет отправлять сообщения; SMTP_PORT - номер порта для подключения к SMTP-серверу, по умолчанию 25; SMTP_USER - логин учетной записи (УЗ) для SMTP; SMTP_PASS - пароль УЗ для SMTP. |
9. Дальше выполняется создание, запуск платформы и инициализация БД (рисунок 9).
Рисунок 9 - Ожидание ответа от второго сервера
10. После завершения установки отобразится запись:
Блок кода | ||
---|---|---|
| ||
-- УСТАНОВЩИК -- Процесс установки окончен |
Необходимо добавить выполнение скрипта start.sh в cron:
Блок кода | ||
---|---|---|
| ||
sudo crontab -u root -e |
Блок кода
linenumbers | true |
---|
Рисунок 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 |
Рисунок 10 8 - Форма авторизации
Создание резервных копий (версия 1.11.8 и выше)
Перед созданием резервной копии БД необходимо убедиться в том, что на сервере достаточно свободного места.
Для создания резервной копии платформы Wimark One рекомендуется иметь от 6 до 10 ГБ свободного места.
Есть два варианта создания резервной копии БД: полное и частичное.
При создании частичной резервной копии копируется только конфигурация (локации, настройки), лицензионный ключ и static файлы. Использование данного метода значительно ускоряет сам процесс восстановления БД и уменьшает размер резервной копии БД.
При создании полной резервной копии БД копируются все данные, т.е. статистика, конфигурация, static, ключ и т.д. Использование данного метода гарантирует полное копирование данных, но значительно замедляет процесс восстановление БД, и сама резервная копия БД занимает довольно много места.
Предупреждение |
---|
Создание полной резервной копии
Предупреждение |
---|
Достаточно выполнить При создании резервной копии платформы Wimark One версии 1.12 в команды не нужно добавлять: --port 30001 --host rs0/mongo-rs-1 |
Создание полной резервной копии
Предупреждение |
---|
Достаточно выполнить только на одной машине! Если имя контейнера с MongoDB отличается от того, что указано в команде, то можно использовать docker ps для поиска нужного контейнера. |
Создать резервную копию БД:
Блок кода | ||
---|---|---|
| ||
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 |
...
Информация |
---|
Если первый сервер недоступен, то следует заменить его на второй сервер.
При недоступности второго сервера, заменить его на первый. |
2 2. Подготовить папку на сервере для резервной копии:
Блок кода | ||
---|---|---|
| ||
sudo mkdir /opt/wimark_backup/ |
3 3. Копировать архив с резервной копией БД из контейнера в систему:
Блок кода | ||
---|---|---|
| ||
docker cp $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \ awk '{ print $1;}'):/tmp/backup_wimark.gz /opt/wimark_backup/ |
4 4. Создать резервную копию static файлов, которые находятся в папке /opt/wimark/static:
Блок кода | ||
---|---|---|
| ||
cp -r /opt/wimark/static /opt/wimark_backup/static |
Создание частичной резервной копии
Подготовить папку на сервере для резервной копии:
Блок кода | ||
---|---|---|
| ||
sudo mkdir /opt/wimark_backup/ |
2 2. Зайти в контейнер с MongoDB:
Блок кода | ||
---|---|---|
| ||
docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \ awk '{ print $1;}') bash |
3 3. Создать резервную копию БД:
...
Предупреждение |
---|
Данная команда для создания резервной копии указана в качестве примера! Если какая-нибудь из коллекций необходима, то следует убрать её из исключений. |
4 4. Копировать архив с резервной копией БД из контейнера в систему:
Блок кода | ||
---|---|---|
| ||
docker cp $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \ awk '{ print $1;}'):/tmp/backup_wimark.gz /opt/wimark_backup/ |
5 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”. |
...
Подготовить резервную копию БД.
Определить сервер, на котором БД является 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 |
...
Информация |
---|
Если в выводе Если |
3 3. Остановить сервис - keepalived:
Блок кода | ||
---|---|---|
| ||
service keepalived stop |
4 4. Удалить из cron задачи связанные со скриптом checker.sh:
...
Блок кода | ||
---|---|---|
| ||
* * * * * 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 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 6. Удалить все остановленные контейнеры, образы, сети и тома из Docker:
...
Предупреждение |
---|
Данная команда удалит все остановленные контейнеры, “висящие” (неиспользуемые) Docker-образы, неиспользуемые сети и тома. Если вы дополнительно установили контейнеры поверх Wimark One, то следует создать резервные копии для них/их настроек и установить после завершения обновления. |
7 7. Удалить упоминания о mongo-rs-1, mongo-rs-2 и mongo-rs-3 из /etc/hosts:
...
Блок кода | ||
---|---|---|
| ||
127.0.0.1 localhost mongo-rs-2 {IP-1} mongo-rs-1 {VIP} mongo-rs-3 |
8 8. Проверить, что всё отработало корректно, т.е. второй сервер должен быть в состоянии Master.
Для этого может понадобиться несколько минут с момента отключения keepalived.
Информация |
---|
Более подробный процесс описан в разделе по установке Wimark One. |
9. Необходимо загрузить дистрибутив Wimark One
...
9. Необходимо загрузить дистрибутив Wimark One на оба сервера, на оба сервера, затем запустить установку на первом сервере , где уже было подготовлено всё необходимое.
10. Сделать загруженный ранее дистрибутив Wimark One исполняемым:
...
(при наличии доступа в интернет).
Информация |
---|
|
10. Сделать загруженный ранее дистрибутив Wimark One исполняемым:
Блок кода | ||
---|---|---|
| ||
sudo chmod +x /tmp/WiMark-one-1.12.1-2024-07-12-pro-qtech-ha-full-installer.run |
...
<название файла> |
11. Запустить установку на первом сервере:
Блок кода | ||
---|---|---|
| ||
sudo /tmp/WiMark-one-1.12.1-2024-07-12-pro-qtech-ha-full-installer.run<название файла> |
Начиная с версии Wimark One 1.12, в дистрибутиве содержится интерактивный “установщик”, который поможет заполнить необходимые параметры для установки платформы.
Предупреждение |
---|
На момент установки платформы на двух сервера рекомендуется иметь доступ в Интернет, в противном случает подразумевается, что все перечисленные пакеты уже имеются на сервере. |
12 12. Заполнить настройки и согласиться удалить старые настройки keepalived.
Рисунок 11 - Обновление платформы
Информация |
---|
Это связанно с тем, что начиная с версии 1.12 Wimark One используется третья версия VRRP и изменён стандартный конфигурационный файл keepalived. |
13. Указать данный сервер как Master, т.е. создать новый мастер-сервер (ввести значение “0”):
Рисунок 12 - Новый мастер-сервер
14. На рисунке 13 отображается ожидание окончания инициализации, настройка SMTP, затем ожидание сообщения о том, что данный сервер ждёт ответа от MongoDB со второго сервера.
Рисунок 13 - Ожидание обновления второго сервера
15. Перейти на второй сервер и выполнить пункты с 3 по 7:
...
.
Рисунок 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 - Обновление второго сервера
При выборе мастер-сервера, выбираем тот, который сейчас активен на первом сервере.
16 24. После завершения установки проверить, что на первом сервере тоже закончилась установка. Для этого может понадобится несколько минут, пока БД и другие контейнеры на втором сервере будут запускаться (рисунок 1513).
Рисунок 15 13 - Завершение установки на первом сервере
17 25. Скопировать ранее созданную резервную копию БД в контейнер с новой БД:
Блок кода | ||
---|---|---|
| ||
docker cp /opt/wimark_backup/backup_wimark.gz $(docker ps | \ grep 'one-mongo-1\|one-mongo-ha-1' | awk '{ print $1;}'):/tmp/ |
18 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 |
19 27. Копировать обратно static-файлы:
Блок кода | ||
---|---|---|
| ||
rm -r /opt/wimark/static cp -r /opt/wimark_backup/static /opt/wimark/ |
20 28. Добавить на двух серверах скрипт в cron:
...