subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

ELBを使ってEC2へ接続してみる

これまでは、リモートから直接EC2に接続していたが、今回はELBを投入してみることにする。


パブリックサブネットの作成

VPCの構築で、PublicSubnetを2つ作ったが、1つはIGW(Internet Gateway)に接続しているが、もう1つはとりあえず名ばかりのPublicSubnetだったので、ここで名実ともにパブリックサブネットにしてあげる。


VPC > ルートテーブル

IGWに接続しているルートテーブルに、172.16.0.0/16のPublicSubnetを追加する。

「サブネットの関連付け」タブから、サブネットの関連付けの編集を選択。


関連付けたいサブネットを選択


これでパブリックサブネットが2つできた



ALBの作成

EC2 > ロードバランシング > ロードバランサ―

ロードバランサーの作成


ロードバランサーの種類を選ぶ

今回は、ALB(Application Load Balancer)を選択


ALBの設定をしていきます。


  • 名前:好きなものを設定
  • スキーム:クライアントからインターネット経由でリクエストをターゲットに渡すので、「インターネット」を選択
  • リスナー:HTTPで80番ポートを指定


アベイラビリティゾーンは、先ほど作成したパブリックサブネットを指定する


タグの追加


次の手順へ


セキュリティグループは、既存のものを流用


ルーティングの設定


  • 名前:好きなものを設定
  • ターゲットの種類:インスタンス(EC2につなぐ)
  • プロトコル:HTTP
  • ポート:80


ヘルスチェックは80番で受けたポートを3000番に上書きする


インスタンスを選択して、ポートを3000番にしたら「登録済みに追加」をクリック


確認画面で内容確認後、「作成」をクリックしたら、完了。


Blocked hostエラー回避対策

Rails6になったときに、DNSリバインディング攻撃から保護する機能(ミドルウェア)が追加されたそうで、許可するホストを自分で設定してやらねばならないらしい。

Railsガイド(6.0リリースノート)参照


EC2にSSHでアクセスして、config\environments\development.rbをvimで編集する。

ファイルの末尾に下記を追加。

# clear WhiteLists
  config.hosts.clear


いざ、実行!

ALBのステータスがactiveになっていることを確認したら、rails s -b 0.0.0.0 でRailsサーバーを立ち上げる。

ロードバランサーのDNS名をコピー


ブラウザのURLバーに貼り付ければOK!


できた!(満足!)