Облака — ещё дешевле

от автора

Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разраслись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.

VPN-сервер

Инструкций как поднять на Linux VPN-сервер в интернете пруд-пруди. Вот раз, вот два, ну а вот скрипт гарантированно работающий на образе Ubuntu 12.04 x64 Server, который предоставляется DigitalOcean.

Установка и настройка VPN-сервера

#!/bin/bash echo "Select on option:" echo "1) Set up new PoPToP server AND create one user" echo "2) Create additional users" read x if test $x -eq 1; then 	echo "Enter username that you want to create (eg. client1 or john):" 	read u 	echo "Specify password that you want the server to use:" 	read p   # get the VPS IP ip=`ifconfig eth0 | grep 'inet addr' | awk {'print $2'} | sed s/.*://`   echo echo "Downloading and Installing PoPToP" apt-get update apt-get install pptpd   echo echo "Creating Server Config" cat > /etc/ppp/pptpd-options <<END name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp nodefaultroute lock nobsdcomp END   # setting up pptpd.conf echo "option /etc/ppp/pptpd-options" > /etc/pptpd.conf echo "logwtmp" >> /etc/pptpd.conf echo "localip $ip" >> /etc/pptpd.conf echo "remoteip 10.1.0.1-100" >> /etc/pptpd.conf   # adding new user echo "$u	*	$p	*" >> /etc/ppp/chap-secrets   echo echo "Forwarding IPv4 and Enabling it on boot" cat >> /etc/sysctl.conf <<END net.ipv4.ip_forward=1 END sysctl -p   echo echo "Updating IPtables Routing and Enabling it on boot" iptables -t nat -A POSTROUTING -j SNAT --to $ip # saves iptables routing rules and enables them on-boot iptables-save > /etc/iptables.conf   cat > /etc/network/if-pre-up.d/iptables <<END #!/bin/sh iptables-restore < /etc/iptables.conf END   chmod +x /etc/network/if-pre-up.d/iptables cat >> /etc/ppp/ip-up <<END ifconfig ppp0 mtu 1400 END   echo echo "Restarting PoPToP" /etc/init.d/pptpd restart   echo echo "Server setup complete!" echo "Connect to your VPS at $ip with these credentials:" echo "Username:$u ##### Password: $p"   # runs this if option 2 is selected elif test $x -eq 2; then 	echo "Enter username that you want to create (eg. client1 or john):" 	read u 	echo "Specify password that you want the server to use:" 	read p   # get the VPS IP ip=`ifconfig venet0:0 | grep 'inet addr' | awk {'print $2'} | sed s/.*://`   # adding new user echo "$u	*	$p	*" >> /etc/ppp/chap-secrets   echo echo "Addtional user added!" echo "Connect to your VPS at $ip with these credentials:" echo "Username:$u ##### Password: $p"   else echo "Invalid selection, quitting." exit fi 

Просто запустите, он спросит логин\пароль для пользователя VPN — и готово.

Поднимать это всё можно на самом дешёвом инстансе DigitalOcean (за 5$ в месяц) — одно активное VPN-соединение грузит процессор на 4-6% и оставляет свободными 60% ОЗУ виртуалки. Мы уже видим экономию, поскольку даже микро-инстанс на Амазоне стоит примерно 15$ в месяц, а тут всего 5$. Но это не всё. Если вам, как и мне, не нужен VPN-сервер, работающий 24 часа в сутки (я им пользуюсь от силы пару раз в неделю по пару часов — посмотреть что-нибудь, недоступное из наших славянских краёв), то можно виртуалку выключать. В этом месте внимательный читатель воскликнет «Ага! А автор статьи, оказывается, дурак-дураком, и не знает, что DigitalOcean берёт деньги даже за выключенную виртуалку!». Нет, я в курсе. За выключенную — берёт. А вот за удалённую — нет, не берёт. Поэтому мы сразу после настройки выключим нашу машинку, сделаем с неё снимок (snapshot) — это обойдётся нам в где-то в 4 цента и удалим виртуалку. Всё, теперь мы ничего не платим.

Прелесть в том, что VPN-сервер не содержит каких-либо меняющихся данных и каждый раз когда нам понадобиться VPN — мы просто восстанавливаем snapshot и запускам виртуалку. Не нужна больше — убиваем. Удобнее всего это делать через API Digital Ocean. Вот несколько ссылок, которые можно добавить в закладки браузера и пользоваться для быстрого создания и удаления виртуалки.

Все образы

https://api.digitalocean.com/images/?client_id=[client_id]&api_key=[api_key]

Все запущенные виртуалки

https://api.digitalocean.com/droplets/?client_id=[client_id]&api_key=[api_key]

Старт VPN-сервера

https://api.digitalocean.com/droplets/new?client_id=[client_id]&api_key=[api_key]&name=VPN&size_id=66&image_id=[image_id]&region_id=1

Получить ссылку на удаление VPN-сервера

 javascript: void(function(){var response = JSON.parse(document.body.innerText); var el = document.createElement('a');el.href='https://api.digitalocean.com/droplets/'+ response.droplet.id+ '/destroy/?client_id=[client_id]&api_key=[api_key]';el.innerText = 'Destroy VPN server';document.body.appendChild(el)})(); 

Пара нюансов использования:

  1. Не забудьте вписать свои [client_id] и [api_key] — их можно взять со страницы www.digitalocean.com/api_access
  2. В ссылку «Старт VPN-сервера» нужно вписать правильный номер образа вместо [image_id] — его можно взять из данных по первой ссылке («Все образы»).
  3. Закладку «Получить ссылку на удаление VPN-сервера» нужно нажимать при открытой вкладке с результатами старта VPN-сервера — это нужно чтобы оттуда взять id созданной виртуалки. Полученную ссылку можно добавить в закладки (ну или просто не закрывать страницу в браузере).

От клика по закладке до рабочего VPN-сервера уходит меньше минуты. В итоге мои затраты на VPN при пользовании им 10-15 часов в неделю составляют 0.2$ — 0.4$ в месяц.

Хранение архивов

Прямого аналога Glacier, как я уже говорил, в DigitalOcean нет. Но помните, выше я писал, что сделать снимок виртуалки нам обойдется в 4 цента? Откуда эта цифра? Всё просто — 2 цента за каждый гигабайт сохраняемых в snapshot данных. И обратите внимание — оплачивается только сохранение. Нигде на сайте или форуме не указано о том, что за хранение берутся какие-то деньги. Люди на форуме даже предлагали заплатить за хранение данных, но ответ DigitalOcean был однозначным — оплата только в момент создания снимка. Таким образом, если архив в 100 Гб на Амазоне будет нам обходиться в 1$ каждый месяц, то в DigitalOcean мы заплатим единоразово 2$ (ну плюс оплата времени работы виртуалки пока мы будем загружать данные — но это считанные центы) и больше ничего. Никаких ограничений на сроки хранения образов или планов менять тарифы я у DigitalOcean не нашел. Плюс сюда добавляется скорость (забирать данные из Glacier ох как не быстро, а тут всё будет доступно в течении пары минут) и удобство (свой протокол у Glacier иногда раздражает, а вот на виртуалку DigitalOcean мы данные можем заливать хоть по HTTP, хоть по FTP, хоть торрентами, хоть Дропбоксом — что захотим, то на эту виртуалку и поставим).

Мораль

Если вы платите в десятки раз больше всяким там «лучшим VPN-серверам интернета» и «самым надёжным файлохранилищам» — бросайте это дело. Берите скрипты\ссылки в статье и пользуйтесь.

ссылка на оригинал статьи http://habrahabr.ru/company/infopulse/blog/183628/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *