Что такое хороший шаблон для синхронизации файлов между компьютерами параллельно (в CentOS)?
Попытка найти хороший способ копирования кода между одним "развертываемым" компьютером и несколькими "целевыми" компьютерами, надеюсь, параллельно. Идея заключается в том, что компьютер развертывания хранит копию файлов в том виде, в каком они должны быть скопированы на целевые серверы. Мы хотели бы, чтобы копирование происходило параллельно, так как это может включать несколько десятков целевых серверов.
Наша текущая схема предполагает использование rsync
для синхронизации содержащего каталога, в котором находятся файлы, чтобы сохранить целевые серверы, обновленные на сервере развертывания.
Итак, вопросы таковы:
- что является хорошим / лучшим способом сделать это? Какие инструменты используются для этого?
- следует ли рассматривать эту проблему под другим углом или с другой точки зрения, которую я полностью упускаю?
Большое спасибо!
3 ответа:
Другой вариант-пмсх, параллельной, распределенной оболочки. Он доступен из EPEL и позволяет запускать удаленные команды (через ssh) на нескольких узлах параллельно. Например:
pdsh -w node10,node11,node12 command
Выполняет "команду" на всех трех узлах параллельно. Он также имеет удобную функцию выражения имени хоста, чтобы сделать то же самое с немного меньшим количеством ввода:
pdsh -w node[10-12] command
Он также включает команду pdcp, которая копирует файлы на несколько узлов параллельно. (Пакет pdsh должен быть установлен на всех узлах для pdcp, чтобы работа.)
pdcp -w node[10-12] /local/file /remote/dir/
Локальный файл копируется в /remote / dir на всех трех узлах.
Мы используем команду lftp для синхронизации нашего удаленного веб-сервера с нашей локальной резервной машиной. Мы написали сценарий BaSH, чтобы автоматически синхронизировать все резервные копии на сервере с локальным ящиком, и мы настроили этот сценарий на cron для запуска каждую ночь.
Rsync-отличный способ справиться с этим, и я мог бы рекомендовать переместить ваш текущий протокол в установку cron, если он еще не установлен.
Unison также является инструментом, доступным для настройки двусторонней синхронизации, если вам это необходимо функциональность.
Надеюсь, это поможет!
Существует программа clusterssh, которая доступна в операционных системах на базе debian (но я смог установить ее на RHEL 6.3 с помощью RPM и разрешения других зависимостей), которая позволит вам открыть SSH-терминал для нескольких машин с одним местоположением ввода (это позволяет вам вводить один раз на столько машин, сколько у вас открыты терминалы). Тогда вы просто должны использовать простой scp. Я использовал эту программу для перемещения файла с рабочей станции разработки на целых 25 других но эта опция действительно полезна только в том случае, если вы пытаетесь выполнить то, что вы указали в вопросе, то есть скопировать файлы с одного компьютера на несколько других.
Это не эффективный механизм синхронизации. Если вы действительно хотите, чтобы он синхронизировался, то приведенный выше ответ будет лучшим.