前回、 前々回に書いたように、 このブログ 「仙石浩明の日記」 (および 「仙石浩明CTO の日記」) は、 私の自宅にある PC サーバで動かしている。 2台の PC からなる冗長構成になっていて、 10年以上の安定稼働実績がある (両サーバ共に停止したことは皆無) が、 回線が (家庭用の) フレッツ光ネクストなので、 インターネットとの接続が切れてしまう可能性は皆無ではない。 実際、 Bフレッツからフレッツ光ネクストへ切り替えたときは 40分間ほど切れてしまった。 一応バックアップ回線として ADSL 回線も契約しているが、 こちらは固定 IP アドレスを割当てていないので WWW サービス用としては使いにくい。
短時間とはいえブログが見えないようなことがあると、 たまたまそのタイミングで (検索エンジン等で見つけて) 訪れた人が、 ブログが既に閉鎖してしまったものと勘違いしてしまうかもしれない。 ここは一つ自宅以外の場所にもサーバを立てて、 回線断の影響を受けないようにしたいところ。 海外のサーバなら地域分散もできてなおよい。
道楽で運営している自宅サーバにそこまで可用性を求めるのは、 やりすぎの感もあるが、 近頃流行りの VPS (Virtual Private Server, 仮想専有サーバ) は、 月額 $20 (初期費用無し) 程度で利用できるらしい。 $20 なら試しに使ってみるのも悪くない。
サービス プラン名 |
メモリ ディスク | 帯域 追加額/単位 |
月額 年額 | データセンタの 場所 |
---|---|---|---|---|
ServerAxis Xen VS000.5G-0025.0GP |
512MB 25GB | 0GB $.05/GB | $15 $180 |
Chicago, IL |
Linode Xen 360 |
360MB 16GB | 200GB $10/100GB | $19.95 $215.46 |
Fremont, CA Dallas, TX ... |
VPSLink Xen VPS Link-3 |
256MB 10GB | 300GB $.50/GB | $19.95 $201.12 |
Seattle, WA New York, NY |
slicehost Xen VPS 256 slice |
256MB 10GB | 150GB $.30/GB | $20 $216 |
Dallas, TX St. Louis, MO |
VPSLink 以外は最安のプランで比較した。 VPSLink には、 メモリ 64MB で月額 $7.95 の Link-1 プラン、 メモリ 128MB で月額 $13.95 の Link-2 プランもあるが、 256MB 未満のメモリではできることも限られてしまうので比較対象から外した。
月額基本料だけを比較すると、 ServerAxis が格安に見えるが、 これは帯域課金が含まれていないためで、 例えば 100GB (送受信の合計バイト数) 使うと $5 加算されて $20 と他社並になる。
データセンタの場所 (というかネットワーク上での位置) によって遅延時間が変わってくるので、 どこのデータセンタを使っているかも重要。 例えば同じ Linode でもデータセンタによって、 日本からアクセスしたときの RTT (Round Trip Time, 往復にかかる時間, ミリ秒) が倍以上変わってくる。 それぞれ 10回ずつ ping を打って、 RTT の最小/平均/最大を比較してみる:
データセンタの場所 | ホスト名 | 最小 | 平均 | 最大 |
---|---|---|---|---|
Fremont, California | fremont1.linode.com | 121.341 | 132.299 | 146.939 |
Dallas, Texas | dallas1.linode.com | 171.049 | 173.152 | 174.905 |
Atlanta, Georgia | atlanta1.linode.com | 183.184 | 185.938 | 190.174 |
Newark, New Jersey | newark1.linode.com | 200.629 | 203.053 | 204.755 |
London, England | london1.linode.com | 269.324 | 273.499 | 276.822 |
米国西海岸だと RTT は 130msec 程度で済むが、 東海岸は 200msec を超えてしまい、 英国はもっと遠い。 西海岸にデータセンタがあるのは Linode と VPSLink だが、 Linode がデータセンタの情報を詳細に公開しているのに対し、 VPSLink は、 Spry Hosting のシアトルのデータセンタを使用している、 ということ以上の情報を公開していない (しかもこのページは 2006年8月の内容のまま) のが少し気になる。
サポートしている Linux ディストリビューションは、 各社だいたい共通で、 CentOS, Debian, Gentoo, Ubuntu の各バージョンが利用できるが、 VPSLink Ubuntu Plan のページに Ubuntu 9.10 Karmic が書かれていない点も、 ちょっと気になった (ちゃんとポリシーを持って 9.10 をサポートしないのならいいのだが、 どうもそうではなく単に運用の手を抜いているだけのような気配がする)。 Web 界隈での評判も Linode のほうがよさげだったので、 Linode を使ってみることに決めた。
サポートしているディストリビューションのバージョンが古くてもアップグレードできるのだろうが、 帯域で課金されるので最初から新しいバージョンをインストールできる方が好ましい。
サービス | CentOS | Debian | Gentoo | Ubuntu | Fedora | その他 |
---|---|---|---|---|---|---|
ServerAxis | 5.4 | 5.0 | 2008.0 | 9.10 | - | Mandriva SUSE |
Linode | 5.3 | 5.0 | 2008.0 | 9.10 | 11 | Arch SUSE Slack |
VPSLink | 5 | 5 | O | 9.04 | 11 | Arch Slack |
slicehost | 5.4 | 5.0 | 2008.0 | 9.10 | 12 | Arch RedHat |
おそらく各社ともカーネルも入れ替えることができるのだと思うが、 Linode 以外は使っていないので未確認。 Linode の場合は pv_ops (paravirtualization) を有効にしておけば任意のカーネルを利用できる。 したがって (帯域課金さえ気にしなければ ;-) 任意のディストリビューションの利用 (あるいは完全なカスタマイズ) が可能 (私はまだそこまではやっていない)。
なお、VPS サービスは探すといろいろあるようだ。 前述した 4社と比べると公開している情報が不十分 (特に Virtuozzo/OpenVZ な VPS は実際のパフォーマンスを予想しにくく、 実地に使ってみないとなんとも...) なので私は比較検討対象から外したが、 ダメ元で使ってみるのも面白いかもしれない:
サービス プラン名 |
メモリ ディスク | 帯域 追加額/単位 |
月額 年額 | データセンタの 場所 |
---|---|---|---|---|
SplitServ Xen 1024 |
1024MB 15GB | 200GBs $8/400GB | $14.95 $149.50 |
Los Angeles, CA Kansas City, MO |
WebKeepers Virtuozzo ライト |
512MB 50GB | ? | 1280円 11760円 |
? |
PhotonVPS Xen VPS WARP 1 |
512MB 35GB | 500GB ? | $16.95 $203.40 |
Los Angeles, CA |
KnownHost Virtuozzo VS2 |
512MB 30GB | 750GB $40/100GB | $35 $400 |
Los Angeles, CA Dallas, TX |
BurstNet VPS PACKAGE #1 |
512MB 20GB | 1000GB $25/200GB | $5.95 $71.40 |
Scranton, PA |
VPS NOC OpenVZ Bronze |
512 MB 20 GB | 400 GB ? | $12.95 $155.40 |
Kansas City, MO |
CoreNetworks CoreMR |
512MB 12GB | 500GB ? | $19.95 $239.40 |
? |
prgmr.com Xen VPS |
512MB 12GB | 80GB ? | $12 $115.20 |
San Jose, CA |
HostCadet VPS Micro |
512MB 10GB | 400GB ? | $9.99 $119.88 |
Colorado Springs, CO |
NY NOC OpenVZ Super VPS #1 |
512MB 10GB | 1000GB ? | $10.00 $120 |
Chicago, IL North Bergen, NJ |
ARP Networks KVM/QEMU |
512MB 10GB | 100GB ? | $15 $180 |
Los Angeles, CA |
VirtuallyDedicated Xen VX384 |
384MB 24GB | 300GB ? | $10.99 $131.88 |
Chicago, IL Scranton, PA |
GrokThis.net Xen VPS |
320MB 16GB | 160GB ? | $20 $200 |
Philadelphia, PA |
DMEHosting OpenVZ VPS1 |
256MB 25GB | 1000GB $10/200GB | $5.95 $71.40 |
Denver, CO Chicago, IL |
Quantact OpenVZ VS1 |
256MB 15GB | 300GB $1/GB | $14.99 $179.88 |
Santa Rosa, CA |
RackspaceCloud Xen CloudServers |
256MB 10GB | 0GB $.08-$.22/GB | $10.95 $131.40 |
Dallas, TX |
XENnode XEN 256 |
256MB 10GB | 200GB ? | $14.99 $143.99 |
Dallas, TX |
Datarealm Xen PowerVPS |
256MB 10GB | 1Mbps Unmetered | $19.95 $215.52 |
? |
HostVirtual Xen XV0 Server |
256MB 10GB | 250GB ? | $14.95 $179.40 |
San Jose, CA |
RackUnlimited Xen RVPS-Starter |
256MB 10GB | 100GB ? | $8 $96 |
Asheville, NC |
QuickWeb Xen Lite |
256MB 5GB | 240GB ? | $17.95 $215.40 |
San Jose, CA |
QuickVPS Xen プラン1 |
256MB 10GB | 50GB ? | 2300円 21600円 |
日本国内 |
QuillHost OpenVZ Standard |
256MB 8GB | 150GB ? | $9.99 $119.88 |
Washington, DC Charlotte, NC |
と、いうわけで、 Linode 360 を契約してみた。
Linode のページで、 Linode 360 プランを選んで 「Sign Up Now!」をクリック。 氏名、住所、クレジットカード番号を入力し、 月々払い (Month to month) を選んで申し込むと、 $9.27 の注文書が表示された。 最初の月は月割りで月末までの分を注文するということのようだ (ということは短期間試してみたいときは月末近くに申し込めばよい?)。
米ドル支払いなので、 私が米国に滞在するとき使っている米銀のデビットカード (SSN がないとクレジットカードを発行してもらうのは難しい) を試しに使ってみたら、 何の問題もなく普通に使えた (もちろんクレジットカードならどこの国のカードでも普通に使えるはず)。 日本のデビットカード (J-Debit) はキャッシュカードなので取扱店でしか使えず、 J-Debit が使える店の大半はクレジットカードも使えるので、 J-Debit を使うのは家電量販店くらいのものだが、 米国のデビットカードは (決裁までの期間が短い点以外は) クレジットカードと同等なので便利。
2/17 13:18 に「Complete Order」 ボタンを押して注文を確定すると、 「Payment Receipt」 がメールで届き、 1分後に 「Linode Account Activation」 メールが届いた (13:19)。
そのメールに書いてあった Member's area にログインすると、 データセンタの選択画面が表示されたので、 迷わず米国西海岸の Fremont, CA を選ぶ。 パーティションの設定をして、 インストールするディストリビューションとして 「Ubuntu 9.10 64bit」 を選び、 root のパスワードの設定すると、 インストールが始まって 25秒ほどで完了 (13:22)。
注文してからここまで約5分。
ステータス表示が 「Powered Off」 になっているので、 「Boot」 ボタンを押す (13:29) と 8秒で起動が完了し、 ステータス表示が 「Running」 になった。 試しに手元の PC から ssh でログインしてみる (13:31)。 先ほど設定した root のパスワードを入力すると、 無事ログインできた。
注文してからここまで 15分かかっていない。
あっけないほど簡単に VPS が使える状態になった。
次に、 ssh 公開鍵を設定して鍵認証で ssh ログインできることを確認した上で、 sshd_config を修正して sshd に HUP シグナルを送って、 パスワード認証ではログイン出来ないように設定。 続いて、 csh, tcsh, emacs, screen, stone, dbndns, daemontools, apache2, php5, mysql-server, mysql-client, php5-mysql などを apt-get で次々インストールしていく。 実は stone を apt-get で入れたのは初めての経験。 ちゃんと最新版 stone 2.3e がインストールされてちょっと感動 (*^_^*)。 ありがとうございます > 北目さま。
最後に chsh コマンドでシェルを /bin/csh (私の愛用シェルは今でも csh ^^;) に変更して、 私のホームディレクトリの環境一式を手元の PC から rsync で送り込んで、 emacs を起動すれば、 私の作業環境一式が VPS 上でも使えるようになる。
注文してからここまで 1時間かかっていない。
Linode では逆引きを設定させてくれるので、 私の VPS の IP アドレス 74.207.241.21 の逆引きを fremont.gcd.org に設定した。 あとは、 dnscache を動かして外部のキャッシュサーバに頼らず名前を引けるようにしたり、 私の自宅サーバ gw.gcd.org との間にトンネルを設置したり、 gw.gcd.org 上の MySQL からローカルの MySQL に対してレプリケーションを行なうようにしたり、 等々...
もちろん、 Linode でもキャッシュサーバを提供しているので、 自前のキャッシュサーバを VPS 上で動かす必要は必ずしもないが、 名前引きができないことはあらゆるトラブルの元なので、 可能な限り自前で名前を引きに行くようにしたい。 なお、VPS は自身の IP アドレスを DHCP サーバに問合わせて設定しているので、 /etc/resolv.conf を直接書き換えても DHCP クライアントによって書き戻されてしまう。 そこで /etc/dhcp3/dhclient.conf に 「prepend domain-name-servers 127.0.0.1;」 を追加する (元々コメントアウトされているので先頭の # を取り除く)。
普通の ubuntu マシンをいじってるのと何ら変わらず、 しかも ssh でログインしたときのレスポンスも、 日本にあるサーバへアクセスしたときと同程度に速いので普通に使える。 apt-get しまくったので WordPress を動かす準備はすぐ整った。 VPS 上の MySQL のアカウントは、 gw.gcd.org とは (当然) 異なるパスワードを設定し、 WordPress からローカルの (つまり VPS 上の) MySQL へつなぐよう設定する。 これで (万一) gw.gcd.org 側が落ちても VPS 側だけでブログを表示できる。
一点注意すべきなのは、 レプリケーションは gw.gcd.org から fremont.gcd.org への一方通行なので、 VPS 上の MySQL へ何を書込んでもそれは gw.gcd.org へは反映されないという点。 したがってブログへコメントを書込むときは、 fremont.gcd.org ではなく gw.gcd.org 側へアクセスするように、 ブログの URL https://www.gcd.org/blog/ とは別に、 コメントやトラックバックの URL として http://feedback.gcd.org/blog/ を用意した (feedback.gcd.org は gw.gcd.org のエイリアス)。
もちろん双方向レプリケーションを行なうことも可能だが、 Linode の仮想環境に万一脆弱性があった場合に備えて Linode 側で何が起きても構わないように一方通行にしておく方が無難だろう。 さらに、 Linode 側からレプリケーション用の ID 以外で gw.gcd.org の MySQL をアクセスしようとしても、 たとえパスワードが一致しても通信を遮断する仕掛けを gw.gcd.org 側で組み込んである。
そして WordPress が設定するクッキーのドメインを gcd.org に変更して、 feedback.gcd.org なページ (コメント書込み、トラックバック受付) で設定したクッキーを www.gcd.org なページで参照できるようにする。 wordpress/wp-config.php に以下のコードを入れておけばよい:
if ( !defined('COOKIE_DOMAIN') ) define('COOKIE_DOMAIN', "gcd.org");
最後に、 www.gcd.org の IP アドレスとして VPS の IP アドレス 74.207.241.21 を追加した。
% dnsqr a www.gcd.org 1 www.gcd.org: 61 bytes, 1+2+0+0 records, response, noerror query: 1 www.gcd.org answer: www.gcd.org 12657 A 74.207.241.21 answer: www.gcd.org 12657 A 60.32.85.216
すなわち、 いま読者の皆さんが読んでるこのページは、 1/2 の確率で Linode の VPS が送信したページということになる。 すでに一週間近くこの状態を続けていて、 今のところ 360MB のメモリで一応足りているが、 アクセスが増えてくるとどうなるか少し心許無い。
fremont:/home/sengoku % free total used free shared buffers cached Mem: 351508 264236 87272 0 4444 35316 -/+ buffers/cache: 224476 127032 Swap: 262136 39656 222480