DEV Community

It Caat
It Caat

Posted on

Секретное оружие для работы с сотнями серверов

Сегодня хочу показать вам инструменты, которые входят в мой личный топ полезных утилит для работы с множеством серверов. Их главная суперсила - параллельное выполнение задач.

Давайте я просто покажу примеры использования с кратким описанием и все сами поймете.

pdsh - инструмент, который позволяет выполнять команды на множестве хостов параллельно.

# Проверим uptime на хостах начиная с 1 по 5, исключив 3
pdsh -w node[1-5] -x node3 uptime

# Перезагрузим все хосты, кроме node3 и node7
pdsh -w node[1-10] -x node3,node7 'sudo reboot'
Enter fullscreen mode Exit fullscreen mode

Если вы достаточно организованы, чтобы вести список хостов - можно даже использовать файл с заранее определенными хостами

# File: my_hosts.txt
# node1
# node2
# db[01-05]

pdsh -w "^my_hosts.txt" 'uptime'
Enter fullscreen mode Exit fullscreen mode

Вы скажете:

так тебе же ничего не мешает использовать для этих целей Ansible!

ansible -i 'node1,node2,node3' all -m shell -a 'uptime'
Enter fullscreen mode Exit fullscreen mode

И будете совершенно правы - ничего не мешает, но это же круто знать о существовании альтернативных инструментов инструментов, тем более ansible может и не оказаться под рукой.

Когда одного pdsh мало - берите PSSH.

pssh - отличная альтернатива pdsh

# Одновременное обновление пакетов на всех хостах
pssh -h production_servers.txt -l admin -t 300 "sudo apt update && sudo apt upgrade -y"
Enter fullscreen mode Exit fullscreen mode

pscp - массовое копирование на сервера

# Залить скрипт мониторинга на все хосты
pscp -h all_hosts.txt monitor_script.sh /usr/local/bin/
Enter fullscreen mode Exit fullscreen mode

prsync - параллельное копирование через rsync

# Обновить статические файлы только если они изменились
prsync -h cdn_nodes.txt -a "-avz" static/ /var/www/static/
Enter fullscreen mode Exit fullscreen mode

pslurp - собрать файлы с серверов на локальную тачку

# Собрать логи со всех серверов в отдельные папки
pslurp -h servers.txt -l user -L ./collected_logs /var/log/app/error.log app_error.log
Enter fullscreen mode Exit fullscreen mode

Эти инструменты не заменят полноценные системы управления конфигурациями вроде Ansible или chef, но для быстрых задач, срочных исправлений или массового сбора информации - они незаменимы.

Другие авторские статьи по теме DevOps, SRE и администрирования вы можете найти в моем Telegram-канале DevOps Brain

Top comments (0)