「さくらのVPS」で可用性を考慮したサーバー構成

isd「さくらのVPS」の特徴とアップデート

今週、「さくらのVPS」が大規模サービスアップデートするというリリースがありました。
https://www.sakura.ad.jp/press/2013/1023_vpsupdate/

今回追加される機能は下記のとおりです。

  • ローカルネットワーク
  • 新コントロールパネルによる複数台対応
  • SSD上位プラン追加
  • 東京リージョン開設
  • IPv6対応

「さくらのVPS」のメリットは、特にサーバー性能面での圧倒的なコストパフォーマンスにあると思います。
同じCPUコア数、同じメモリ容量の他のクラウドサービスと比較すると、ディスクやCPUのベンチマークは何倍もの値が出ます。
しかも安い!

ただし、クラウド(IaaS)とは異なる、VPSならではのディメリットもあります。

  1. 物理ノード障害時にサーバーがダウンする(ほかの物理ノードに移動するHAフェイルオーバー機能はない)。
  2. バックアップは保証されない。
  3. ローカルネットワークが組めないので複数台構成ができない。

とくに、1. 2. については可用性(サービスの維持)に関わるため、クラウド、VPSサービスを選定する際のネックとなります。
ここでは、「さくらのVPS」を利用しつつ、可用性を高める方法を考えてみます。

isd「さくらのVPS」で可用性を考慮した3つの構成案

構成案A

小規模なWeb+DBシステムで「さくらのVPS」を使用する場合は、最低限のデータ保護とサービス監視を行って、例えば下記のような構成案Aが考えられます。
月額料金は5,000円弱です。

図1. 構成案A – Amazon S3にバックアップ


 

Amazon S3に、必要なファイルや、DBのdumpデータを保存します。
監視ツールとしては、HTTP監視サービスのPingdomや、性能監視サービスのNew Relicを使用します。
Pingdom, New Relicは、最低限の機能であれば無料で使用できます。
New Relicを使う代わりに、Web+DBサーバーに、Zabbix, Cacti, MRTG, Nagiosといった監視ツールを導入するのもよいと思います。

※サーバーは1台ではなく、メモリ2GのWebサーバーとメモリ2GのDBサーバーの2台とする、という構成もあるでしょうが、サーバーがダウンする確率が増えますし、VPSではサーバースペックを増やせるわけではなく拡張性がないので、スペックが高い1台で十分だと思います。

構成案B

構成案Aのように「さくらのVPS」に加えてAmazon Web Services(AWS)も使用すると請求が2箇所になってしまいますし、さまざまな理由でAmazonを敬遠されるお客様もいらっしゃいますね。

その場合は、今回開設される東京リージョンを利用して下記のような構成(構成案Bとします)が考えられます。
こちらも月額料金は5,000円弱です。

図2. 構成案B – 東京リージョンにバックアップサーバーを用意


 

必要なファイルやDBのdumpデータを、毎日(定期的に)東京リージョンで用意したバックアップサーバーに転送します。
データの転送は、セキュリティを考慮してSSHを使用します。
おそらく、さくらインターネットさんは石狩東京リージョン間で太い回線を用意すると思いますが、データ受信側のディスクI/O負荷を抑える意味でも、SSHの転送速度は少し絞ったほうがよいでしょうね。

また、東京リージョン側のサーバーに監視ツールを導入します。
遠隔地から監視することで、該当サーバーだけではなく、石狩リージョンのなんらかのネットワーク障害も検知できます。
もちろん、簡易な監視でよければ、構成案Aと同様にPingdomとNew Relicを使ってもよいですね。

※同一リージョンではなく、異なるリージョンにバックアップデータを置くことで、データセンターの大規模な障害などの際にもデータ損失を防ぐことができます。
※東京リージョンではなく、大阪リージョンでもできますね。

構成案C

構成案A, Bでは、例えば物理ノード障害が発生したときに、Web+DBサーバーが長時間復旧しないことがあり得ます。
この場合、バックアップデータから復元することはできますが、Web+DBサーバーのセットアップが必要となり、その間ずっとシステムがダウンしてします。

このダウンタイムを極力短くするための構成が、下記の構成案Cとなります。
月額料金は8,000円弱です。

図3. 構成案C – 東京リージョンにスタンバイサーバーを用意


 

東京リージョン側のサーバーを単なるバックアップサーバーではなく、スタンバイサーバーとして、WebアプリケーションやMySQLサーバーをセットアップしておきます。
ファイルはSSH/SCPで転送するか、rsyncで同期します。
DBデータは、dumpデータを転送して東京リージョン側でImportします。
このあたりの、バックアップデータの転送とImportは、スクリプトである程度自動化できると思います。

石狩リージョン側のサーバーに障害が発生したときは、東京リージョン側のサーバーに最新のデータが同期されていることを確認したうえで、DNSのAレコードを東京リージョン側のサーバーのIPアドレスに変更して、切り替え完了となります。
簡易的なDR構成といえますね。

isdまとめ

「さくらのVPS」を利用して、少しずつ可用性を高めるサーバー構成を考えてみました。

クラウド、VPSのサービスは数多く存在します。
個人的には、現時点(2013年10月)ではS3の堅牢性、拡張性、可用性、機能の豊富さ(とくにRDS)、運用管理のしやすさといった点でAmazon Web Servicesを利用するのがベストだと思っています。

しかし、何らかの理由でAmazon Web Servicesを利用できなければ、他のクラウドサービスを使ってもよいでしょうし、「さくらのVPS」のように、ある程度の可用性を踏まえつつ、安価で高性能なサーバー群を利用するという選択肢もあります。
さらに、「さくらのVPS」は今回のアップデートリリースで複数台構成が可能となり、機能・用途ごとに異なるサーバーを利用した構成をとれるようになりました。
また、これからは複数のクラウドサービスの機能をいいとこどりして組み合わせるような構成も出てきそうです。

今後も、お客様の予算・嗜好を踏まえたうえで、適切なクラウド、VPSサービスを選択して適切なサーバー構成をご提案していきたいと思います。

Follow me!