0
Help us understand the problem. What are the problem?

posted at

EC2内にexpressで立ち上げたサーバーへALPを介して接続する

ec2内にローカルサーバーを立ち上げる

まずはnode.jsとnpmをインストールします。
公式の手順を参照してさくっと完了。
一応コマンドで確認しておきます。

node -v
npm -v

適当なディレクトリを作成し、expressをインストール。サーバ用jsファイルも作成します。

mkdir sample
npm i express
vi index.js
server.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send('Hello');
});

app.listen(3000, () => console.log("Server started on port 3000"));

ポート3000番でリクエストを受け付けてHelloと返すだけのめちゃくちゃシンプルなAPサーバが出来上がりました。これでEc2内のサーバ準備は完了です。

ターゲットグループの準備

EC2の用意が出来たらターゲットグループを用意します。
ターゲットグループの作成画面から以下のように設定して次へボタンを押します。

  • ターゲットタイプ:インスタンス
  • ターゲットグループ名:任意
  • プロトコル:HTTP、ポート3000(EC2の3000ポートでサーバーを立てているため)
  • その他:デフォルトのまま

次のページでは公開したいEC2を選択し、ポートを指定して保留として以下を含めるボタンを押下、ターゲットを確認欄にインスタンスが追加されたのを確認してターゲットグループを作成ボタンを押します。
image.png

ロードバランサ―の準備

さて、次はいよいよロードバランサ―ですが、そもそもロードバランサ―ってなんだよという人はこの辺りを是非ご参照ください。

ロードバランサ―タイプ

早速ロードバランサ―の設定をしましょう。
EC2ダッシュボードからロードバランサ―を選択して新規作成します。今回はHTTP(S)で接続するのでApplication Load Balancer(ALB)を選択。image.png

ネットワークマッピング

ロードバランサ―の名前(なんでもいい)を決めたらネットワークマッピングを設定。
VPCはEC2と同じものを、マッピングは適当に2つ選んでおきます。
image.png

リスナーとルーティング

次はリスナーとルーティングの設定です。
ALBに対してHTTPリクエストが来た時のアクションを設定します。デフォルトアクションには先ほど登録したターゲットグループを設定しておきます。
SSL証明書を用意しておけば簡単にHTTPSでの接続設定もできます。(この記事を参照)
image.png

セキュリティグループ設定

EC2のセキュリティグループ設定

まずはEC2のセキュリティグループを設定します。
インバウンドルールはポート3000へのリクエストと、ヘルスチェック用のHTTPリクエストのみを受け付ければいいので、以下のようになります。

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 3000 ALPのセキュリティグループ
HTTP TCP 80 ALPのセキュリティグループ

EC2へアクセスするのはALPだけになるので接続元(ソース)もロードバランサ―のみに絞って他から接続されないようにしています。
アウトバウンドルールは無しで大丈夫です。

ALPのセキュリティグループ設定

続いてALPのセキュリティグループの設定もしていきます。
インバウンドルールは以下の通り。クライアントからのHTTP(S)でのリクエストを受けるので全てのソース元からのHTTP(S)通信を許可します。

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

アウトバウンドルールはEC2内のサーバに対するリクエスト、ヘルスチェックでのHTTPリクエストを行うため、下記のように設定します。

タイプ プロトコル ポート範囲 送信先
カスタムTCP TCP 3000 EC2のセキュリティグループ
HTTP TCP 80 EC2のセキュリティグループ

これでセキュリティグループの設定は完了です。
ここまで設定したらEC2内のWebサーバへALPを介してHTTPS接続が可能になっているはずです。

あとがき

ロードバランサ―?ターゲットグループ?何それ美味しいの?状態だった私ですが意外と簡単に設定できるもんなんだなぁという所感であります。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?