2016/12/01

AWSでWebサービスを構築01 前知識

クラウドプラットフォームの出現で、現在ではWebサービスを1人でも構築できる世の中になった。
有名なプラットフォームはそれぞれ特徴があるが、最も柔軟なプラットフォームの1つがAWS(Amazon Web Service)だ。

このシリーズでは、AWS上で一般的なWebサービスを作っていく際の、サーバクラスタの構築過程を説明する。
AWS EC2を使用するが、EC2は仮想サーバを作るサービスなので、これを使うと大抵のことはできるが、その分構築にかかる工数が多くなる。
サービスに内容によってはもっとサクッと作ることができる場合もあるので、あくまでも参考までにしてほしい。


前知識


近代のサーバは、仮想サーバで構築されていることが多い。
仮想サーバとは、VirtualBoxやVMWareのように、ソフトウェア上でOSをエミュレーションするもの。



物理サーバ内にOS(ホストOS)がインストールされていて、そのOS上で複数のOS(ゲストOS)が動作する。そのゲストOSがそれぞれ仮想サーバになるわけだ。
1つの仮想サーバは「サーバインスタンス」とか、単に「インスタンス」とか呼ばれる。
上図の例は、ホストOS上でサーバインスタンスが3つ起動している、と表現される。


仮想サーバの利点は「1台の物理サーバ上に複数起動できる」「状態管理が楽」などが挙げられるが、何といってもバックアップやリストア・複製が容易な点があげられる。
仮想サーバのバックアップ(のようなもの)をマシンイメージなどと呼ぶ。

マシンイメージを作成して仮想サーバを運用する際には、次のような手続きをとる。
  1. 1台のサーバを構築する。
  2. そのサーバからマシンイメージを作成する。
  3. そのマシンイメージからサーバを復元したり、複数同じ動作をするサーバを起動したりする。
  4. 必要ならサーバに修正を加えて、2に戻る。

一度マシンイメージを作成すると、そのイメージから何台でもサーバを起動することができる。
同じイメージから起動されたサーバは、同じファイル構成と同じ設定情報を持つ、まさにコピーとなる。



マシンイメージから同仕様のサーバを量産できる。

そもそも、なんでそんなに同じ仕様のサーバが何台も必要なのか?
理由はそれぞれだろうが、負荷分散ための多重化がほとんどだろう。
商売に使用するサーバなどはアクセスも多く、多重化しないと負荷に耐えられない。


また、サーバの種類もたくさんあって、MySQLなどが動作するデータベース(DB)サーバ、メール送信に使用するSMTPサーバ、Apache + PHPが動作するアプリケーション(AP)サーバなど多岐にわたる。先ほどの多重化と合わせると、当然サーバの台数も多くなるだろう。
サーバ群を作成する際に、近代では仮想ネットワークを構築し、この中にサーバ群を囲ってしまう方法がとられる。
仮想ネットワークとは仮想のLANみたいなもの。
LAN外からLAN内へのアクセスが制限されるのと同様に、仮想ネットワーク外から仮想ネットワーク内へのアクセス制限を簡単にかけられる。(もちろんその逆も可)




仮想ネットワークのイメージ

例えば、データベースサーバを作った場合のことを考える。
データベースにはApacheなんかが動いているAPサーバからのみアクセスできればよくて、一般のユーザがDBサーバに直接アクセスする必要はない。というか、アクセスして欲しくない。
そういう場合は、仮想ネットワーク内のみお互い自由にアクセスできるようにしておいて、仮想ネットワークの外からはAPサーバのみにアクセスできるようにしておくと、有効なアクセス制限ができる。
なので、サーバ群を仮想ネットワークで囲むのは、セキュリティ上の基本といってもいい。


目標


このシリーズでは、まず一般的なWebサーバクラスタをAWS上に作ることを目的とする。

クラスタが提供するサービスの内容は、PHP+Apacheで動作するWebアプリケーションを想定する。
また、そのアプリケーションがMySQLなどデータベースを参照するものとする。
一部はEC2サーバでの構築ではなくAWSの別サービスを代用する。
(こっちの方が自分で作るより管理が楽だし、安定性も高いことが多い)

それらのサーバ群を仮想ネットワークで囲む。これはAWSの仮想ネットワークサービス「VPC」を使用する。


シリーズの目標を立てただけだが長くなったので、具体的な構築は次回から説明する。

0 件のコメント:

コメントを投稿