Самая популярная услуга облаков Amazon — это конечно же возможность запуска виртуальных серверов (классическая модель IaaS). Соответствующий сервис Amazon называется Elastic Compute Cloud (EC2). Обратите внимание на слово elastic: оно применяется ко многим услугам Amazon, и “эластичность” в этой компании считается, видимо, одним из ключевых характеристик облачной системы. Похожие сервисы давно предоставляются абсолютным большинством хостеров в формате так называемых Virtual Private Server (VPS), и с точки зрения конечного пользователя отличие облачных (эластичных) машин от VPS состоит прежде всего в возможности динамически регулировать мощность виртуального сервера и быстро запускать множество серверных копий. Это позволяет быстро и незаметно для пользователей адаптировать систему к меняющимся нагрузкам (причём процессы адаптации можно автоматизировать) и значительно экономить на системе в целом. Существенное отличие облачных сервисов от VPS проявляется и в бизнес-модели: оплачивать надо не фиксированную ежемесячную сумму, а только реально использованные услуги. Так, если сервер в течение месяца работал только один час, то и оплачивать потребуется лишь 60 минут.
Формируем виртуальный сервер Amazon
Создание виртуального сервера (так называемого Instance) выполняется типовым образом из консоли AWS. В разделе EC2 нажимаем единственную кнопку Launch Instance (рис. 1) и далее выбираем подходящую ОС из обширного списка десятков исходно подготовленных дистрибутивов Amazon Machine Image (AMI).
Почти половину из этого списка занимают версии Windows Server 2008/2012, остальное приходится на различные дистрибутивы Linux. Немалое количество ОС доступно и в бесплатном формате — они помечены надписью Free tier eligible. Правда, подобные микроэкземпляры в практических проектах использовать почти невозможно в силу ограниченности предоставляемых ресурсов, однако для ознакомления, разработки и создания тестовых прототипов они вполне удовлетворительны.
Выбираем подходящую версию AMI, при необходимости задаём разрядность 32/64 и нажимаем Select. Для Microsoft Windows Server 2008 R2 с СУБД SQL Server Express и веб-сервером IIS будет предоставлен условный однопроцессорный сервер с примерной вычислительной мощностью Opteron/Xeon 2007 1 ГГц (это так называемая ECU — типовая вычислительная единица EC2), ОЗУ 612 Мб и низкой сетевой производительностью, дабы амазоновский трафик не расходовался зря (рис. 2). Важный и принципиальный момент — это предоставление хранилища данных в формате Elastic Block Store (EBS), его надо рассмотреть особо.
Храним данные на эластичных дисках
Существенное отличие облачных экземпляров ОС от классических виртуальных серверов VPS — это фактическое отсутствие долговременного хранилища данных. Если при покупке VPS-сервиса пользователь сразу получает, например, 10 Гб дискового пространства и всё, что туда будет записано, сохранится, то данные, которые размещены в облачной машине EC2 и на первый взгляд выглядят как расположенные на стабильном жёстком диске, на самом деле размещаются в её локальном кэше (так называемом эфемерном хранилище, ephemeral storage). В случае любого технического сбоя, профилактических перегрузок серверов Amazon или даже после ручного останова виртуального сервера все данные локального кэша будут стёрты, включая все настройки установленных пользователем программ (рис. 3). Точнее, прежний рабочий образ сервера будет безвозвратно удалён, а вместо него автоматически сформируется новый.
В первые годы работы Amazon эта специфика реализации модели IaaS нередко приводила к конфликтам, и в итоге Amazon запустил услугу эластичного хранилища EBS, содержимое которого не удаляется при остановке сервера. Одно время EBS-данные ликвидировались после полного удаления сервера, однако и этот режим вызывал недовольство, и сегодня по умолчанию EBS-содержимое остаётся нетронутым. Более того, можно подключать к работающим серверам новые EBS-диски, а также динамически менять их размер. Самое главное: все прикладные настройки, документы и базы данных необходимо хранить не на системном диске, а на виртуальном EBS-устройстве.
С учётом специфики работы эластичных дисков при необходимости выполним дополнительные настройки (рис. 4): например, увеличим дисковое пространство EBS, по умолчанию предоставляемое в объёме 30 Гб. Возможно, лучше отключить режим ликвидации этого хранилища при удалении виртуальной машины (рис. 5).
Разбираемся с паролями
В финальном окне создания виртуальной машины по нажатии на кнопку Launch сервис EC2 потребует загрузки файла приватного ключа — он требуется, чтобы обеспечить защищённое взаимодействие с облаком AWS, хранящим открытый ключ. Приватный ключ понадобится также при задании пароля доступа к Windows или организации SSH-взаимодействия с Linux. Если такой ключ ранее не был создан, в верхнем выпадающем списке надо выбрать пункт Create a new pair key, в поле ввода указать подходящее имя ключа и нажать кнопку Download Key Pair. Ключ сгенерируется за несколько секунд, после чего будет предложено записать его на локальный диск в файл с расширением .pem. Этот файл в дальнейшем надо аккуратно хранить. И наконец после нажатия на кнопку Launch Instance виртуальная машина EC2 создастся и запустится — этот процесс займёт считанные секунды.
Запускаем сервер EC2
Рассмотрим рабочее подключение к виртуальной машине на примере взаимодействия с Windows Server — это самый простой способ для большинства потенциальных пользователей Amazon. Список всех виртуальных серверов доступен из консоли EC2 через пункт Instances. Выберем нужную машину и нажмём кнопку Connect над списком для формирования первичного подключения. Будет предложено скачать RDP-клиент для удалённого подсоединения к виртуальному серверу (рис. 6). Нажатие на кнопку Get Password сформирует пароль для RDP-подключения (логин по умолчанию Administrator). Процесс этот небыстрый и может занять десятки минут. Кроме того, сама возможность генерации пароля будет доступна скорее всего через довольно длительный временной промежуток (10—15 минут) после запуска виртуальной машины. Пароль и IP-адрес (Public IP) сервера необходимо записать для дальнейших настроек.
Далее экземпляр сервера надо запустить, если он ещё не работает. Для этого в локальном меню сервера выбирается пункт Start. Придётся подождать, когда ОС запустится, это займёт относительно короткое время. Когда сервер будет функционировать в нормальном режиме, в пункте Instance State загорится зелёная лампочка running. Кроме того, необходимо, чтобы в столбце Status Check появилась запись “2/2 checks passed” с такой же зелёной подсветкой (рис. 7).
Не исключено, что виртуальный сервер при старте может “зависнуть” — в таком случае длительное время будет выводиться сообщение “1/2 checks passed” с жёлтой лампочкой, и доступ к паролю при этом также будет закрыт (рис. 8). У меня подобный “зависший” запуск однажды тянулся сутки, и так и не дождавшись успешного завершения процесса, я просто перезапустил сервер. По отзывам, в таких случаях служба поддержки Amazon реагирует не слишком оперативно, однако эта скорость зависит от выбранного тарифного плана.
Процесс запуска можно контролировать просмотром системного лога, получаемого выбором пункта Get System Log локального меню виртуального экземпляра. Сервер будет готов к эксплуатации, когда в этом логе появится сообщение “Windows is Ready to use”.
В главной консоли EC2 выводится довольно подробная разноплановая статистика по текущей загрузке серверов (рис. 9). Отмечу, что такая полезная возможность предоставляется далеко не всеми VPS-провайдерами. Кроме того, доступна бета-версия утилиты AWS Diagnostics for Microsoft Windows Server, которая позволяет вести детальный анализ проблемных настроек и умеет, например, выявлять конфликты между межсетевым экраном Windows и группами безопасности Amazon.
Удалённо подключаемся к серверу
Подключение к серверу с помощью удалённого рабочего стола выполняется типовым способом: достаточно ввести IP-адрес сервера, стандартный логин Administrator и пароль. Amazon также предлагает загрузить уже готовую настройку для запуска клиента удалённого стола. Надо отметить, что в различных версиях Windows могут возникать проблемы с доступом к экземпляру Amazon по протоколу RDP, даже если к виртуальным серверам других провайдеров RDP-доступ выполняется успешно. В таких случаях можно порекомендовать независимые RDP-клиенты — например, 2X Client. Как видно из картинки (рис. 10), подключение к Windows Server 2008 прошло успешно, запущен также SQL Server и веб-сервер. Теперь в браузере можно набрать IP-адрес виртуального сервера (ранее сохранённый Public IP), и он покажет стандартную пригласительную страничку IIS 7.
После настройки машины и сохранения данных на EBS-диске можно сделать собственный образ AMI и зарегистрировать его в Amazon, что позволит в дальнейшем быстро “поднимать” множество однотипных серверов за считанные минуты.
Задаём политики безопасности
В ряде случаев для доступа к серверу Amazon может дополнительно потребоваться настройка групп безопасности, определяющих, в частности, способы доступа к портам сервера по различным протоколам. Эта настройка выполняется выбором в локальном меню сервера пункта Change Security Groups и заданием правил доступа для входящих (Inbound) и исходящих (Outbound) запросов (рис. 11). Для начального тестирования можно указать возможность обращения ко всем портам без ограничений, но в дальнейшем эти правила надо будет тщательно отрегулировать. Назначение созданных или модифицированных групп безопасности для сервера выполняется через пункт Security Groups главного меню консоли EC2.
Настраиваем эластичный IP
После каждого останова или перезапуска сервера его IP-адрес будет меняться, что существенно усложняет организацию к нему постоянного доступа. Так, переброс DNS-имени на новый IP-адрес занимает подчас сутки, за это время можно растерять множество пользователей и сильно упасть в рейтинге поисковых машин, а то и вовсе пропасть из них. Однако привычную концепцию статического IP-адреса Amazon не поддерживает, предлагая вместо него услугу Elastic IPs. Она подразумевает предоставление статического IP-адреса, который привязывается не к серверу, а к пользователю (логину). Такой эластичный IP можно перебросить на другой, заранее подготовленный виртуальный экземпляр (или даже сетевой пул) за несколько минут, практически незаметно для клиентов. Подобная, несколько странная на первый взгляд для пользователей VPS-серверов услуга как раз и реализует облачную elastic-концепцию. Понадобилось перевести свой проект на новые ресурсы? Готовим новый сервер и бесшовно переводим на него пользователей.
Получение эластичного IP выполняется выбором пункта Elastic IPs консоли EC2 и нажатием кнопки Allocate New Address. Привязка созданного эластичного IP к экземпляру сервера осуществляется с помощью кнопки Associate Address и выбором нужного сервера (рис. 12). В дальнейшем переброс эластичного IP с машины на машину происходит с помощью кнопок Associate Address и Dissociate Address.
Разбираемся с ценами
Плата за использование серверов EC2 взимается за каждый час их работы. При этом сервер считается работающим, даже если он остановлен. Чтобы деньги за фактический простой не списывались, сервер надо удалять (команда Terminate локального меню), а если требуется часто использовать собственную оригинальную конфигурацию, следует сформировать AIM-образ для быстрого развёртывания серверов.
Первый год в рамках бесплатного тарифного варианта пользователю EC2 ежемесячно предоставляется 750 часов работы серверных экземпляров Linux и Windows, 750 часов балансировщика нагрузки ELB, 30 Гб пространства EBS, 1 Гб под хранение архивного образа диска (Snapshot) для возможного создания AIM и 15 Гб суммарного исходящего трафика. Однако в дальнейшем самый дешёвый платный вариант с хостингом на Windows (1 ECU, 1,7 Гб ОЗУ и диск 160 Гб), включая SQL Server, обойдётся в весьма приличную сумму — 0,625 долл. в час или 460 долл. в месяц. За такие деньги можно арендовать физический dedicate-сервер со схожими характеристиками, размещённый в ЦОДе провайдера, с удобством эксплуатации которого, конечно, виртуальные серверы пока не сравнятся. Следует учитывать и особенности эксплуатации Windows: например, если отказаться от SQL Server, то цена снизится до 0,091 долл. в час (вероятно, дело в стоимости лицензии на СУБД). А вот виртуальный сервер на базе Red Hat Linux с такими же техническими характеристиками стоит в пять раз дешевле.
Кроме того, можно существенно экономить, оплачивая облачный хостинг на длительный срок. Соответствующий режим эксплуатации называется Reserved Instances. Например, в случае с Windows Server резервация потребует всего 0,033 долл. в час, но только если заплатить всю сумму на годы вперёд.