Содержание статьи
Год бесплатного использования облачными сервисами — такое предложение делает Amazon для всех новых пользователей. Предоставляемые ресурсы, конечно, ограничены, но их вполне достаточно, чтобы познакомиться с платформой и, к примеру, поднять свой собственный VPN-сервер.
Проблема всех облачных технологий (т.н. cloud computing) в том, что многие до сих пор не осознают, что это такое и как с ними иметь дело. Модное словечко "облако" у всех на слуху, но и только. В материале "Amazon S3 для обычных смертных" мы уже рассказывали об облачном хранилище данных, которое предоставляет любой необходимый объем для размещения файлов и выдерживает любую нагрузку (даже от огромного наплыва пользователей). S3 – это лишь одна из целого ряда прогрессивных технологий Amazon Web Services (сокращенно AWS). Начиная с ноября, провайдер предлагает познакомиться со своими сервисами поближе, не взимая за это плату (при соблюдении некоторых условий). Это лишь подкрепило наше желание рассказать о них подробнее.
Amazon Web Services
Арсенал облачных сервисов Amazon двольно большой, но наиболее распространены три: Amazon Elastic Compute Cloud (сокращенно EC2), Amazon Elastic Block Store (или EBS), Amazon Simple Storage Service (или S3). Нас сегодня в первую очередь интересует первая технология. По сути, это воплощение понятия cloud computing на практике. С помощью EC2 ты можешь запустить в "облаке" любое количество компьютеров с нужным тебе конфигом и операционной системой. И все это за несколько минут. Каждый такой виртуальный компьютер называется Instance. После запуска (обычно это занимает пару минут) ты сразу получаешь root-доступ по SSH или доступ к рабочему столу через RDP, в зависимости от операционной системы. Забавно, что оплата за такой инстанс осуществляется по часам. Т.е. ты можешь в любой момент остановить виртуальный сервер, и деньги не будет сниматься. Или вообще, включать его только в случае необходимости: стоимость использования в этом случае будет измеряться в центах. Однако, помимо "компьютерного времени", оплачивается еще и трафик, как входящий, так и исходящий.
В зависимости от типа виртуального сервера он будет снабжен соответствующим процессором и количеством оперативной памяти. Однако "дисковый накопитель" в эту конфигурацию не входит. Для виртуализации жесткого диска используется другая технология Amazon - EBS. Ты можешь сказать: "хочу накопитель на 25 Гб" - и она сделает. И сделает сколько угодно еще, если ты попросишь. Такой накопитель называется Volume и подключается к инстансу. Таким образом, в системе появляется жесткий диск. Все, что на него записано, сохраняется независимо от жизни самого инстанса. Последняя технология - S3 - также предназначена для хранения файлов, но совсем в другой плоскости. По сути, это бесконечный контейнер для файлов, которые при желании становятся доступными через веб. Тебе предоставляется ровно столько пространства в хранилище, сколько нужно. Хоть 10 Мб, 1 Гб или даже 5000 Гб — никаких ограничений. Кроме максимального размера на файл, равного 5 Гб.
Как я уже сказал, в рамках акции "AWS Free Usage Tier" каждый новый пользователь получает возможность попробовать эти сервисы бесплатно. Слово "попробовать" означает, что без платы предоставляемые ресурсы будут ограничены. Захочешь больше - изволь заплатить. Если кратко, то ежемесячно нам предоставляется 750 часов использования инстанса EC2 (этого времени достаточно, чтобы использовать виртуальный сервер круглосуточно), 10 Гб для EBS (этого достаточно, чтобы установить на сервер, скажем, Ubuntu) и 5 Гб для S3. Ты можешь также попробовать другие технологии Amazon, но в рамках этой статьи мы их касаться не будем. Главное сейчас, что мы, фактически, за даром получаем сервер для экспериментов, который к тому же работает на основе облачных технологий. То, что ты хочешь из него сделать, ограничивается только фантазией. Но один из самых интересных вариантов - поднять свой собственный VPN, который будет находиться в Штатах!
Регистрация в сервисе
Перед началом использования любого из сервисов Amazon'а необходимо завести аккаунт. Для этого переходим на главную страницу AWS (aws.amazon.com) и кликаем "Sing up Now". На станице регистрации выбираем вариант «I am a new user» и приступаем к процедуре создания аккаунта Amazon. Для этого обязательно понадобится пластиковая карта, это единственное условие. Не волнуйся: если не заходить за лимиты специального предложения для новичков, то никакая плата взиматься не будет. Amazon спишет 1 или 2 доллара, чтобы проверить валидность "пластика" и потом вернет их обратно. Подойдет карта системы Visa или MasterCard: ее даже необязательно заводить в банке, виртуальную кредитную карту можно приобрести в автоматах Qiwi. Этот аккаунт в Amazon носит скорее экономический характер и предназначен для биллинга.
Для доступа к облачным сервисам необходимо дополнительно подписаться на нужные сервисы (EC2, EBS, S3 и т.д.). Система безопасности обязывает проверить номер телефона. На одном из этапов регистрации сервис осуществит автоматический звонок, запросив 4-значный PIN-код, который в этот момент будет отображен на экране. Важным шагом является получение пары ключей для доступа. Для работы с EC2 и S3 понадобится два типа ключей: Access Key ID и Secret Access Key, а также X.509 Certificate. Для того чтобы воспользоваться бесплатным тест-драйвом, дополнительно ничего нигде указывать не надо: Amazon сам подпишет тебя на все необходимые сервисы. После регистрации у тебя будет доступ к консоли управления AWS. У нас задача - поднять виртуальный сервер, поэтому смело переходи в раздел управления EC2.
Начало работы c EC2
Технология устроена так, что ты можешь запустить и остановить любое количество инстансов (Amazon EC2 instance) в течение пары минут. При этом в соглашении об уровне обслуживания гарантируется 99.95% их доступность - это очень впечатляющая цифра. Для этого из консоли управления EC2 нажимаем на кнопку "Launch Instance". На выбор пользователя предоставляется несколько типов виртуальных серверов с разными конфигурациями.
Стандартный инстанс имеет следующие характеристики: "Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform" и стоит $0.10 (Unix-система) и $0.125 (Windows в качестве ОС). Помимо этого, необходимо оплачивать $0.10 за гигабайт входящего трафика и $0.17 за гигабайт исходящего трафика. Это к сведению (ведь через некоторое время халява закончится). Нас же на самом деле интересует тип инстанса, который Amazon создали специально для тестового периода - Micro Instance. Его использование бесплатно.
Облачная платформа предлагает на выбор различные варианты ОС для установки. Образ с операционной системой называется AMI (Amazon Machine Image), причем, помимо файлов самой системы, в него может быть включен нужный софт (к примеру, Apache, MySQL, Memcached и т.д.), а также все необходимые файлы. В будущем ты сможешь создавать такие сборки сам. Есть большое количество готовых AMI-образов от самого Amazon'а и энтузиастов: на базе Linux и Windows. Всего в базе "Community AMIs" более 6067 вариантов. Для нас важно выбрать удобный дистрибутив - пусть это будет Ubuntu. По ключевому слову находится немало AMI с убунтой, но почти все подразумевают использование 15 Гб EBS, что не укладывается в бесплатный 10 Гб лимит. К счастью, энтузиастами собрана сборка Ubuntu 10.04 с номером ami-c2a255ab, которая "занимает" как раз 10 Гб. Находим его по IE и нажимаем "Install". Специальный мастер будет запрашивать различные параметры: можно все оставить по умолчанию. Но очень важно здесь, как я ранее сказал, установить тип инстанса - Micro Instance. В противном случае за каждый час использования сервера Amazon будет взимать с тебя деньги.
Запускаем инстанс
Пройдя все шаги мастера, ты получишь готовый инстанс. На вкладке Instances можно наблюдать процесс запуска. Нужно подождать, пока в столбце State не появится флаг "Running" - это значит, что наш сервер готов к работе. Здесь же можно посмотреть параметры запущенного сервера. Public DNS определяет внешнее имя сервера. Тут есть нюанс: и доменное имя, и IP-адрес виртуального сервера при каждом запуске инстанса будут меняться. Но! На вкладке "Elastics IPs" можно получить так называемый статический IP-шник и привязать его к инстансу. Важно сразу же сделать такую привязку: пока ты этого не сделаешь, сервис будет снимать с тебя деньги. Это сделано специально, чтобы пользователи не хватали себе статические IP-адреса, которые им на самом деле не нужны. Если попытаться сейчас пропинговать хост или подключиться по SSH, тебя будет ждать большой облом. Причина проста: по умолчанию файрвол режет все подключения. Это легко исправить, отредактировав политику безопасности в разделе Security Group. Сделай так, как показано на скриншоте.
С этого момента у нас есть рабочий инстанс EС2, и мы можем приступить к конфигурированию установленной на нем Ubuntu. Для этого подключимся к серверу по SSH. Идеально для этого подходит старый добрый PuTTY. Правда, сервер дал нам ключи в формате pem, а для PuTTY нужны ppk. Не беда, утилита PuTTYgen быстро преобразует ключи в подходящий формат: сначала загружаем ключ ("Load private key file"), а потом сохраняем его в нужное место через меню "File". Если ранее ты не настраивал SSH-подключение с использованием ключей, то это делается так:
- в разделе "Sessions" вводим IP нашего инстанса (Elastic IP) в поле Host Name;
- в разделе "Connection -> Data" в поле "Auto-Login" указываем имя пользователя "ubunta", которое будет использоваться для авторизации в системе;
- в разделе "Connection -> SSH -> Auth" указываем путь до нашего private-ключа;
- в разделе "Session" вводим название сессии и сохраняем ее с помощью кнопки "Save".
С этого момента все, что нужно для подключения, это выбрать нужную сессию и нажать кнопку "Open". С тебя потребуют ввести парольную фразу для твоего ключа.
Настраиваем PPTP
Если ты все сделал правильно, в окне PuTTY появится консоль твоего виртуального сервера, а именно приветственное сообщение Ubuntu. Т.е. у нас уже есть рабочий виртуальный сервер в облаке и SSH-доступ к нему. Можно было бы сейчас поднять на нем хостинг. Или, к примеру, настроить у себя SSH-форвардинг и безопасно туннелировать трафик приложений. Возможно все что угодно: это "дедик", только в облаке. Мы же, как и планировали, поднимем на инстансе полноценный VPN-сервер. Тут есть варианты: можно настроить OpenVPN, а можно — обычный PPTP-демон. У обоих подходов есть недостатки. Для подключения к OpenVPN требуется отдельный клиент. В случае с PPTP клиент не нужен, но можно обломаться с подключением, если провайдер режет GRE-пакеты. Для меня удобнее второй вариант.
С учетом того что в нашем распоряжении удобная Ubunta, поднять PPTP-демон - это пара пустяков. Начать стоит с установки сервиса:
sudo aptitude install pptpd
Далее необходимо немного отконфигурировать демон. Для начала нужно добавить диапазоны IP-адресов, которые будут выдаваться подключившимся клиентам. Для этого нужно раскомментировать и исправить последние 2 строчки в файле /etc/pptpd.conf:
localip 192.168.242.1
remoteip 192.168.242.2-5
С такими настройками сам PPTP демон получит адрес 192.168.242.1, а для клиентов будет 4 возможных адреса: от 192.168.242.2 до 192.168.240.5. Не лишним также будет указать адреса DNS-сервера. Это может быть сервер как самого Amazon (172.16.0.23), так и, к примеру, серверы Google Publuc DNS. Они прописываются в файле /etc/ppp/pptpd-options:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
Последний шаг - добавление пользователей для подключения к PPTP-демону:
sudo echo "<имя_пользователя> pptpd <пароль> *" >> /etc/ppp/chap-secrets
Вместо <имя_пользователя> и <пароль> необходимо подставить нужные авторизационные данные. При необходимости таких пользователей может быть несколько. Как только в файл /etc/ppp/chap-secrets будут занесены новые записи, потребуется перезапустить PPTP-демон:
sudo /etc/init.d/pptpd restart
В принципе, уже сейчас можно попробовать подключиться к серверу. Соединение установится, однако доступа в Интернет через такое VPN-подключение не будет. Это связано с тем, что мы еще не включили переадресацию пакетов и NAT. Исправляем эту ситуацию, раскомментировав в файле /etc/sysctl.conf следующую строчку:
net.ipv4.ip_forward=1
Перезагружаем конфиг:
sudo sysctl -p
И включаем NAT, добавив новое правило файрвола:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Правда, после перезагрузки это правило пропадет. 🙂 Поэтому лучше сразу добавить эту команду в конфиг /etc/rc.local, прописав после строки "exit 0" следующее:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Все, теперь VPN полностью работоспособен. Можно установить подключение и зайти на какой-нибудь сервер для определения IP, чтобы убедиться, что адрес у нас из США. Ресурс вроде speedtest.net сделает контрольный замер ширины канала. У меня VPN работает довольно шустро. Amazon дает 15 гигабайт трафика входящего и столько же исходящего трафика. Выход из лимита стоит астрономических денег: 10 центов за гигабайт. 🙂
Вместо заключения
Понятно, что халява Amazon нацелена прежде всего на привлечение новых клиентов и разработчиков и через некоторое время закончится. Но подумай. Даже если за использование инстанса EC2 придется платить, его можно включать строго по необходимости. При периодическом использовании сервера можно легко укладываться в несколько баксов в месяц. А это уже в любом случае дешевле любого VPN-сервера. Такой гибкий подход позволяет творить еще более интересные вещи: например, создавать кластер из десятка серверов, включаемых строго по необходимости и выполняющих какую-то ресурсоемкую задачу. Эта идея стала еще интересней после того как Amazon представила типы Instance с мощными GPU, поддерживающими технологию CUDA. Да и разве ж не здорово пощупать своим руками прогрессивные облачные технологии, которые используются крупнейшими проектами в Инете?
Удобное управление EC2
Веб-консоль для управления AWS, хотя и предоставляет все необходимое, не всегда удобна. Для более комфортной работы лучше установить специальный плагин Elasticfox для Firefox. Настройка аддона сводится к указанию в настройках полученных во время регистрации AWS Access Key и AWS Secret Access Key. Помимо этого, сам Amazon предоставляет набор консольных утилит (s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip) для взаимодействия с EC2. Для их работы требуется установленный Java Runtime Environment.
DVD
На диске выложены необходимые файлы для работы с AWS.