Как выполнить bash-скрипт с аргументами параллельно на всех удаленных серверах, если удаленный сервер входит в пару
Пожалуйста, сначала внимательно прочитайте проблему, а затем дайте решение...................
у нас есть 3 файла в каталоге
- myscript.sh (файл myscript.sh содержит много функций и запускает / останавливает все пары / одну пару из файла serverlist.txt, такие функции как
для функции start(): проверьте, является ли arg2 парой "все пары" или "один IP", затем запустите ее.
для функции stop(): проверьте, является ли arg2 парой all-pair или single-IP, затем остановите ее.
для функции rules(): проверьте, является ли arg3 новыми-правилами или такими же правилами, затем скопируйте его
для функции put_files(): она использует arg2 и проверяет, является ли arg2 парой "все пары" или "один IP"
like: ./myscript.sh put_files all-pair
or ./myscript.sh put_files 192.168.20.13-192.168.20.21
2. файл deploy_function: файл deploymet_function извлекает IP-пару из файла server_list.txt в форме PAIR.
- server_list.txt
Например, server_list.txt содержит IP-пару в виде IP-пары (сервер C++ - сервер базы данных).
192.168.20.13-192.168.20.21
192.168.20.22-192.168.20.34 192.168.20.42-192.168.20.45
Основной синтаксис моего скрипта:
./myscript.sh arg1 arg2 arg3
где, arg1= начать или остановить или положить файлы
arg2= все пары или одна пара IP
arg3 = new-rules или same-rules
Мы выполняем наш сценарий следующими способами.....
./myscript.sh запуск всех пар новых правил ИЛИ
./myscript.sh начало 192.168.20.13-192.168.20.21 new-rules
./myscript.sh остановить все пары или
./myscript.sh stop 192.168.20.13-192.168.20.21
Проблема: На самом деле, он выполняется нормально, но требует больше времени для выполнения на всех IP-парах, потому что он выполняется последовательно. сначала он идет к 192.168.20.21, затем к 192.168.20.13, затем к 192.168.20.34 и 192.168.20.22....., когда он получает ошибку, он останавливается на этом сервере. и не выполнять дальше по остальной IP-паре.
Я хочу выполнить myscript на всех серверах параллельно, и если получаю ошибку, перечислите этот сервер и выполните furtur. так есть какое-то решение, где я могу выполнить тот же сценарий параллельно без изменений в MySQL. поэтому, пожалуйста, помогите мне найти правильный способ сделать это....
1 ответ
Вы можете попробовать использовать pdsh (Parallel Distributed Shell). Pdsh - это эффективный многопоточный клиент удаленной оболочки, который выполняет команды параллельно на нескольких удаленных хостах. Хотя он не обновлялся довольно долго, он все равно прекрасно работает, когда я запускаю скрипты на 700 машинах.