簡単操作で安心して使える
NECビッグローブのクラウドを使ってみた
2011/7/21
データセンター事業者各社が、クラウド環境の提供を本格的に始めている。しかし、Webページなどで各社が提供するサービスを調べても、どの事業者も同じような環境とサービスを提供しているように見える。本稿では、NECビッグローブが提供する「BIGLOBEクラウドホスティング」を試用し、使ってみなければ分からない特長を紹介する。
IaaS型のクラウドサービス全盛の今、各社からサービスが提供されています。IaaSの使い勝手はサーバをレンタルするのと変わりませんし、どのサービスでも同じにみえます。しかし、サービス仕様はそれぞれ異なっていて特長があります。
なかでもBIGLOBEクラウドホスティング(以下本サービス)は、お手頃な価格ながらサーバ稼働率99.99%のサービスレベル(※)を保証し、信頼性のあるクラウドサービスとして注目を浴びています。本稿では実際にCentOSサーバを作成してEC-CUBEをテスト的にインストールしながら、その魅力を紹介します。
※月間サーバ稼働率=(月間総稼働時間−累計障害時間)÷月間総稼働時間×100 (契約単位での算出となります)
■INDEX |
まずはSSH鍵の作成
利用をはじめるには、法人向けということもあって書面での申し込みが必要です。申し込み後5営業日程度でユーザーIDとパスワードが郵送されます(8月ごろから、オンライン申込の受付も始まる予定です)。この時点では費用は発生しません。ユーザーIDが届いたらコントロールパネルにログインできるようになります(図1)。サーバの操作やオプション機能の申し込みはこのコントロールパネルから行います。
それでは早速サーバの作成、といきたいところですが、その前にSSH鍵の作成を済ませなければなりません。作成したサーバへSSHログインするとき、初期状態ではパスワード認証は使えず、公開鍵認証のみとなっているのです。こんなところからも信頼性やセキュリティへのこだわりが感じられます。
左のメニューの「ネットワーク・セキュリティ」にある「SSH鍵」を選択するとSSH鍵の管理画面になりますので、「SSH鍵を作成する」をクリックします。次に鍵名と、秘密鍵を暗号化するためのパスフレーズを入力します。この鍵名は、サーバ作成時にSSH鍵を選択するときに用います。SSH鍵は複数作成しておき、サーバ作成時に選択できるようになっています。
先に進むとSSH秘密鍵のダウンロード画面になります。以降、再ダウンロードはできないので注意してください。
最短5分でサーバ作成
「サーバ設定」メニューから「サーバ作成」を選択すると、作成方法の選択画面になります(図2)。単独のサーバを普通に作るだけでなく、WebとDBのサーバをセットにした作成も選べます。典型的なサーバ構成を一括で作成できる便利機能です。そしてもう1つ、イメージから作成というものがありますが、これは後述します。
EC-CUBEはDBを使うソフトウェアですので、サーバセットで一括作成を選択します。次の画面でCentOSをクリックすると、それぞれのサーバの設定入力画面になります。
ここでCPU数、メモリ量などを入力します。そう、CPUとメモリは、別々に設定できるのです。他のIaaSサービスでは、CPU数とメモリ量の組み合わせはあらかじめ決められていて、その中から選ばざるを得ないことがほとんどですが、本サービスでは自由に組み合わせを選べるようになっています。費用はCPU数やメモリ量それぞれに比例して加算されるので、目的に合った組み合わせでコストを最小化できます。
Webサーバでは、初期インストールで「Apache 2.2」、セキュリティ対策ソフトとして「Webアプリケーションファイアウォール(WAF)【試用版】」を選択します。WAFはWebアプリケーションを対象にしたファイアウォールです。これまで導入の敷居が高かったWAFですが、本サービスではサーバ作成時にチェックを入れるだけで手軽に試せます。後から正規ライセンスの購入もできますので、ここでインストールしておきましょう。DBサーバでは初期インストールに「MySQL 5.0」を選択します。
入力後、確認画面で「実行する」をクリックするとサーバの作成が始まり、最短5分程度で完了します。サーバ作成が完了するとメールで通知がきます。画面では「サーバ一覧」でステータスが「起動中」に変わればログインできる状態です(図3)。
作成したサーバにSSHログインする
作成したサーバにSSHログインするには、先ほどダウンロードした秘密鍵ファイルを設定して接続します。例えばPuTTYでは「接続」→「SSH」→「認証」メニューの中で設定します。コマンドラインのsshコマンドでは、-iオプションで秘密鍵を指定します。
接続先のIPアドレスはサーバ一覧で確認します(図3)。DBサーバにはグローバルIPアドレスがありません。サーバセットで作成した場合、DBサーバはインターネットに接続しないようになっているのです。よりセキュアな方法を標準で採用する本サービスらしい初期設定です。なお、サーバセットではなく、サーバ単体で作成すれば、グローバルIPアドレスが付与されたDBサーバも作成できます。
各サーバは標準でプライベートLANに接続しています。このプライベートLANは他のユーザーと切り離されている仮想のLANです。DBへはこちらのプライベートLAN側から接続するようにします。DBサーバにSSHでログインするときはWebサーバを経由することになります。
プライベートLANのIPアドレスは、サーバ一覧から各サーバをクリックすると表示できる詳細画面から確認できます(図4)。この画面からはサーバの停止や再起動などの制御や、スペック変更、ディスク追加などの操作ができるようになっています。
EC-CUBEをインストールして使ってみる
それではサーバにログインできるようになったところで、EC-CUBEのインストールに取りかかりましょう。まずはDBサーバでMySQLを起動します。
# chkconfig mysqld on
# service mysqld start
Starting MySQL: [ OK ]
同じくDBサーバでEC-CUBE用のデータベースを作成し、Webサーバから接続できるようにします。
# mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE eccube_db CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON eccube_db.*
TO 'eccube_db'@'WebサーバのプライベートLANアドレス' IDENTIFIED BY 'パスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
Webサーバ側からMySQLに接続できるか確認します。
# mysql -h プライベートLANアドレス -u eccube_db -p eccube_db
Enter password: (パスワードを入力)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> exit
Bye
次に、EC-CUBEのソースコードを展開します。eccube-2.11.1.tar.gzは別途入手し、ホームディレクトリに置いてあるものとします。
# cd /opt
# tar zxvf ~/eccube-2.11.1.tar.gz
/etc/httpd/conf/httpd.confファイルの該当行を次のように変更します。
ServerName WebサーバのグローバルIPアドレス:80
DocumentRoot "/opt/eccube-2.11.1/html"
/etc/php.iniファイルを次の内容に変更します。
[PHP]
memory_limit = 16M
mbstring.language = Japanese
auto_detect_line_endings = on
output_handler = mb_output_handler
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = on
mbstring.detect_order = auto
mbstring.substitute_character = none
magic_quotes_gpc = off
PHPのモジュールをインストールします。
# yum install php-mysql php-mbstring
Apache HTTP Serverを再起動します。
# service httpd stop
# service httpd start
WebサーバのグローバルIPアドレスにWebブラウザでアクセスすると、インストーラ画面になりますので店舗名や管理者用ID、DB接続の情報を入力します(図5)。管理用ログイン画面から設定したIDとパスワードでログインできれば成功です。なお、この手順はあくまでテスト用ということで、セキュリティや細部の設定などについては考慮していません。
このようにテストのためにほんのちょっと利用したい、という場合は月額でなく、時間あたりの従量課金による支払いもできます。使い終わったサーバは削除する必要がありますが、後述するイメージ保存という形で保管も可能です。
サーバの複製やイメージ化で作業効率アップとコストダウン
作成したサーバは、まるごと複製することができます。同じ内容のサーバを複数用意したいときに重宝する機能です。複製したサーバには自動的に新たなグローバルIPアドレスが割り当てられ、OSにも設定済みの状態で起動しますので、すぐにも使える状態となっています。
さらに複製と似たような機能で、イメージ作成があります。複製した状態をサーバイメージとして保管しておき、後からイメージをもとにしたサーバが作成できるというものです。サーバは起動中でも停止中でもサーバリソースを確保した状態であるため、同じ費用が発生しますが、サーバを削除してイメージ状態にしておけば費用はぐっと抑えられます。開発用の実験サーバなどは、従量課金のサーバとイメージ化を組み合わせることで、大きくコストダウンできるでしょう。
複製やイメージ化は他のIaaSにもある機能ですが、スナップショットはVMwareを採用している本サービスならではでしょう。しかも無料で使えます。スナップショットを使うと、サーバの状態を1つだけ保存しておき、必要に応じてその状態に戻すことができます。サーバ上で実験をしたいけど元に戻すのが面倒なときや、OSやミドルウェアのアップデートで問題が発生したら戻すといった用途で活躍します。
WAFが稼働しているか確認する
本サービスのWAFは、各Webサーバにインストールするタイプのものです。初期インストールで選択しましたので、すでに使える状態になっています。うまく動作しているか実際に攻撃をして確認してみましょう。試用版では実際に防御はしませんが、攻撃を検出するとログに記録しますので、動作の確認ができるようになっています。ログファイルは/opt/SiteShell_Apache/logs/audit/audit.logです。
管理用ログイン画面で「' OR 1=1 --」と入力してログインを試みてみましょう。これは初歩的なSQLインジェクション攻撃です。もちろんこの程度の攻撃でEC-CUBEに問題が発生することはなく、ログイン失敗となります。
前述のログファイルには、次のように出力されており、攻撃が検出できていることが分かります。
[2011/07/05 22:29:16][SQL][SQL-0010-02][replace(noaction)][xxx.xxx.xxx.xxx][/admin/][paramValues]login_id=' OR 1=1 --
[2011/07/05 22:29:16][SQL][SQL-0015-02][replace(noaction)][xxx.xxx.xxx.xxx][/admin/][paramValues]login_id=' OR 1=1 --
WAFはWebブラウザで細かく設定することもできます。詳しくはコントロールパネルから入手できるマニュアルを参照してください。
ロードバランサで負荷分散してみる
実運用で大量のアクセスに対応するためには、複数のWebサーバにアクセスを分散させるロードバランサ(以下LB)を用います。本サービスではLBも低価格なオプションとして提供されており、大量のアクセスにも低コストで対応できるようになっています。さきほど作成したEC-CUBEの環境で試してみましょう。
LBで分散するWebサーバは、どれも同じ内容でなければなりません。実運用ではファイル共有などを使って同じコンテンツを維持しますが、ここでは前述のサーバ複製機能で手軽に実現します。
図4の詳細画面にあるサーバ複製ボタンをクリックすると、サーバ作成時のような入力画面になります。入力できるのはサーバ名とメモ、料金プラン、台数で、あとは複製元と同じ内容となります。Webサーバが複製されたら、MySQLでGRANT文を実行してDBへのアクセス許可を追加します。複製されたサーバのIPアドレスにアクセスして、同じEC-CUBEの画面が表示されば成功です。なお、サーバ複製機能はコンテンツだけでなく、サーバの各種設定も複製できます。
次にLBを作成します。メニューの「ロードバランサ」にある「ロードバランサを作成する」をクリックすると、LBの情報を入力する画面になります。LBの名前や、バランス対象にするWebサーバを設定します。作成が完了するとLBの一覧に表示されます(図6)。LBに対して割り当てられたグローバルIPアドレスにブラウザからアクセスすると、内部で登録したWebサーバのいずれかが応答します。ログファイルを確認してみてください。
使い勝手が良く、セキュリティ対策もしっかりしている
サーバ作成からEC-CUBEのインストールまで試してみて、信頼性やセキュリティを重視したサービスだということを実感しました。SLAによる保証や、WAFが初期インストールで容易に組み込めるというのは画期的です。
ECサイトや社内システムなど構築するとき、これは強力なアピールとなります。こういったサイトではダウンタイムはそのまま損失に直結しますし、脆弱性への攻撃によって生じる被害は、はかりしれないものがあります。インフラレベルで信頼性が確保されていれば、それだけ安心につながります。
信頼性を確保した上での実運用も大切ですが、使い勝手の良さも見逃せません。Web開発では、ベータとして早期にリリースした上で、機能追加や洗練を繰り返すという手法をとることが多々あります。日々増加する負荷にも耐えられなければなりません。
このようなケースでは、サーバ追加などの運用がしやすく、なおかつ開発環境としても使えるIaaSサービスであることが求められます。サーバの複製やイメージ作成、スナップショット、従量課金のスキームはこうした要求にマッチします。また、WAFは本来の動作に意図しない影響を及ぼすこともありますが、試用版で検証できるのは、ありがたいと思います。
関連リンク
関連記事
提供:NECビッグローブ株式会社
アイティメディア営業企画/制作:@IT 編集部
掲載内容有効期限:2011年8月26日