Управление серверами при помощи ClusterSSH






Если вы являетесь UNIX-администратором, вероятней всего каждый день вам приходится обслуживать не один сервер, и не один хост. Возможно даже, что количество управляемых вами систем довольно огромно, например, если вы являетесь администратором фермы веб-серверов. Если вам понадобится выполнить одну и ту же команду сразу на нескольких серверах, вы можете последовательно подключиться к каждому по SSH и ввести эту команду. Или же вы можете сохранить кучу своего драгоценного времени, воспользовавшись утилитой вроде ClusterSSH.


ClusterSSH — это обёртка к XTerm и клиенту SSH, написанная на Perl/Tk. Таким образом, ClusterSSH может работать в любой POSIX-совместимой ОС, где есть необходимые программные компоненты — Perl с модулями Tk и X11::Protocol, XTerm и OpenSSH Автор успешно запускал утилиту в системах под управлением Linux, Solaris и Mac OS X.

Установка

Установка ClusterSSH в Debian и Ubuntu не представляет какой-либо сложности и заключается в выполнении команды:

Также существуют готовые пакеты для Fedora и порты в FreeBSD. Пользователи систем Apple могут установить ClusterSSH из MacPorts. Ну и, конечно же, вы можете собрать утилиту из исходников.

Настройка

ClusterSSH может настраиваться как из глобального файла конфигурации расположенного в /etc/clusters, так и из локального для каждого пользователя файла ~/.csshrc. Автор предпочитает хранить настройки в локальном файле конфигурации. Формат файла конфигурации ClusterSSH очень прост. В документации ClusterSSH используется термин «кластер». Кластер — это группа систем, которые вам необходимо администрировать, используя один интерфейс. В файле конфигурации вы можете сперва объявить несколько кластеров, а после определить набор систем, входящих в кластер.

Например, давайте представим, что нам нужно настроить два кластера, содержащие по два хоста каждый. «cluster1» будет содержать системы «test1» и «test2», а «cluster2» — системы «test3» и «test4». Описать это в файле конфигурации, как уже говорилось, очень просто:

Также вы можете создавать метакластеры, т. е. кластеры, которые включают в себя другие кластеры. Например, если вам нужен кластер, содержащий все машины (назовём его «all»), вы можете создать его таким образом:

или же использовать метакластер:

Такой способ объединения систем более удобен, поскольку в случае изменений в одном из кластеров «cluster1» или «cluster2» изменения автоматически коснуться и метакластера «all», и вам не придётся изменять содержимое последнего вручную. Это может сэкономить вам массу времени, особенно в случаях, когда ваш .csshrc станет заметно больше в размерах.

Использование

Запуск ClusterSSH подобен запуску клиента SSH. Например, чтобы подключиться ко всем системам кластера «cluster1» от имени пользователя «vasya» выполните следующую команду:

Как и в случае с использованием клиента OpenSSH, параметр -l вместе с его значением можно опустить, тогда будет использоваться имя пользователя, из-под учётной записи которого вы запустили ClusterSSH.

На скриншоте в начале статьи запечатлено подключение к двум системам. Маленькое окошко с заголовком "CSSH [2]" — это консоль ClusterSSH. Всё, что вы будете вводить в текстовом поле этого окошка. будет отправлено в открытые сессии, в данном случае — системам «test1» и «test2».

Вы также можете подключаться к системам, которых нет в конфигурации кластеров. Для этого просто перечислите их имена вместо указания имени кластера:

Если вам необходимо отправить команду какому-то определённому хосту, а не всем сразу, тогда просто сделайте активным окно XTerm с нужной SSH-сессией и отправьте необходимую команду.

ClusterSSH предлагает ещё несколько удобных функций для работы с набором подключений. Как показано на скриншоте ниже, для доступа к этим функциям используется меню «Hosts».

Крайне полезна бывает функция «Retile Windows», которая выполняет автоматическое размещение окон с учётом свободного пространства экрана. «Add host (s) or Cluster (s)» позволяет пользователю добавлять новые хосты и/или кластеры не покидая текущей сессии работы с ClusterSSH. Также обратите внимание на имена хостов, перечисленные в нижней части меню и на чекбоксы слева от них. Включая и отключая чекбоксы вы можете выбирать хосты, которые будут получать команды, вводимые в консоли ClusterSSH. Очень удобная возможность, если вам необходимо отправить команду всех хостам, исключив пару-тройку ненужных.

Ещё одна интересная возможность спрятана в элементе меню «Send — Hostname». Выбрав это меню, ClusterSSH отправит во все активные сессии имя хоста, к которому каждая сессия подключена. Довольно полезная штука, когда вы сочиняете командную строку, в которой используются имена хостов и, естественно, являются разными для каждой сессии.

Предостережение

Как и множество UNIX-утилит, ClusterSSH может принести больше вреда, чем пользы, в случае неправильного или необдуманного применения. Будьте очень осторожны при работе с этой утилитой. Подумайте над тем, чего вам может стоить критическая ошибка допущенная сразу на нескольких десятках/сотнях серверов. Трижды проверяйте всё, что вводите в консоли, прежде, чем давить на «Enter».

Заключение

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

Оригинал статьи на Linux.Com




Управление серверами при помощи ClusterSSH: 3 комментария

  1. я для таких целе скриптик написал на баше... прост как 5 копеек

    pastebin.com/V4FcvTF2

    а список серверов лежит в файлике, в виде

    alias fqdn-name port

Комментарии запрещены.