Журнал LinuxFormat - перейти на главную

LXF151:По рецептам доктора Брауна

Материал из Linuxformat
Перейти к: навигация, поиск

Эзотерическое системное администрирование из причудливых заворотов кишок серверной

Д-р Крис Браун: Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.

Содержание

Месяц годовщин

Август выдался обильным на годовщины. Например, первый IBM PC был анонсирован 12 августа 1981 г. (30 лет назад), а днем рождения Linux обычно считается 25 августа 1991 г., когда Линус Торвальдс разместил ныне знаменитое сообщение в новостную группу comp.os.minix: «Я разрабатываю (бесплатную) ОС (это просто хобби, она не будет большой и профессиональной, как GNU)...». Провидец из него вышел неважный («не будет большой...»), но его навыки программиста и качества лидера оказались гораздо важнее! Так или иначе, 20-летняя годовщина не хуже любой другой даты подходит для того, чтобы взяться за его книгу «Просто для забавы [Just For Fun]», написанную совместно с Дэвидом Даймондом [David Diamond]. Она была опубликована в 2001 году, и в ней только первая половина истории, но мне очень нравится в ней личный и эмоциональный рассказ Торвальдса, с которым вы понимаете, что в интересе к подобным вещам нет ничего ненормального.

Кодовые слова

Книга Глина Муди [Glyn Moody] «Код бунтаря [Rebel Code]» тоже вышла в 2001 году, но ей недостает отпечатка личности, отличающего книгу Торвальдса. Более обширную и свежую (2008 г.) перспективу можно найти в книге Питера Сэйласа [Peter Salus] «Демон, гну и пингвин [The Daemon, the Gnu and the Penguin]». Сэйлас, которого обычно называют «историком UNIX», пожалуй, лучше всего известен по своей ранней книге «Четверть века UNIX», опубликованной в 1994 году. По-моему, сейчас есть все шансы начать работу над книгой «Четверть века Linux», которая вышла бы в 2016 году. Есть добровольцы? А если вы предпочли бы более краткую дозу истории, на сайте http://linuxfoundation.org/20th есть интересная инфографика и красивый анимированный ролик, которые помогут вам сказать: «С днем рождения!»

Оркестр Ubuntu

Узнайте больше

Документация Cobbler – на сайте https://fedorahosted.org/cobbler. Также есть довольно подробная man-страница и (довольно старая) статья в Red Hat Magazine (http://magazine.redhat.com/2007/08/10/). Сейчас главным источником информации об Orchestra, похоже, является Дастин Керкленд; чтобы посмотреть его интервью на саммите разработчиков Ubuntu в Будапеште, наберите в Google «UDS-O Dustin Kirkland Orchestra».

Ощутили диссонанс при развертывании сервера? Позвольте Orchestra вернуть гармонию в вашу жизнь.

Пусть вам нужно установить 50 новых серверов Linux. Вы вряд ли захотите вставлять установочный диск в каждый, снова и снова проходя через этапы установщика. Вы бы предпочли такой сценарий: (1) достать серверы из коробок, (2) подключить их к сети, (3) включить их и (4) уйти, зная, что придя позже, вы обнаружите 50 готовых систем.

Но если серверы поддерживают PXE-загрузку, это действительно возможно, хотя потребуется масса настроек – вероятно, DHCP-сервера, TFTP-сервера для размещения загрузочного образа и зеркала репозиториев (или прокси) для доступа к пакетам.

В прошлом мне приходилось развертывать подобное (как, разумеется, и бессчетному количеству других сисадминов), и я даже подготовил специальную лабораторную работу для курса Ubuntu Server, но так и не отважился провести ее в классе, потому что, честно говоря, это тянет скорее на небольшой исследовательский проект, чем на лабораторную работу.

Приятное виртуальное маневрирование

Чтобы облегчить свои мучения, воспользуйтесь проектом Cobbler от сообщества Fedora (https://fedorahosted.org/cobbler) – он автоматизирует установку сервера и поддерживает PXE-загрузки на новые системные блоки без установленной ОС и установку на виртуальные машины. Cobbler также можно установить в Ubuntu и использовать для развертывания систем Debian, Ubuntu, CentOS, Fedora, Red Hat и SUSE. Серверная команда Дастина Керкленда [Dustin Kirkland] в Canonical зашла еще дальше с проектом Orchestra, релиз которого запланирован на Ubuntu 11.10. Orchestra управляет несколькими открытыми программами, включающими:

  • Cobbler (портирован в Ubuntu);
  • squid-deb-proxy (пакет, упрощающий создание прокси для репозиториев Ubuntu);
  • puppetmaster (утилита управления конфигурацией, применяемая для автоматизации развертывания серверов с заданной нагрузкой);
  • cloud-init (механизм запуска скрипта настройки при первой загрузке системы в виртуальной машине).

На разработку Orchestra отчасти повлияло решение переключиться с Eucalyptus на OpenStack в 11.10, в результате которого (опять) понадобилось изменить технологии установки. Мы более подробно расскажем об Orchestra, наверное, в следующем месяце, когда сумеем его опробовать.

Управление облаком с RightScale

Массивы и эластичность

Массивы серверов (возможность, доступная только в платных версиях RightScale) – наборы экземпляров EC2, в которых число систем автоматически изменяется со временем на основе заданного набора оповещений и расширений. Например, массив можно нарастить, если в системах в составе массива нагрузка процессора превышает указанный порог. Увеличение массива можно выполнять на базе очереди, так что число работающих систем зависит от числа заданий во входной очереди.

Ищете ли вы быстрый и дешевый вариант управления облаком или средство корпоративного уровня, вам подойдет RightScale.

RightScale – одно из многих решений, предоставляющих web-интерфейс для создания серверов в облаке Amazon EC2 и управления ими. Так как в web-сервисах Amazon уже есть прекрасная консоль управления, резонно спросить, какие добавочные преимущества есть у RightScale. Ну, во-первых, RightScale может управлять серверами на множестве облаков – например, гибридном публичном/частном облаке. Здесь также есть шаблоны для построения преднастроенных серверов через использование базового образа системы и добавление скриптов, запускаемых на этапах загрузки, работы и выключения системы.

Каждый шаблон запускает сервер определенного типа, устанавливает необходимое ПО и настраивает его. Библиотека шаблонов RightScale огромна – мы насчитали около 150, но примерно половина из них доступна только владельцам платных учетных записей. Большинство шаблонов предназначены для web-сервисов Amazon, но есть несколько и для Rackspace, включая NFS Server Master, PHP FrontEnd и LAMP в одном шаблоне. Также можно создавать собственные шаблоны или изменять готовые.

Наряду с отдельными серверами RightScale также позволяет управлять развертыванием кластеров серверов, совместно выполняющих общую задачу. Например, в сборке может быть четыре сервера – два клиентских узла с балансировкой нагрузки и основной и вторичный серверы баз данных.

Сборки позволяют управлять всем кластером как единым целым, а не каждым сервером отдельно. Например, пресловутым щелчком мыши можно клонировать всю сборку.

Вы можете, скажем, создать копию действующей сборки для использования в качестве вспомогательного сервера для выполнения тестов производительности и еще одну копию для внутреннего использования. RightScale также будет отслеживать стоимость работы всего кластера (т. е. ваши платежи web-сервисам Amazon).

Мониторинг и оповещения

(thumbnail)
Через панель инструментов легко получить доступ ко всем компьютерам AWS. Там также показываются графики мониторинга, предоставляемые RightScale.

В серверных шаблонах RightScale есть демон collectd, который периодически собирает статистику производительности и отправляет ее на сервер ‘Sketchy’ RightScale, который автоматически устанавливается в каждую создаваемую вами систему.

Этот сервер генерирует диаграммы, выводимые на панели управления RightScale. Например, для сервера LAMP можно построить графики количества запросов Apache или запросов к базе данных в секунду, а также более общих параметров загрузки, таких как время простоя центрального процессора или использования памяти. Можно затребовать график статистики за дневной, недельный, месячный и годичный период. Также можно добавить миниатюры этих графиков в раздел Быстрый мониторинг [Quick Monitoring] панели управления, чтобы они отображались всегда.

В шаблоне сервера также задаются оповещения, которые отслеживают различные параметры серверов и выдают предупреждения (например, отправляют электронное письмо) при превышении ими заданного порога. Например, оповещение rs cpu overloaded срабатывает, когда время простоя процессора слишком мало. Другие примеры ситуаций срабатывания оповещений – слишком высокая входящая или исходящая сетевая активность, малый объем свободной оперативной памяти, недостаток свободного места в файле подкачки или на смонтированном диске. У каждого условия срабатывания есть «класс оповещения», который задает выполняемое при этом действие. Например, при срабатывании оповещения класса «предупреждение» каждый день будет отправляться электронное письмо; классу «критическое» соответствует отправка письма каждые 10 минут, а (что более интересно) классу «увеличение» – автоматическое добавление в массив новых серверов.

Попробуйте

Чтобы попробовать RightScale в действии, зайдите на www.rightScale.com и заведите бесплатную однопользовательскую учетную запись. Конечно, чтобы сделать что-то полезное, вам также потребуется учетная запись на AWS (web-сервисы Amazon).

Сама учетная запись опять же бесплатна, но при создании серверов или жестких дисков вы начинаете платить почасовую плату за их использование. А если вы захотите поднять учетную запись RightScale до серьезного коммерческого использования, это будет стоить денег.

Стандартная версия (Standard edition) обойдется в 500 долларов в месяц; затем возможности, уровень поддержки и цены постепенно увеличиваются в версиях «Премиум [Premium]», «Корпоративная [Corporate]» и «Предприятие [Enterprise]».

Подробности ищите по ссылке www.rightScale.com/products/plans-pricing. Если вы хотите развернуть несколько серверов, вы будете платить почасовую плату AWS, но за попытку «проверить все на практике» в течение нескольких дней вы заплатите всего несколько долларов.

Основы виртуализации

Краткая история виртуализации

Концепция виртуализации не нова – первым промышленным компьютером, поддерживавшим полноценную виртуализацию, был мэйнфрейм IBM System/360-67, введенный в эксплуатацию в 1967 году. Производители Unix, такие как Sun и HP, продавали виртуализированные системы в конце девяностых – но только для серверов высокого класса (т. е. очень дорогих). Персональные компьютеры поддерживали виртуальную память (создавая для каждого процесса иллюзию, что адресное пространство принадлежит ему) с процессора 80386, который появился в 1986 году. Именно эта разработка прежде всего и вдохновила Линуса Торвальдса на написание Linux. VMware, крупный игрок на рынке виртуализации ПК, впервые выпустила VMware Workstation в 1999 году. Но, пожалуй, только с 2006 года или около того персональные компьютеры стали достаточно мощными, чтобы виртуализация работала действительно быстро. В частности, примерно тогда Intel и AMD анонсировали расширения архитектуры процессоров x86, которые сделали полную виртуализацию возможной и эффективной.

Виртуализация – пожалуй, самая яркая технология десятилетия. Изучим основы (и перейдем к практике) прямо сейчас.

Начнем с простого определения: виртуализация создает иллюзию работы нескольких отдельных компьютеров (называемых виртуальными машинами или ВМ) на одном физическом компьютере. У каждой из этих ВМ, как кажется, есть собственный процессор, память, диски, сетевые карты, USB-порты и т. д. Их можно включать, загружать систему, завершать ее работу и выключать независимо друг от друга. Новые ВМ можно создавать при необходимости и уничтожать (или останавливать), когда они больше не нужны. На каждую ВМ можно установить операционную систему, и на разных ВМ внутри одного компьютера не обязательно устанавливать одну и ту же: на одной может быть Ubuntu Linux, на другой – Red Hat, на третьей – Windows 7, а на четвертой – Windows XP.

С точки зрения архитектуры, программный слой, сотворяющий это волшебство, можно выполнять либо непосредственно на физических устройствах, либо поверх главной ОС. Эти два варианта иногда называют гипервизорами типа 1 и типа 2 соответственно – классификация Роберта Голдберга [Robert Goldberg] из его докторской диссертации 1973 г. в Гарварде.

В мире Linux, пожалуй, самая известная реализация типа 1 – это Xen, а популярные продукты VMware Workstation и VMware Player относятся к типу 2. Операционные системы на виртуальных машинах называют гостевыми. Идея виртуализации устройств вряд ли захватит вас, пока вы не увидите ее в действии. Для меня этот момент настал, когда я впервые включил ВМ и оказался в ее BIOS. После установки Linux (с обычного установочного диска) и наблюдения за тем, как установщик обнаруживает то, что ему кажется настоящими устройствами, стало ясно, насколько полную иллюзию наличия настоящих устройств создает виртуализация.

Виртуальные устройства могут сильно отличаться от соответствующих физических – например, в них может быть несколько приводов компакт-дисков (виртуализованных в виде ISO-образов файлов в главной ОС), а виртуальный сетевой интерфейс почти наверняка будет не той марки, как тот, что обеспечивает настоящее физическое соединение. Место для виртуальных дисков берется из файловой системы главной ОС. В ней оно будет представлено одним или несколькими большими файлами.

Стоит на минуту сравнить степень изоляции, предоставляемую ВМ, со степенью изоляции процесса внутри ОС. Все процессы в одной ОС до некоторой степени существуют отдельно друг от друга. У каждого свое адресное пространство памяти, и все они работают, воображая, что владеют всем процессором. Но они совместно используют файловую систему, IP-адрес и пространство портов TCP, и если, скажем, один из этих процессов – web-сервер, слушающий порт 80, никакому другому процессору нельзя использовать этот порт. И, конечно, они совместно используют ОС.

Содержите себя

(thumbnail)
Ги­пер­ви­зор ти­па 2 за­пус­ка­ет­ся по­верх глав­ной OС, пре­дос­тав­ляя вир­ту­аль­ные уст­рой­ст­ва, на ко­то­рые мож­но ус­та­нав­ли­вать гос­те­вые ОС.

Виртуальные машины предоставляют довольно высокий уровень самодостаточности. Например, на каждой ВМ своя файловая система, отдельный IP-адрес и отдельное пространство портов TCP (поэтому на разных ВМ можно иметь несколько web-серверов, слушающих порт 80, и они будут прекрасно работать). Каждую ВМ можно запускать и останавливать, не затрагивая остальные. На нее можно добавлять или удалять (виртуальные) устройства, и на ней может быть установлена собственная ОС.

Для пользователей настольных систем Linux (включая меня) виртуализация – удобный способ установить и испробовать последние и лучшие дистрибутивы Linux, не касаясь главной ОС. А для пользователей, которые перешли в Linux, оставив себе в наследство несколько Windows-программ, запускать Windows на ВМ гораздо удобнее, чем в конфигурации с двойной загрузкой.

Обучающая компания Learning Tree International активно использует виртуализацию для учебных занятий. Компьютер, с которым студенты работают на практических занятиях – как правило, ВМ (Red Hat, Windows 7, Solaris) на компьютере с Windows XP.

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

В учебном курсе Canonical «Развертывание Ubuntu Server» за счет виртуализации с KVM/Qemu каждый студент получает три сервера для лабораторных упражнений. На них, например, демонстрируется развертывание прокси и зеркал для репозиториев Ubuntu. Студентам прекрасно известно, что используется виртуализация, так как они должны переключаться между ВМ и даже создавать собственные.

Пожалуй, значение виртуализации лучше всего оценить в серверной. Обычно многие сервера потребляют лишь малую часть своей мощности: типовые цифры – это от 10 % до 20 %, а по недавней оценке одной из компаний, 150 из 400 ее серверов работали только на 3 % своей мощности.

Экономия места в стойке

(thumbnail)
На сайте Turnkey Linux есть примеры преднастроенных виртуальных устройств. Похожие варианты также есть на Bitnami и Jumpbox.
(thumbnail)
Часть моей коллекции образов ВМ на VMware Workstation. Вы также видите окно для изменения аппаратуры ВМ.

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

Два слушателя одного из последних курсов, которые управляли вычислительной структурой крупного британского университета, сообщили о соотношении 25 к 1 – они заменили 100 старых серверов всего четырьмя (предположительно более новыми и мощными) компьютерами. Это неплохо с экологической точки зрения, поскольку выбросы сажи в IT-индустрии примерно равны тому же показателю в авиационной промышленности (около 2 %). И, конечно, виртуализация – сердце того на первый взгляд бесконечного набора быстро предоставляемых и самообслуживающих ресурсов, которые мы называем «облаком».

В Red Hat’s Enterprise Virtualisation for Desktops используется виртуализация серверной комнаты (KVM и Qemu) для размещения виртуальных рабочих столов (по сути, системы Red Hat Linux и Windows). Пользователи сидят за «тонкими клиентами» (видимо, ПК измененного назначения) и получают доступ к рабочим столам через SPICE (http://spicespace.org), современную технологию доступа к удаленному рабочему столу, которая (в отличие от более старых технологий управления удаленным рабочим столом, типа RDP) создает у пользователя реальную видимость пребывания за тем компьютером, где запущен рабочий стол.

Виртуализация дала толчок развитию технологии так называемых виртуальных устройств [virtual appliances] – заранее создаваемых образов ВМ, настроенных на решение конкретных задач. Предположим, вы хотите попробовать Magento для создания электронного магазина. Можно либо установить и настроить его вручную (вместе с Apache, MySQL, PHP, phpMyAdmin и другими необходимыми дополнениями), либо запустить устройство, в котором все это установлено, настроено и готово к работе. На сайте VMware (www.vmware.com/appliances) есть более 1800 таких устройств, включая наборы открытого ПО, такие как SugarCRM, Drupal, Alfresco, Joomla! и многие другие. Их, как и необходимый для их запуска проигрыватель VMware, можно загрузить бесплатно.

  • Bitnami – крупный поставщик образов в библиотеку виртуальных устройств VMware. На его сайте (bitnami.org) находятся почти 30 «стеков приложений» и 11 «инфраструктурных стеков» для установки в ОС Linux в виде образов ВМ или для запуска на облаке EC2 в виде образов Amazon (Amazon Machine Image – AMI).
  • На сайте Turnkey Linux (www.turnkeylinux.org) находится около 45 устройств на основе Ubuntu 10.04 (текущая версия LTS). Каждое из них можно загрузить в виде образа ВМ или в виде ISO-образа, устанавливаемого на «пустую» ВМ (или – да, на чистый компьютер). Можно запускать устройства и прямо на облаке Amazon EC2.
  • На сайте Jumpbox (www.jumpbox.com) также находится около 60 устройств в форматах, пригодных для множества программ виртуализации, включая VMware, Xen, Parallels, Hyper-V от Microsoft и VirtualBox от Sun. Многие устройства также пригодны для развертывания на облаке Amazon EC2. Этот сервис доступен по подписке с фиксированной ежемесячной оплатой, но есть бесплатный тестовый период в 15 дней.

Если вы хотите получить более самостоятельный (и с большим уклоном в Linux) опыт виртуализации, попробуйте установить KVM – полноценное решение для виртуализации в Linux на платформе x86. Ему необходимы расширения процессора для виртуализации (Intel VT или AMD-V – см. врезку), и оно состоит из загружаемого модуля ядра, kvm.ko, и процессорного модуля, kvm-intel.ko или kvm-amd.ko. Для эмуляции остальных устройств, таких как сетевые карты, диски и графические адаптеры, используется KVM в сочетании с Qemu (произносится «ки-мью»). Также понадобится установить libvirt и некоторые пользовательские утилиты управления, такие как virsh (для работы с командной строки) или virt-manager (графическая утилита). Обладатели предыдущих номеров Linux Format могут найти мое подробное руководство по этой теме в LXF125.

А у меня это заработает?

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

$ egrep ‘vmx|svm’ /proc/cpuinfo

Если в списке флагов процессора есть vmx или svm, то у вас есть поддержка виртуализации Intel или AMD соответственно. Но учтите, что даже если процессор ее поддерживает, ее нужно включить в BIOS. (В Ubuntu есть небольшой скрипт kvm-ok, который это проверяет.)

При выборе нового ноутбука проверьте код типа процессора и (для Intel) найдите его в списке на сайте http://ark.intel.com/vtlist.aspx. О наличии аналогичного списка для AMD у нас сведений нет.

Персональные инструменты
купить
подписаться
Яндекс.Метрика