Оглавление |
---|
Установка Wimark One - HA
Предустановка
Для установки платформы Wimark One необходимо 2 сервера с предустановленной ОС на базе Linux.
В случае L2 связности - схема Intra DC, в случае L3 связности - Inter DC.
...
Информация |
---|
VIP - виртуальный IP. Используется keepalived. К этому адресу должны будут подключаться ТД, и по данному IP всегда будет доступен Master/Active сервер. |
Установка Docker
Примечание |
---|
Для установки Docker необходимы права суперпользователя/root |
Войти под пользователем root следующей командой:
Блок кода |
---|
sudo su |
2. Установить Docker на сервер:
Блок кода |
---|
curl -sSl https://get.docker.com | sh |
...
Информация |
---|
При необходимости установки каким-либо другим способом, либо на другую ОС, на сайте https://docs.docker.com/engine/install/ есть подробные инструкции для установки. |
Настройка беспарольного доступа между серверами
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
...
4. Сгенерировать ssh ключ:
Блок кода |
---|
ssh-keygen -t rsa |
Информация |
---|
После ввода данной команды, следует указать место хранения ключей или нажать Enter для того, чтобы принять путь по умолчанию. Запрос о введении кодовой фразы можно пропустить (может помешать автоматизации некоторых процессов). Далее в выводе указывается место, где хранятся ID и открытый ключ. |
...
Информация |
---|
{IP} - IP сервера, куда будет скопирован ключ. После завершения, следует убедиться, что действительно получилось сделать беспарольный доступ между двумя серверами. Если при подключении запрос пароля не поступил, то всё работает правильно. |
Настройка /etc/hosts для работы БД
Необходимо настроить /etc/hosts таким образом, чтобы резолвились хосты для работы базы данных.
...
Рисунок 2 - Пример настроенного файла /etc/hosts
Установка ПО Wimark One
Необходимо загрузить дистрибутив Wimark One на сервера, где планируется установка ПО.
...
Во время установки будет предложено заполнить FQDN (рисунок 3).
Рисунок 3 - Запрос FQDN
...
После завершения установки, необходимо создать скрипты для keepalived.
Настройка keepalived
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
...
Блок кода |
---|
sudo chmod +x /opt/wimark/checker.sh sudo chmod +x /opt/wimark/set_state.sh |
keepalived.conf для MASTER (первая машина)
Блок кода |
---|
sudo nano /etc/keepalived/keepalived.conf |
...
Блок кода | ||
---|---|---|
| ||
global_defs { script_user root #enable_script_security } # Имя VRRP - WIM1 vrrp_instance WIM1 { # Имя интерфейса на котором работает VRRP: eth0 # ПОМЕНЯТЬ ИМЯ ИНТЕРФЕЙСА НА ТОТ, КОТОРЫМ СОЕДЕНИНЫ МАШИНЫ!!! interface {INTERFACE} # Изначальное состояние текущей машины: MASTER или BACKUP state MASTER # уникального сегмента VRRP # Если в вашей сети уже используется VRRP, то проверьте, чтобы ID был уникальным (должен совпадать с backup!) virtual_router_id 120 # preempt - Всегда назначать MASTER ту машину, которая имеет более высокий приоритет (если возможно) # nopreempt - Не изменять состояние после выхода из аварийного состояния # nopreempt garp_master_delay 1 priority 200 advert_int 1 # Метод аутентификации и пароль (пароль может содержать максимум 8 символов) authentication { auth_type PASS auth_pass {PASSWORD} } # Виртуальный IP (VIP) virtual_ipaddress { # ПОМЕНЯТЬ IP И ИМЯ ИНТЕРФЕЙСА НА ТЕ, КОТОРЫЕ БЫЛИ УКАЗАННЫ КАК VIP ПРИ УСТАНОВКЕ!!! {VIP}/24 dev {INTERFACE} } # Скрипт, который будет запускаться при изменении STATE - НЕ ТРОГАТЬ! notify /opt/wimark/set_state.sh } |
keepalived.conf для BACKUP (вторая машина)
Блок кода |
---|
sudo nano /etc/keepalived/keepalived.conf |
Примечание |
---|
ВАЖНО! Переменные в данном файле необходимо заполнить самостоятельно. |
Информация |
---|
Необходимо изменить: {VIP} - виртуальный IP для keepalived |
...
Блок кода | ||
---|---|---|
| ||
global_defs { script_user root #enable_script_security } # Имя VRRP - WIM2 vrrp_instance WIM2 { # Имя интерфейса на котором работает VRRP: eth0 # ПОМЕНЯТЬ ИМЯ ИНТЕРФЕЙСА НА ТОТ, КОТОРЫМ СОЕДЕНИНЫ МАШИНЫ!!! interface {INTERFACE} # Изначальное состояние текущей машины: MASTER или BACKUP state BACKUP # ID уникального сегмента VRRP # Если в вашей сети уже используется VRRP, то проверьте, чтобы ID был уникальным (должен совпадать с master!) virtual_router_id 120 # preempt - Всегда назначать MASTER ту машину, которая имеет более высокий приоритет (если возможно) # nopreempt - Не изменять состояние после выхода из аварийного состояния # nopreempt garp_master_delay 1 priority 200 advert_int 1 # Метод аутентификации и пароль (пароль может содержать максимум 8 символов) authentication { auth_type PASS auth_pass {PASSWORD} } # Виртуальный IP (VIP) virtual_ipaddress { # ПОМЕНЯТЬ IP И ИМЯ ИНТЕРФЕЙСА НА ТЕ, КОТОРЫЕ БЫЛИ УКАЗАННЫ КАК VIP ПРИ УСТАНОВКЕ!!! {VIP}/24 dev {INTERFACE} } # Скрипт, который будет запускаться при изменении STATE - НЕ ТРОГАТЬ! notify /opt/wimark/set_state.sh } |
Запуск платформы
Запустить платформу через скрипты:
...
4. Записать в список задачи для запуска - /opt/wimark/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. Сохранить изменения и проверить:
Блок кода |
---|
sudo crontab -u root -l |
Рисунок 6 - Пример готового crontab
6. Перезапустить keepalived:
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! При первом запуске контейнеры на MASTER машине не будут корректно работать до тех пор, пока не запустятся контейнеры на BACKUP машине. |
Блок кода |
---|
service keepalived restart |
Проверка работоспособности
Для контроля работоспособности Wimark One пользователю следует перейти на web интерфейс платформы. При успешном завершении установки отобразится форма авторизации в соответствии с рисунком 7.
Информация |
---|
Логин/пароль по умолчанию: wimark/wimark |
Рисунок 7 - Форма авторизации
Обновление Wimark One - HA
Процесс обновления Wimark One представляет собой: удаление старых компонентов и установку новой версии платформы.
Если нет необходимости в переносе старых данных (статистики, SSID, настроек ТД и т.д.), то необходимо только удалить старую версию платформы, а затем установить новую версию в соответствии с инструкцией.
Создание резервных копий
Перед созданием резервной копии БД необходимо убедиться в том, что на сервере достаточно свободного места.
Для создания резервной копии платформы Wimark One рекомендуется иметь минимум 6G свободного места.
...
При создании полной резервной копии БД копируются все данные, т.е. статистика, конфигурация, static, ключ и т.д. Использование данного метода гарантирует полное копирование данных, но значительно замедляет процесс восстановление БД, и сама резервная копия БД занимает довольно много места.
Создания полной резервной копии
Создать резервную копию БД:
Примечание |
---|
Достаточно выполнить только на одной машине! |
Блок кода |
---|
docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \ awk '{ print $1;}') mongodump --port 30001 --db=test --gzip --archive=/tmp/backup_wimark.gz |
Предупреждение |
---|
Failed: error creating intents to dump: error getting collections for database test: (NotPrimaryOrSecondary) node is not in primary or recovering state БД должна быть PRIMARY, данное состояние может не совпадать с MASTER/BACKUP самой машины. |
Информация |
---|
Если имя контейнера с MongoDB отличается от того, что указано в команде, то можно использовать docker ps для поиска нужного контейнера. |
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 |
Информация |
---|
Если версия Wimark One ниже 1.10, то файлы будут находится каталоге /usr/share/wimark/static |
Создание частичной резервной копии
Создать резервную копию БД без коллекций со статистикой:
Блок кода | ||
---|---|---|
| ||
docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \
awk '{ print $1;}') bash
mongodump --port 30001 --db=test --excludeCollection=bss_stat_info \
--excludeCollection=client_stat_info --excludeCollection=client_stats \
--excludeCollection=cpe_stat_info --excludeCollection=stats \
--excludeCollection=wlan_stat_info --gzip --archive=/tmp/backup_wimark.gz; exit |
Предупреждение |
---|
Failed: error creating intents to dump: error getting collections for database test: (NotPrimaryOrSecondary) node is not in primary or recovering state БД должна быть PRIMARY, данное состояние может не совпадать с MASTER/BACKUP самой машины. |
...
2. Копировать архив с резервной копией БД из контейнера в систему:
...
Блок кода |
---|
cp -r /opt/wimark/static /opt/wimark_backup/static |
Обновление ПО и перенос БД
Обновление ПО
Перед удалением старой версии ПО необходимо скопировать скрипты и остановить сервис cron:
...
Блок кода |
---|
sudo su rm -r /opt/wimark; docker rm -f $(docker ps -qaf "name=one-|master|backup|one_") |
Информация |
---|
Если версия Wimark One ниже 1.10, то файлы будут находится в каталоге /etc/wimark |
Если на сервере в docker используется только Wimark One, то можно дополнительно выполнить эту команду:
Блок кода |
---|
docker system prune --all --volumes |
Примечание |
---|
Данная команда удалит все остановленные контейнеры, “висящие” (неиспользуемые) Docker-образы, неиспользуемые сети и тома. Поэтому следует использовать данную команду только в том случае, если в Docker устанавливалось только ПО Wimark One. |
3. Скачать новую версию ПО на сервер и запустить установку:
...
Блок кода |
---|
cp /opt/wimark_backup/set_state.sh /opt/wimark/set_state.sh cp /opt/wimark_backup/checker.sh /opt/wimark/checker.sh |
Информация |
---|
/tmp/ - каталог в котором хранятся временные файлы. Файлы удаляются спустя определенное время и после перезагрузки сервера. {IP-1/2} - адрес машины. {VIP} - виртуальный IP используемый сервисом keepalived. https://storage.wimark.com/api/public/dl/XZqjHaJe - пример ссылки на прошивку. WiMark-ha-1.11.0-2023-10-30-qtech-installer.run - пример имени файла, может отличаться в зависимости от сборки и версии ПО. |
6. Запускаем сервис cron:
Блок кода |
---|
sudo service cron start |
Перенос БД
- После того, как платформа завершила инициализацию и полноценно работает, необходимо принудительно остановить контейнер backend на MASTER ноде. Остановить cron для того, чтобы контейнер не смог переподняться по скрипту:
...
Блок кода |
---|
docker stop $(docker ps | grep 'backend-golang-1' | awk '{ print $1;}') |
3. Копировать ранее созданую созданную резервную копию БД в контейнер mongo:
...
Блок кода |
---|
docker exec -it $(docker ps | grep 'one-mongo-1\|one-mongo-ha-1' | \ awk '{ print $1;}') mongorestore --port 30001 --drop --nsInclude='test.*' \ --gzip --archive=/tmp/backup_wimark.gz |
Примечание |
---|
--drop - перезаписывает текущие данные в БД. В зависимости от размеров коллекций и технических характеристик машины, этот процесс может занять от нескольких минут до нескольких часов! |
5. Удалить новые и перенести старые файлы static:
...
Проверить работоспособность платформы в соответствии с разделом Проверка работоспособности