Синхронизация данных

  1. На сервере с 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
  2. На сервере с master-node ViQube для каждой slave-node cоздать скрипты с телом ниже, где заменить <node_ip>, <user>, <password> на нужные:

    1. Для синхронизации снапшота, например, скрипт 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
    2. Для синхронизации конфига, например, скрипт 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
  3. Дать права на выполнение:

  4. Добавить сертификаты для ssh от всех slave машин на master. Например, это можно сделать так:

  5. Добавить скрипты из шага 3 в крон на перезагрузку машины

    1. Добавить строчки, где заменить путь до скрипта <path>

    2. Для логирования можно использовать другую команду

    3. Перезагрузить машину