Построение образов машин в облачных сервисах

Двумя косвенными преимуществами облачных вычислений являются:

± переход на облачную инфраструктуру требует и, можно сказать, в принудительном порядке устанавливает дисциплину в планировании развертываний;

± облачные вычисления также принудительным образом требуют дисциплину в устранении последствий катастрофических сбоев системы.

Благодаря тому способу, с помощью которого виртуализованные серверы запускаются с образов машин, вашим первым шагом при подготовке к переходу на облачную модель обработки данных является создание повторяемого процесса развертывания, который управляет всеми вопросами, которые могут встать перед вами в процессе запуска системы. Чтобы гарантировать успешный запуск, вам необходимо выполнить некоторое предварительное планирование развертывания.

Образ машины (в случае использования сервисов Amazon образ машины называется Amazon Machine Image, AMI) представляет собой так называемую "сырую" (raw) копию вашей операционной системы и основного программного обеспечения, предназначенную для работы в конкретном окружении на конкретной платформе. Когда вы запускаете виртуальный сервер, он копирует вашу рабочую среду с образа машины и загружает ее. Если ваш образ машины содержит ваше установленное приложение, то развертывание представляет собой не что иное, как процедуру запуска нового виртуального экземпляра.

Безопасность данных образа машины Amazon

Когда вы создаете образ машины Amazon, он зашифровывается и сохраняется в комплекте Amazon S3. Для последующей расшифровки вашего AMI может использоваться один из следующих двух ключей:

± ваш ключ Amazon;

± ключ, держателем которого является Amazon.

Доступ к вашему AMI можно получить только с помощью ваших учетных данных пользователя. Amazon требуется способность расшифровки AMI с тем, чтобы запустить виртуальный экземпляр с образа машины.

НЕ ХРАНИТЕ В СОСТАВЕ AMI

НИКАКОЙ КОНФИДЕНЦИАЛЬНОЙ ИНФОРМАЦИИ

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

Представьте себе такую ситуацию: одна компания, пользующаяся сервисами Amazon, подает в суд на другую компанию, которая тоже является клиентом Amazon. Суд может затребовать предоставления данных клиента Amazon для изучения. К сожалению, не-

редко суды выходят за рамки благоразумия и здравого смысла, требуя от таких компаний, как Amazon, предоставления данных всех клиентов. Если вы хотите, чтобы ваши данные никогда не были раскрыты в процессе судебного разбирательства между двумя сторонними компаниями, ни одна из которых никак не связана с вами, никогда не храните свою информацию в Amazon AMI.

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

Что входит в состав образа машины?

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

1.      Создание компонентной модели, которая идентифицирует, какие компоненты и версии необходимы для работы сервиса, который будет поддерживать новый образ машины.

2.      Выделение из компонентной модели данных о статусе. Эти данные должны храниться за пределами вашего образа машины.

3.      Идентификация операционной системы, которую вы собираетесь развертывать.

4.      Поиск существующего, опубликованного в открытом доступе и заслуживающего доверия образа машины для выбранной операционной системы.

5.      Усиление защищенности вашей системы с помощью инструмента наподобие Bastille.

6.      Установка всех компонентов вашей компонентной модели.

7.      Проверка работоспособности виртуального экземпляра с использованием образа машины.

8.      Построение и сохранение образа машины.

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

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

Так как подразумевается, что данные о статусе находятся на устройстве блочного хранения данных, этот образ машины полезен для запуска любых баз данных MySQL, а не только конкретного их набора.

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

Если вы осуществляете развертывание приложения .NET, вы, вероятнее всего, предпочтете Windows-образы Amazon. С другой стороны, для приложения PHP лучше подойдет среда Linux. В любом случае я рекомендую начать с наиболее надежных базовых AMI, готовых к употреблению, рассчитанных на выбранную вами операционную систему, и строить свои собственные образы, модернизируя эти предварительно собранные AMI. Более подробное обсуждение технических деталей создания AMI приводилось в главе 2.

Рис. 4.4. Программное обеспечение, необходимое для поддержания работы сервера базы данных MySQL

ВНИМАНИЕ!

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

Усиление безопасности операционной системы направлено на минимизацию векторов атаки на ваш сервер.

Помимо прочего, усиление защищенности операционной системы включает следующие действия:

± удаление ненужных сервисов;

± удаление ненужных учетных записей;

± запуск всех сервисов в рамках учетной записи, выполняющей определенную роль и отличной от root (по возможности);

± запуск всех сервисов в "тюрьме строгого режима" (restricted jail)1 всегда, когда это только возможно;

± верификацию корректности полномочий для необходимых системных сервисов. Наилучший способ укрепления безопасности системы Linux заключается в ис-

пользовании надежного и хорошо апробированного средства повышения безопас-

ности, например Bastille. Более детально защита и укрепление безопасности в облачных средах будут обсуждаться в главе 5.

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

При установке сервисов, специфичных для конкретного сервера, вам может понадобиться изменить свой подход к развертыванию вследствие того, что данные о статусе должны храниться за пределами образа машины. Для сервера MySQL вы, вероятно, будете хранить данные о статусе на устройстве блочного хранения данных, и монтировать его при запуске системы. Web-сервер, с другой стороны, может хранить данные о статуе мультимедийных ресурсов в облачном хранилище, таком как Amazon S3, и извлекать их оттуда при запуске экземпляра для работы с ними во время исполнения.

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

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

1.      Построить временный образ на основе вашего разрабатываемого экземпляра.

2.      Запустить новый экземпляр на основе временного образа.

3.      Убедиться в том, что он функционирует так, как и было задумано.

1 "Тюрьма" (jail) представляет собой набор ограничений на ресурсы, который налагает на программы ядро операционной системы. Это могут быть ограничения по полосе ввода/вывода, ограничения сетевого доступа и ограниченное пространство имен файловой системы. "Тюрьмы" обычно используются в виртуальном хостинге. Подробнее см. http://en.wikipedia.org/wiki/Sandbox_(computer_security), http://tinyurl.com/3yb387g. — Прим. перев.

4.      Устранить любые проблемы при их возникновении.

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

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

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100