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

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

  1. На сервере с master-node ViQube установить программы inotify и sshpass, выполнив команду:

    sudo apt-get update && sudo apt-get install -y inotify-tools sshpass
  2. На сервере с master-node ViQube для каждой slave-node создать скрипты с телом ниже, где заменить <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. Дать права на выполнение:

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

    sudo ssh <user>@<ip>
  5. Добавить скрипты из шага 3 в крон на перезагрузку машины.

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

      SHELL=/bin/bash
      
      @reboot <path>/viqube_sync_snapshot_slave_1.sh
      @reboot <path>/viqube_sync_config_slave_1.sh
    3. Для логирования можно использовать другую команду:

      @reboot <path>/viqube_sync_snapshot_slave_1.sh >> /var/log/viqube_sync.log 2>&1
      @reboot <path>/viqube_sync_config_slave_1.sh >> /var/log/viqube_sync.log 2>&1
    4. Перезагрузить машину.

      sudo reboot

Related content

Добавление ещё одной ноды с ViQube
Добавление ещё одной ноды с ViQube
Read with this
Синхронизация данных
Синхронизация данных
More like this
Установка компонентов на разные серверы
Установка компонентов на разные серверы
Read with this
Синхронизация данных
Синхронизация данных
More like this
Обновление компонентов, установленных на одном сервере
Обновление компонентов, установленных на одном сервере
Read with this
Синхронизация данных
Синхронизация данных
More like this