yutaponのブログ

javascript界隈の興味あるネタを備忘録的に残しておく場所

1時間1円から使えるSSD VPS、DigitalOceanことはじめ

DigitalOceanといえばSSD VPSなのに1時間当たり約1円弱で使える格安VPSとして有名です。
有名な紹介記事はこちら。
徳丸浩の雑記帳: 試験環境用VPSとして1時間1円から使えるDigitalOceanが安くて便利

VagrantとSSDなVPS(Digital Ocean)で1時間1円の使い捨て高速サーバ環境を構築する - Glide Note


DigitalOceanのことはrebuildfm#2で知って興味持ちました。
Rebuild: 2: Rails, Redis, VPS (Kenn Ejima)

それまでVPSといえばさくらVPSがメジャーだと思ってましたが、
調べてみるとDigitalOceanがなんとも良さ気です。


今回はDigitalOceanの登録から簡単な使い方を説明します。
こちらのリンクから登録していただくと、私に少しバックがあるようです。
DigitalOcean: Cloud Computing, Simplicity at Scale


アウトラインはこんな感じ

  1. アカウントの作成
  2. 支払い情報の登録
  3. インスタンスの作成
  4. Droplet管理画面
  5. インスタンスを破棄する
  6. 請求金額の確認
  7. SSHで接続する
  8. Wordpressを入れてみる
  9. Atlassian JIRAを入れてみる
  10. さくらVPS vs DigitalOcean
  11. おわりに

 

アカウントの作成

まずはアカウントを作成します。

f:id:sskyu:20140413183154p:plain

メールアドレスと、ログイン用のパスワードを入力してアカウントを作成すると
ダッシュボードが表示されます。


入力したメールアドレスに登録確認のメールが届いていると思うので、
Please visit the following url のURLを開いて登録を完了させます。


f:id:sskyu:20140413184831p:plain

こちらの画面が表示されたらGet Startedを押して支払情報の登録に進みます。


支払情報の登録

支払いはクレジットカードまたはPayPalのどちらかから選べます。

クレカ払いは月1回の精算、PayPalは先払いのチャージになるようです。

以下はクレカ払いのときの説明になります。


入力フォームが表示されるので適宜入力します。

f:id:sskyu:20140414213404p:plain

とりあえず全部埋めましょう。
英語圏のサービスなので住所などはローマ字で入れます。
(余談ですが、入力フォームのUIがよく出来ていてさすがと思いました。)

入力ができたら ADD CREDIT CARD を押して完了させます。


f:id:sskyu:20140413185804p:plain

こちらの画面が表示されたら Create Droplet を押してインスタンスの作成に進みます。


インスタンスの作成

f:id:sskyu:20140414213623p:plain

DigitalOceanではインスタンスのことを Droplet(ドロップレット)と呼ぶようです。

まずはこのDropletのホスト名を入力します。

次にインスタンスのサイズを選択します。

最安プランは1時間あたり$0.007、1ヶ月フルに使っても月5ドルです。
今回はこの一番安いサイズを選択しました。


f:id:sskyu:20140413190553p:plain

続いてリージョンを選択します。
日本から使うのであればシンガポールを選択するのが良さそうです。
こちらは後から変更できるのでとりあえずデフォルトのままにしておきました。


f:id:sskyu:20140413191038p:plain

続いてベースとなるイメージを選択します。

  • Ubuntu
  • CentOS
  • Debian
  • Arch Linux
  • Fedora

が用意されており、それぞれ選択すると下に使用できるバージョンが表示されます。


興味深いのは Applications タブです。

f:id:sskyu:20140413191240p:plain

LAMP on Ubuntu や、Ruby on Rails on Ubuntu、Redmine on Ubuntuなど、
自分で環境を構築しなくても、すでに構築されたイメージを選択することができます。


今回は Linux Distributions の CentOS 64bit を選択してみました。


f:id:sskyu:20140413191916p:plain

続いて設定のオプションを指定します。

Enable VirtIO

デフォルトでチェックが入っていて、仮想環境でのDisk, Networkデバイスのパフォーマンスが向上するそうです。
チェック入れるのがおすすめみたい。
What is VirtIO? Do I need this option? | DigitalOcean
 

Private Networking

チェック入れるとおそらくグローバルからアクセスできるIPが割り振られない(?)かも。
グローバルに出したくないDBサーバーとか、フロントにロードバランサー入れてるときなどに使うオプションかと。
今回はチェックしませんでした。

Enable Backups

インスタンスのバックアップをするかどうか。
カーソルを合わせると吹き出しで説明が表示されますが、インスタンス使用料の20%の料金がかかるそうです。
今回はチェックしませんでした。


オプションを決定したら Create Droplet を押します。


f:id:sskyu:20140413193015p:plain

プログレスバーが表示されて、1分かからないくらいでインスタンスが生成されます。

この間に登録したメールアドレスにrootのパスワードが書かれたメールが届きました。


Droplet管理画面

インスタンスがアクティブになるとこのような画面が表示されます。

f:id:sskyu:20140413193709p:plain

インスタンスを作成した瞬間から料金が掛かり始めます。
といっても、1時間1円ほどですが。


とりあえず右上にあるボタンを押してWebコンソールを見ることにしました。


f:id:sskyu:20140413194125p:plain


ユーザーは root 、パスワードはメールに届いたものを手入力してログインします。
(Webコンソールだとコピペができなかったので手入力。)


とりあえずWebサーバーを入れて

root # yum install -y httpd
...

root # service httpd start

 
ブラウザのURL欄に表示されているIPを入れたらApacheのあの画面が表示されました。


インスタンスを破棄する

DigitalOceanの料金はインスタンスを作成したときから発生します。
ホストをシャットダウンしたままでも、クラウド上にインスタンスがスタンバイされてることになるので使用料が発生し続けます。

これを完全に料金がかからない状態にするにはインスタンスを破棄します。


破棄すると今まで構築した環境は全てなくなってしまいます。
(今回で言うとApacheを入れたこと)

これまでの過程を保存するにはスナップショットを作成しましょう。


まず管理画面の Droplets タブを開いて Droplet のホスト名をクリックして、
Powerタブから Power Off を選択して落とします。

f:id:sskyu:20140413202139p:plain


インスタンスを停止させた状態でないとスナップショットは取れません。


f:id:sskyu:20140413201508p:plain

Snapshotsタブを開いて、スナップショットの名前を入力します。
CentOS上にApacheを入れただけなので、apache_on_centos6.5と入力してみました。

これでイメージに加えた変更はひとまず保存されました。


ではDestroyタブを開きます。

f:id:sskyu:20140414214215p:plain

ここでDestroy > Rebuildタブを開くと、最初から用意されているイメージの他、
さきほど保存したスナップショットが選択できるようになっています。

インスタンスを停止させた状態であれば、インスタンスに乗せるイメージを書き換えられるようです。


Destroy > Destroyタブを開きます。

f:id:sskyu:20140414214501p:plain

チェックを入れるとSSDのデータ領域に0を書き込んでデータを消去します。
個人情報的なデータがある場合はチェックして消したほうが良さそうです。
(チェック入れたままDestroyを押しても、画面が固まること無くすぐに削除完了のNotiが表示されるので、チェック入れるのがおすすめ。)


インスタンスの破棄が完了すると、Dropletsの一覧画面にNotiが表示されます。

f:id:sskyu:20140413203428p:plain

もういちどDropletsタブをクリックするとインスタンスがなにもないのがわかるかと思います。
これで使用料が発生しなくなりました。


請求金額の確認

実際どれくらいの料金が掛かっているのか見るときはBillingタブを選択します。

f:id:sskyu:20140414232008p:plain

左が使用料金、右がチャージ分を含めた利用料金みたいです。
チャージしてないので同じ金額が表示されています。


SSHで接続する

Webコンソールだと何かと作業しにくいのでSSH接続できるようにしましょう。


大体の人は既に秘密鍵を持っていると思うので、
秘密鍵から公開鍵を生成しましょう。

$ ssh-keygen -y -f ~/.ssh/id_rsa > ~/id_rsa.pub
$ cat ~/id_rsa.pub
# ここに表示された文字列をコピーする

 
次に管理画面のSSH Keysタブを選択して、右上の Add SSH Key を押し、
公開鍵の名前と公開鍵の情報を入力しましょう。

f:id:sskyu:20140414215925p:plain

Public SSH Key の欄に先ほどコピーした文字列をペーストすればおっけーです。

GithubのSSH Key追加と同じ手順ですね。

あとはターミナルから、

$ ssh root@xx.xx.xx.xx

こんな感じでSSH接続できるはずです。

Dropletを破棄したり、作成したりしていると
同じIPでも中身が異なるため、ssh接続が蹴られることがあります。
そういうときは ~/.ssh/known_hosts を開いて、
接続先と同じIPを持つ行を削除してください。


Wordpressを入れてみる

インスタンスを作成する時にあった Wordpress on Ubuntu というイメージを使ってインスタンスを作成してみました。

Webコンソールにrootでログインすると、ログインメッセージにWordpressの管理画面に入るためのパスワードが表示されます。

表示されたIPをブラウザで表示するとBasic認証が表示されるので、ユーザadminと表示されたパスワードを入力すると、

f:id:sskyu:20140413210053p:plain

Wordpressが使えるようになりました。


とんでもない簡単さです。
普通に作るとPHPなりMySQLなり、いろいろ面倒な作業があるんですが、
それをすべてなかったことにできます。


Atlassian JIRAを入れてみる

Docker on Ubuntuというイメージがあるので、
Docker Meetup #2で言われていた

$ docker run atlassian/jira # これだけでJIRAが使えるようになる

というのをやってみました。


まず新規にDropletを作成します。

f:id:sskyu:20140414221801p:plain

最小プランのメモリ500MBでやってみたらOut of Memoryエラーで動かなかったので、
メモリ1GBのサイズを選択します。

リージョンはシンガポールあたりにして、
イメージはDocker on Ubuntuを選択しましょう。

f:id:sskyu:20140414221942p:plain

これでDropletを作成して、rootでログイン出来る状態にします。

ターミナルで以下のコマンドを実行します。

docker run -d -p 80:8080 atlassian/jira

 
初回は若干時間がかかりますが、じっと待ちます。
実行が終わったら、ブラウザでDropletのIPにアクセスします。

f:id:sskyu:20140414225200p:plain

JIRAが動きました。

適宜、JIRAの設定を済ませていくと

f:id:sskyu:20140414225243p:plain

大体10分くらいでJIRAが使えるようになりました。
Dockerがあるとアプリケーションがポータブルになるっていうのを体感した気がします。


さくらVPS vs DigitalOcean

月額1000円くらいのプラン同士で比較するとこのようになります。

さくらVPS DigitalOcean
CPU 2core 1core
Memory 1GB 1GB
Disk 100GB (HDD) 30GB(SSD)
Region 日本国内 シンガポール, アメリカ, etc
Transfer 無制限 2TB

さくらVPSの方は1番安いプランで、
DigitalOceanの方は2番めに安いプランで比較しています。


こうやってみると、ブログなどで定常的にサービスを提供するならさくらVPSの方が良さそうですね。

一時的に使いたい、VPS使うのは週末だけ、という場合はDigitalOceanがいいと思います。
使った分だけ課金される、毎日使っても安いというのは安心できます。


またDigitalOceanはAPIを提供していて、Vagrantと連携することができ、
Ansibleも公式にサポートしています。
digital_ocean - Create/delete a droplet/SSH_key in DigitalOcean — Ansible Documentation


他にも細かいメリットがいろいろあるのですが、
ちょっとVPSを使って開発をしたい、というニーズにはDigitalOceanが最適かと思います。


おわりに

Vagrant+DigitalOceanとかの記事はたくさんあるのですが、
DigitalOceanの基本的な使い方などがあまりなかったので今回は紹介記事になりました。

さくらVPSを契約して1年くらい放置した経験があるので、
使った時だけ課金されるDigitalOceanはお財布にやさしい。
学生さんにおすすめです。

次からは私もVagrant+DigitalOceanを試してみたいと思います。

Dockerも少しずつ触っている状態なので、引き続き使いこなせるよう勉強します。