Синхронизация данных
На сервере с master-node ViQube установить программы inotify и sshpass
Сделать исполняемыми скрипты load_images.sh, load_from_release_dockerhub.sh, run.sh, update.sh, выполнив команду:sudo apt-get update && sudo apt-get install -y inotify-tools sshpass
На сервере с master-node ViQube для каждой slave-node cоздать скрипты с телом ниже, где заменить <node_ip>, <user>, <password> на нужные:
Для синхронизации снапшота, например, скрипт viqube_sync_snapshot_slave_1.sh
#!/bin/bash LOGIN=<user> PASSWORD=<password> IP=<node_ip> while true; do inotifywait -r --event close_write --event create --event move --exclude '(.+)[\.](snapshot)[\.](.+)' /docker-volume/viqube/snapshots sshpass -p "${PASSWORD}" rsync -azvPr /docker-volume/viqube/snapshots/auto.snapshot ${LOGIN}@${IP}:/tmp/viqube/ sshpass -p "${PASSWORD}" ssh ${LOGIN}@${IP} "echo ${PASSWORD} | sudo -S cp /tmp/viqube/auto.snapshot /docker-volume/viqube/snapshots/auto.snapshot" # Restart ViQube echo ${PASSWORD} | sshpass -p "${PASSWORD}" ssh -tt ${LOGIN}@${IP} PASSWORD=${PASSWORD} 'sudo docker rm -f $(sudo -S docker ps --filter "name=viqube" -q)' done
Для синхронизации конфига, например, скрипт viqube_sync_config_slave_1.sh
#!/bin/bash LOGIN=<user> PASSWORD=<password> IP=<node_ip> while true; do inotifywait -r --event close_write --event create --event move /docker-volume/viqube/config sshpass -p "${PASSWORD}" rsync -azvPr /docker-volume/viqube/config/config.ini ${LOGIN}@${IP}:/tmp/viqube/ sshpass -p "${PASSWORD}" ssh ${LOGIN}@${IP} "echo ${PASSWORD} | sudo -S cp /tmp/viqube/config.ini /docker-volume/viqube/config/config.ini" # Restart ViQube echo ${PASSWORD} | sshpass -p "${PASSWORD}" ssh -tt ${LOGIN}@${IP} PASSWORD=${PASSWORD} 'sudo docker rm -f $(sudo -S docker ps --filter "name=viqube" -q)' done
Дать права на выполнение:
Добавить сертификаты для ssh от всех slave машин на master. Например, это можно сделать так:
Добавить скрипты из шага 3 в крон на перезагрузку машины
Добавить строчки, где заменить путь до скрипта <path>
Для логирования можно использовать другую команду
Перезагрузить машину