Назад | Перейти на главную страницу

Управление кластером Linux

Мне интересно узнать об инструментах и ​​методах, используемых для управления многими машинами Linux. (То есть развертывание и поддержка обновлений.)

Один из способов, который я придумал для этого, - это написать сценарий Bash, который загружает другой сценарий на серверы и последовательно выполняет сценарий для каждого сервера. Например:

foreach server
{
     connect to server and scp update_script.sh to ~/scripts
     ssh user@server -e "sh ~/scripts/update_script.h"
}

И update_script будет использовать apt-get/aptitude или yumили что-то еще для обновления пакетов на сервере.

Есть ли лучшие способы сделать это?

Попробуйте марионетку

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

Альтернативой, которая больше ориентирована на развертывание образов, является SystemImager.

ClusterSSH это то, что вы ищете. Он обеспечивает способ широковещательной рассылки команд всем узлам кластера. Думайте об этом как BashReduce без уменьшения.

Кто-то уже упомянул Puppet.

В том же духе я могу рекомендовать Cfengine. Кривая обучения может быть немного крутой, но как только вы освоите ее, все будет отлично. Я использую его для управления примерно 50 серверами и не могу поверить, что когда-либо обходился без него.

Пытаться Capistrano. Он работает так же, как и ваш цикл foreach выше, но основан на Ruby, а не на bash. Capistrano используется для операционных задач (а-ля: перевести сервер в режим обслуживания, вывести из режима обслуживания)

+1 за марионетку. Это хорошо подходит для идемпотентных операций, которые оставляют систему в известном состоянии.

Проверьте Func для запуска "вещей" сразу на нескольких серверах. Google по запросу "func redhat"

Также, если вам нравится марионетка, вы должны проверить Chef opscode dot com. Он решает несколько проблем с марионетками, а файлы конфигурации написаны на ruby ​​вместо DSL. также ohai является более информативной версией facter. Bcfg2 также является еще одним инструментом управления конфигурацией, написанным на python. Это круто для высокой безопасности или аудита, потому что каждый отдельный пакет может быть учтен, поэтому, если что-то добавляется вне bcfg2, он отмечает предупреждение. Его обратная сторона - сами файлы конфигурации написаны в XML.

У меня была куча ссылок, но я думаю, новые пользователи не могут размещать гиперссылки.

Если вы хотите иметь возможность запускать команды параллельно в кластере систем Linux, может быть интересно одно из следующего:

В качестве общего способа настройки большой сети систем вы, вероятно, захотите использовать уже упомянутые инструменты, такие как cfengine и puppet.

Я мало что знаю о развертывании скриптов, даже если ваша идея мне не кажется плохой. Однако, если вы хотите контролировать свои Linux-машины в процессе управления ими, я настоятельно рекомендую Nagios для этой задачи.

Nagios немного сложно настроить (как и любое программное обеспечение Linux, заметьте), если вы хотите, чтобы он обрабатывал больше, чем обычные задачи по умолчанию, но у вас есть обширная документация на их интернет сайт: nagios.sourceforge.net/docs/3_0/toc.html

Конечно, бесплатно;)

Насколько большая группа «много»? Как уже упоминалось, Webmin хорош, если он делает то, что вы хотите - вы можете запускать произвольные команды и выполнять некоторые общие задачи администратора (например, синхронизацию локальных пользователей) с помощью https. Таким образом, у вас меньше накладных расходов, чем у метода ssh. Кластерные инструменты Webmin подходят для «десятков» машин; Я никогда не пробовал это в больших группах. Также есть cfengine, о котором упоминалось - его можно использовать для небольших и очень больших групп машин (например, тысячи), потому что он может выполнять многоуровневое управление по мере необходимости (один мастер, затем несколько субмастеров и т. Д.). В настоящее время я использую это для управления сетью, состоящей из примерно 3500 Unix-машин разных типов. Как сказано на другом плакате, сначала сложно учиться, но работает очень хорошо.

Если ваши системы являются домашними или, по крайней мере, довольно однородными группами, и у вас их не так много (например, меньше нескольких сотен), есть несколько хороших наборов инструментов для управления кластером. В проекте Oscar уже собраны некоторые инструменты администрирования для использования в управлении кластером: http://svn.oscar.openclustergroup.org/trac/oscar, и есть другие подобные проекты, названия которых ускользают от меня (я, вероятно, вспомню, как скоро как я пишу).

Проще говоря, в Linux Journal обсуждается несколько параллельных инструментов ssh: http://www.linux.com/archive/feature/151340. Однако, как и другие инструменты кластера на основе ssh, вы все равно начнете сталкиваться с проблемами, когда попытаетесь открыть слишком много одновременных подключений ssh. В зависимости от вашего оборудования, по моему опыту, вы, вероятно, захотите сохранить параллелизм ниже 20-30 одновременных ssh-ссылок.

По сути, для этого существует множество готовых решений, и столько же отечественных решений. Посмотрите на freshmeat.net и в Google, и вы найдете несколько. Или сверните свой собственный; это не особенно сложная задача, которую можно решить, если вы просто делаете 10-20 машин ... :)

Я использую cfengine для администрирования ~ 150 машин Linux. Я должен входить в систему на любой машине реже одного раза в неделю, а cfengine сделает все остальное. Добавление пользователей, их удаление, установка пакетов и т. Д.