EC2とロードバランサでwebサービスを公開する


はじめに

学生がAWSからサーバを借りてウェブサービスを公開する時、EC2 + 固定IPで公開する場合が多いかと思います。
ですが、AWSにはELB(Elastic Load Balancing)というサービスがあり、後述する理由でそれを使う方が良いです。せっかくなので,使ってみましょう
ここでは、EC2単体ではない一歩進んだWebサービス公開の方法を紹介します。

ロードバランサ設置のメリット

WEBサーバが1台でもELBをおいた方がいい理由はこちら書かれています
- https://dev.classmethod.jp/cloud/aws/benefit_elb_with_one_ec2/

負荷分散目的で設置されるロードバランサですが、次の理由でサーバが1台でもロードバランサを設置した方が良いらしいです。

  • インスタンス(仮想マシンのこと)の差し替えが容易
  • ELB(ロードバランサのこと)のヘルスチェックで死活監視が可能。別のサービスで通知も可能に
  • 無料SSL証明書(ドメイン証明書)が利用できる
  • などなど

AWSアカウントの準備

これまでは、クレジットカードが無ければAWSのアカウントを作ることはできませんでした。
でももし、あなたが学生ならばAWS Educateで、クレジットカード不要で無料枠のサービスを使うことができます。

EC2インスタンスの準備

  1. AWSのEC2コンソールを開く
  2. 「インスタンスの作成」をクリック!
  3. 無料枠で使えるインスタンスを選択(ここでは、Amazon Linux 2 AMI (HVM), SSD Volume Type)
  4. インスタンスタイプはここではt2.microを選択
  5. 次のステップはデフォルトで「次のステップ: ストレージの追加」をクリック
  6. ステップ4: ストレージの追加 も設定はデフォルトで「次のステップ: タグの追加」をクリック
  7. 以下のタグを設定したうえで、「次の手順: セキュリティグループの設定」をクリック
キー
Name (任意の名前)
  1. セキュリティグループの設定を以下のようにする(ルールの追加で追加できる) セキュリティーの警告が出るかもしれないが、「起動」を行う
タイプ プロトコル ポート範囲 ソース
SSH TCP 22 0.0.0.0/0
HTTP TCP 80 0.0.0.0/0
  1. 新しいキーペアの作成で、SSHのためのキーペアを作成するを選択し、インスタンスを作成

ロードバランサの設置

  1. EC2コンソールを開く
  2. 左側のメニューバーから「ロードバランサー」選択
  3. 「ロードバランサーの作成」を選択する
  4. 「Application Load Balancer」の「作成」をクリック
  5. 名前は何か任意につけ、「リスナー」でHTTP 80番ポートとなっていることを確認。アベイラビリティーゾーン(AZ)では、先ほどのEC2があるところを選択。進むわからない場合はあとでも追加できるのでとりあえずどれかを選択。「セキュリティグループの設定」をクリック

6.「新しいセキュリティグループを作成する」 を選択し、任意のセキュリティーグループ名と、次のように設定し、「次の手順: ルーティングの設定」 をクリック

タイプ プロトコル ポート範囲 ソース
HTTP TCP 80 0.0.0.0/0

7.以下のように設定し、残りの設定はデフォルトのままで、「次の手順: ターゲットの登録」をクリック

ターゲットグループ 名前 ターゲットの種類
新しいターゲットグループ 先ほどのセキュリティーグループ名 インスタンス

8.最初作ったEC2インスタンスを選択し、「登録済みに追加」。次の手順に進む
9 「作成」!

サーバーアプリケーションのインストール

  1. 先ほど作ったインスタンスにSSH接続
    • 「EC2ダッシュボード」->「接続」にssh接続の方法が書いてあります
  2. 以下のコマンドでApacheをインストール・再起動
sudo yum -y install httpd
sudo service httpd start

アクセス

  1. まずはEC2のパブリックIP(EC2コンソールから確認)にアクセスしてみましょう
  2. 次にロードバランサのDNS名でアクセスしてみましょう
  3. /var/www/html/が公開ディレクトリです.何か置いてみましょう

Route53を使用してELBにドメインを設定

というのをしたかったのですが、学生用のAWS Educateでの、Route 53で発行できる無料の新規ドメイン名がわからなかったので、やっていません。

終わりに

N番煎じだったり、セキュリティのあたりなど様々な設定をもっとしていかないといけないと思いますが、ひとまず一連の流れはこのようになります。