У нас есть приложение, работающее на нескольких (5 или около того, и они будут расти). Аппаратное обеспечение всех машин идентично, и в идеале программное обеспечение должно быть таким же. До сих пор я управлял ими вручную и больше не хочу (статические IP-адреса, отключение всех необходимых служб, установка необходимых пакетов ...). Может ли кто-нибудь сбалансировать плюсы и минусы следующих вариантов или предложить что-то более умное?
1: Индивидуально установите centos на все ящики и управляйте конфигурациями с помощью chef / cfengine / puppet. Это было бы хорошо, так как мне нужен был предлог, чтобы научиться использовать одно из приложений, но я не знаю, действительно ли это лучшее решение.
2: Сделайте одну коробку идеальной и изобразите ее. Обслуживайте изображение через PXE, и всякий раз, когда я хочу внести изменения, я могу просто перезагрузить ящики с нового образа. Как специалисты по кластеру обычно справляются с такими вещами, как наличие MAC-адресов в файлах / etc / sysconfig / network-scripts / ifcfg *? Мы также используем infiniband, и он также отказывается запускаться, если hwaddr неверен. Могут ли они быть правильно сгенерированы при загрузке?
Я склоняюсь к решению PXE, но думаю, что мониторинг с помощью munin или nagios будет немного сложнее с этим. У кого-нибудь есть опыт работы с такого рода проблемами?
Все серверы имеют твердотельные накопители, они быстрые и мощные.
Спасибо, Мэтт.
Ваш кластер больше похож на кластер HPC, чем на OLTP, как мой, но я думаю, что установка, которую я использую, подойдет и вам. Я называю это "mpdehaan trifecta", потому что это умение человека, который написал или управляет тремя задействованными инструментами.
1.) Сапожник для подготовки базовой сборки. Cobbler - это проект, целью которого является создание пересечения ваших систем kickstart, pxe, yum-repo, dhcp, dns и т. Д. Это, безусловно, самый простой способ настроить и запустить кикстарт, и при необходимости вы можете использовать другие функции.
2.) Кукольный для управления конфигурацией. В идеале хосты, построенные вашим сапожником, представляют собой очень простые конфигурации, которые знают просто достаточно, чтобы позвонить домой на ваш марионеточный сервер при запуске. Затем Puppet применит ваши настройки конфигурации и будет поддерживать их согласованность в вашей среде на неограниченный срок.
3.) Func для специальных команд на нескольких машинах параллельно. Например, «разверните новую проверку кода svn и перезапустите apache». Достаточно просто использовать func для вызова одной и той же команды bash на группе серверов, как и cluster-ssh. Если вы действительно хотите вникнуть в это, вы можете написать для него свои собственные модули с помощью очень простого Python.
У всех трех инструментов есть хорошие вики-сайты и активные каналы IRC для помощи на freenode.
В некотором смысле, у вас есть два вопроса ...
Я разделил свой ответ ниже, рассматривая эти две вещи отдельно, но они очень тесно связаны. Здесь я обращаюсь к технологическим решениям, а не к любым передовым практикам, которые связаны с ними, например к управлению изменениями.
Если это не касается объема вашего вопроса, пожалуйста, поясните, и я буду рад уточнить. Это необходимая основа, которая имеет решающее значение для отлаженной технологической инфраструктуры.
Мне не нравятся изображения в мире UNIX; это скорее подход в стиле Windows. Даже некоторые люди, занимающиеся Windows, похоже, переориентируют сейчас сценарии для стандартных сборок.
Спутник, кажется, становится все более популярным в мире RHEL. Spacewalk - это аналог с открытым исходным кодом. Вам определенно нужно полностью принять подход RHEL, чтобы использовать это. Это служит как для построения сервера, так и для управления конфигурацией.
В идеале вам нужно установить локальные зеркала и репозитории на файловом сервере для всего необходимого программного обеспечения.
Во-первых, воспользуйтесь преимуществами автоматизации сборки вашего дистрибутива, например Kickstart в RHEL / CentOS. Kickstart будет базовым вариантом с вариациями в зависимости от ваших потребностей. Сборки Kickstart могут быть инициированы с сервера PXE.
Для более сложной части сборки и всего, что не подходит для файла Kickstart, вы можете написать свои собственные сценарии. Однако вы можете обнаружить, что puppet или cfengine лучше подходят для вас, чем пользовательские скрипты. Я считаю, что пользовательские сценарии наиболее гибкие и не ограничиваются каким-либо одним подходом.
Если вы решите написать свои собственные сценарии, я рекомендую основной сценарий для универсальной настройки. Это будет конфигурация безопасности, усиление защиты и все, что применимо ко всем сборкам. Затем последний сценарий для завершения роли сервера. Например, веб-сервер или сервер базы данных.
То, что вы описываете, также относится к поддержанию конфигураций. Стандарты сборки, обновления программного обеспечения и другие вещи связаны со сборками, но во многих отношениях отделены друг от друга.
Если вы решите полагаться на системные пакеты, а не на создание собственных сборок на основе исходного кода для ваших наиболее важных серверных ролей, многие из них можно поддерживать с помощью собственных системных утилит. Это может быть простой сценарий для запуска for
цикл против вашего списка серверов и запустите yum -y update package
.
Для управления конфигурацией здесь находятся puppet, cfengine и другие управление конфигурацией утилиты вступают в игру. Это очень полезные утилиты, обеспечивающие необходимую основу без написания собственных сценариев с нуля.
Когда вы обновляете стандарты конфигурации для своих серверов, важно включить их в стандартные сборки серверов.
Если вы пойдете по маршруту pxe, обязательно посмотрите на
http://etherboot.org/wiki/index.php
Gpxe даст вам больше гибкости с целями загрузки. Достаточно легко загрузить aoe blade, и нет ничего лучше, чем загрузка ядра с удаленного http-сервера !!!!!!!!!! :-).
Какое время работы сервера вам нужно?
Невозможно создать идеальный образ, так как вам всегда придется применять исправления безопасности и обновления программного обеспечения. Если они выходят в Интернет, нельзя просто игнорировать исправление.
На стороне pxe у вас есть несколько вариантов, в зависимости от файлового ввода-вывода вашего кластера. Либо просто загрузите ядро и смонтируйте диск удаленно через aoe или iscsi.
Вы также можете делать очень умные вещи с копированием изображений для записи. Он отлично подходит для обновлений и отката любых изменений, которые могут быть проблематичными.
Я также добился успеха, используя nfs root, используя кластерное решение nfs. Вы можете указать разные файлы для обслуживания в зависимости от адресов их клиентов.
Опять же, вы должны проверить, нравится ли вашему приложению (-ям) работать с nfs. Он не подходит для любой рабочей нагрузки.
кластерный сервер nfs может содержать 192.168.0.1:/etc/hostname 192.168.0.2:/etc/hostname
Таким образом, каждый клиент ссылается на один и тот же файл, но получает файл, соответствующий клиенту. Это довольно впечатляюще, но непросто!
Все это сократит время развертывания, если вы централизуете файловую систему в сетевом хранилище. Создание образа операционной системы на удаленный диск по сети требует времени !!!!
Если вы используете какое-либо из этих решений, убедитесь, что у вас есть хорошо спроектированный и отказоустойчивый сетевой уровень, а также что ваш сервер nfs / SAN хорошо спроектирован и безопасен!
Потеря соединения с вашим NFS / SAN плохо скажется на работоспособности сервера. :-(
Довольно легко создать несколько скриптов для tftp / pxe для управления процессом загрузки.
Если бы я знал больше, что вы на самом деле пытаетесь объединить, я, возможно, придумал бы решение, которое больше подходит для вас.
Недавно я завершил большой проект по развертыванию централизованной системы управления сборкой / инициализацией и конфигурацией за $ WORK. Мы работаем с CentOS.
Мой дизайн, который мне очень нравится, дает нам процесс сборки практически в один щелчок (ну, одну страницу веб-интерфейса), используя несколько пользовательских сценариев PHP, чтобы связать все вместе с помощью простого, но эффективного веб-интерфейса.
Общая теория:
Я согласен с тем, что образы - это не способ делать что-то в Unix ... они действительно больше подходят для мира Windows, где сценарии / автоматическая установка и настройка не так просты.
Вы можете заменить Puppet любой другой системой управления конфигурацией, которая отвечает вашим требованиям, но мне нравится декларативный характер Puppet и его концепция конвергенции.
Эта система дает ряд преимуществ: