Ж у р н а л   о   к о м п ь ю т е р н ы х   с е т я х   и   т е л е к о м м у н и к а ц и о н н ы х   т е х н о л о г и я х
СЕТИ И СИСТЕМЫ СВЯЗИ on-line
  ПОИСК: ПОДПИСКА НА НОВОСТИ: НОМЕР:
    ДОМОЙ • Архив: Новостей | Конференций | НомеровПодписка
 
   
 
   
    
РЕДАКЦИЯ
 
Все о журнале
Подписка
Как проехать
Где купить
Отдел рекламы
График выхода журнала
Адреса в Интернет

РУБРИКАТОР
   
• Инфраструктура
• Информационные
   системы

• Сети связи
• Защита данных
• Кабельные системы
• Бизнес
• Колонка редактора
• Электронная
   коммерция

• Только на сервере
• Системы
   учрежденческой
   связи

• Новые продукты


Rambler's Top100

  

Свободно распространяемые утилиты администрирования Linux-систем

Джефф Баллард

Нет необходимости тратить большие деньги на обновление ПО и устранение неисправностей ваших Linux-систем. Решить проблемы с администрированием как серверов, так и рабочих станций помогут свободно распространяемые программные средства с открытым исходным кодом. Нужно только правильно подобрать программы, наиболее подходящие для вашего окружения.

Если вы администрируете несколько Linux-машин, обновление ПО и устранение неисправностей ОС и приложений могут оказаться весьма трудоемкими процессами. Но при правильном выборе инструментария администрирование Linux перестанет быть чересчур обременительным занятием.

Простейший и наиболее распространенный метод обновления ПО Linux состоит в использовании составленного традиционно на бумаге контрольного списка ваших машин. Вы по очереди регистрируетесь на каждой из них, выполняете необходимые действия и затем вычеркиваете машину из списка. Однако данный подход может потребовать много времени и не исключает ошибки.

Коммерческое ПО администрирования Linux-систем, такое, как Red Hat Network и Novell ZENworks Linux Management, обеспечивающее обновление и управление конфигурированием систем, является шагом вперед по сравнению с традиционным подходом. Данные инструменты хороши, если вы пользуетесь продуктами исключительно этих производителей, но в течение года поддержка каждой машины обойдется вам в 192 долл. для Red Hat Network (с расширенным сопровождением) или в 130 долл. для Novell ZENworks.

Вместо этого для централизованного управления ваших Linux-систем вы можете попробовать одно из многочисленных решений с открытым исходным кодом. И даже если вы уже используете коммерческие продукты, данные средства все равно придутся кстати. Нашими любимыми программными средствами администрирования серверов и рабочих станций Linux являются ClusterSSH, rsync и cfengine, которые позволяют администрировать различные типы машин, не ограничиваясь Linux- или Unix-системами, — и все с одной консоли.

Масштабируйте SSH

Защищенная командная оболочка (secure shell — ssh) является стандартом для безопасного удаленного администрирования Linux-машин. Но посредством одного ssh-сеанса можно подключиться только к одному компьютеру. Для управления же группой машин используется ПО ClusterSSH. Эта программа ускоряет работу администратора, открывая окно для каждого подключения и главное окно-повторитель (master repeater window), любое нажатие клавиш в котором одновременно воспроизводится в окне каждого ssh-соединения.

Например, если у вас имеется три машины с именами huey, dewey и louie, то вы начинаете сеанс администрирования с ввода команды cssh huey dewey louie.

ClusterSSH откроет четыре окна — по одному для каждого хоста плюс главное окно для набора команд. В случае набора команды в главном окне каждый удар клавиши автоматически передается каждому соединенному с вами хосту. Вы даже можете выполнять и более сложные операции — например, редактировать файл с помощью вашего любимого текстового редактора.

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

Поскольку ClusterSSH открывает окно для каждого хоста, то, очевидно, существует ограничение на число одновременно открываемых окон. ClusterSSH изменяет размер окон таким образом, чтобы они выглядели на рабочем столе по возможности аккуратно; соответственно, чем больше их у вас, тем они меньше по размеру. Мы обнаружили, что использовать ClusterSSH более чем с 20 компьютерами одновременно уже практически невозможно.

Обратитесь к rsync

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

Мы используем rsync в Университете Висконсин-Мэдисон для синхронизации наших машин с хранящимися на нашем же сервере образами инсталляций. Например, нам нужно обновить файлы конфигурации нашего парка Linux-машин — мы просто обновляем главный образ, и при очередном запуске программа rsync найдет отличающиеся от хранящихся на сервере файлы и должным образом скорректирует их. Так, мы используем rsync для синхронизации всех файлов на жестком диске рабочей станции в учебной лаборатории, за исключением директорий /tmp, /var, некоторых файлов ядра и устройств. Наши машины работают 24 ч в сутки 7 дней в неделю, и rsync поддерживает их в надлежащем состоянии, не отвлекая пользователей перезагрузками.

Однако у rsync имеется пара недостатков. Если большое число компьютеров синхронизируется с одним и тем же сервером, то множество rsync-соединений, инициируемых в одно и то же время, могут его “уронить”. В особенности это следует принять во внимание, если вы синхронизируете время на всех машинах по протоколу NTP. Для того чтобы выйти из положения, можно индивидуально задать каждой машине случайный интервал времени ожидания до момента запуска процесса rsync. Мы, например, запускаем rsync и другие “ночные” процессы между полуночью и 6 часами утра, что позволяет нам поддерживать равномерную загрузку наших серверов в течение суток.

Для установки случайного интервала времени ожидания можно применить следующий простой сценарий на языке perl. Включите его в начало сценария синхронизации, который вы собираетесь запускать. Используйте максимальное значение времени ожидания в качестве аргумента.

Так, randomwait.pl 5, например, означает “ждать не более 5 мин”.

randomwait.pl:

#!/usr/bin/perl

sleep ( rand( $ARGV[0] * 60 ) );

Запустите cfengine

Утилиты ClusterSSH и rsync работают хорошо применительно к большому числу рабочих станций, сконфигурированных идентично или почти идентично. Но если ваши Linux-машины имеют заметно различающиеся конфигурации, то вам может потребоваться более мощное средство администрирования, такое, как cfengine, также распространяемое в открытых исходных кодах. К сожалению, обширные возможности данной программы делают ее сложной в освоении. На изучение cfengine вам придется потратить неделю или две. Но, как сказано в документации cfengine, начав по-настоящему пользоваться этой программой, вы уже не сможете обойтись без нее.

Cfengine включает в себя несколько утилит, выполняющих различные задачи. Cfagent является главным агентом, необходимым для конфигурирования системы — модификации системных файлов, перезапуска сервисов, управления выполнением сценариев оболочки и т. д. Cfservd — это программа, которая “прослушивает” сеть и обеспечивает агентам cfagent совместное использование любых файлов — в частности, конфигурационных. Cfexecd планирует выполнение заданий, а cfrun указывает машине на необходимость незамедлительного запуска утилиты cfagent. Наконец, cfkey создает открытые и секретные ключи, используемые утилитами cfagent и cfservd для опознания друг друга, а cfenvd отслеживает информацию о процессах, сетевых соединениях, свопинге, памяти и других характеристиках данного компьютера.

В конфигурационных файлах cfengine используется язык высокого уровня (см. “Cfengine вблизи...”). Чтобы задать действия, которые должен выполнить cfagent, нужно составить список шагов по конфигурации целевой машины. Приведем пример того, как “заставить” ПО cfengine управлять файлом конфигурации демона ntp — ntp.conf. Сначала сконфигурируем cfagent для управления файлом ntp.conf. Далее укажем, что при изменении файла ntp.conf нужно перезапустить программу-демон ntpd. Теперь при каждом запуске cfagent будет осуществляться проверка соответствия файла ntp.conf оригиналу. Если соответствия нет, то cfagent перезаписывает локальную копию, используя оригинал, и перезапускает программу-демон.

Каждое действие cfengine можно прервать, выполнить позже или повторить несколько раз. Кроме того, одно действие cfengine способно инициировать другое. Данный инструментарий позволяет выполнять задания без взаимодействия с человеком, и через какое-то время ваша Linux-инфраструктура сама достигнет состояния оптимальной конфигурации, которое автор cfengine Марк Бергес именует “конвергенцией”. Если какая-нибудь машина, контролируемая cfengine, отклонится от оптимального состояния, программа примет указанные вами корректирующие меры.

Cfengine может копировать файлы центрального хранилища, как было описано выше, исполнять сценарии оболочки и даже предупреждать администратора о нарушении контрольных сумм MD5. Пакет поставляется вместе со сценариями редактирования файлов — в частности, такими, как CommentLinesMatching, CommentLinesStarting, HashCommentLinesContaining и ReplaceAll. Более того, большинство опций конфигурирования cfengine допускают использование регулярных выражений.

Сценарий редактирования удобен в тех случаях, когда вы хотите изменить только часть файла, а другую часть не трогать. Например, при замене в некотором текстовом файле всех адресов 192.168.42.2 на 192.168.42.1 вы можете использовать следующую команду:ReplaceAll “192\.168\.42\.2“ with “192.168.42.1“

Оператор CommentLinesStarting тоже весьма эффективен в работе, и вы, вероятно, захотите отредактировать им файл inetd.conf, чтобы отключить службы, в которых вы обычно не нуждаетесь, как, например, telnetd.

Проблемы эксплуатации

Одним из ограничений в использовании cfengine является то, что программа должна иметь возможность сообщить вам, выполнила ли она то или иное действие, и это особенно важно при редактировании файлов. В частности, строка конфигурации cfengine

ReplaceAll “server 192\.168.*“ with “server 192.168.42.1“ попросту не будет работать. Проблема заключается в том, что регулярное выражение “server 192\.168.*” совпадает как со строками, которые cfagent пытается найти, так и со строкой замены, в результате cfengine откажется от выполнения данного действия.

Одновременное выполнение идентичных заданий множеством машин может вызвать сбои на серверах. Для решения данной проблемы cfengine снабжена опцией конфигурирования под названием SplayTime (по умолчанию она имеет значение off, но вы наверняка пожелаете заменить его на on). Опция SplayTime заставляет cfengine ждать некоторое время, перед тем как начать работу. Дополнительно к этому программа cfagent по умолчанию во избежание “зацикливания” не может запускаться чаще чем один раз в минуту.

Безопасность тоже является немаловажной характеристикой cfengine. Ни о какой связи не может быть и речи до тех пор, пока не будет установлен надлежащий обмен открытыми ключами, при этом cfagent может работать лишь в режиме “pull”. Клиенты cfengine подчиняются только командам cfrun, и притом после того, как клиент и сервер обменяются корректными ключами шифрования.

Установка начальной конфигурации в cfengine покажется довольно трудной, если вы мало знакомы с этой программой. Могут возникнуть трудности и в определении того, отвечает ли cfengine на ваши команды (см. “Шаг за шагом...”).

Далее, если у вас запущено ПО cfengine, то добавление нового хоста является достаточно легкой задачей. Просто скопируйте открытый ключ для нового хоста в директорию cfengine ppkeys.

Версия 2 пакета cfengine поддерживает управление программным обеспечением, позволяя, например, утилите cfagent устанавливать на ваши Web-серверы свежую версию утилиты манипулирования образами ImageMagick. При добавлении нового Web-сервера cfengine установит на него данный пакет автоматически.

И еще одной немаловажной функциональной возможностью cfengine является мониторинг системного окружения посредством утилиты cfenvd. Он охватывает различные аспекты вашей системы — от числа процессов до количества подключений к службам, например HTTP. Cfenvd отслеживает их средние значения за определенный период, а также отклонения от них. Если стандартное отклонение будет превышено три раза или более, об этом станет известно при ближайшем запуске cfagent. Например, в случае большого числа нарушений HTTP-соединений с вашим Web-сервером cfagent может отправить вам электронное письмо с предупреждением, оставить запись в системном журнале, прервать работу Web-сервера или приостановить резервное копирование до тех пор, пока не снизится нагрузка.

Не вызывает сомнений факт, что среди свободно распространяемого ПО администрирования Linux-машин cfengine является наиболее совершенным. Нужно только правильно подогнать эту программу под ваше инфраструктурное окружение, и тогда вы в полной мере сможете использовать все ее возможности..





  
14 '2005
СОДЕРЖАНИЕ

бизнес

• Как не провалить ИТ-проект и остаться в рамках бюджета

• Белая Магия ИТ, или как сберечь ваш бюджет от проходимцев

• Мировая индустрия call-центров в цифрах и фактах

• VoIP по-новому

инфраструктура

• Электропитание ЦОДа: анализ проектов

• Средства репликации данных помогают резервировать ихДон Маквитти

• Рынок мобильных и беспроводных систем развивается

• Не дайте радиочастотной идентификации застать себя врасплох

информационные системы

• Мобильная электронная почта: свобода или зависимость?

• Свободно распространяемые утилиты администрирования Linux-систем

• Тестируем ПО управления бизнес-процессами

сети связи

• В чем польза IMS

кабельные системы

• Новый взгляд на зоновые кабельные системы

• Как создать кабельную инфраструктуру для высоконадежного ЦОДа

• «ЦОД в коробке»

• Приоритет — технике безопасности

защита данных

• Бурлящие волны RFID


• Калейдоскоп



 Copyright © 1997-2007 ООО "Сети и Системы Связи". Тел. (495) 234-53-21. Факс (495) 974-7110. вверх