ジャギ様のAWSチャレンジ

awsに関したことを書きます。

Mattermost構築の流れ(手動編)Part6 ALB

ALB

用途

ALBはユーザからのリクエストを受けて、そのリクエストはEC2に分散するものです。 ALBにEC2に直接紐づけることはできなくて、EC2が所属するグループを作ってそのグループを紐づけるやり方になってます。そのグループはターゲットグループと呼びます。 PC等からのリクエスト→ALB→TAGETGROUP→EC2といった感じです。サイトをHTTPS化するのにもALBは必要だった気がします。

ターゲットグループの作成

  • ここではALBに登録するEC2のグループを作成します。
  • EC2の左メニューのターゲットグループをクリック

  • Create target groupボタンをクリック

  • Specify group details画面が起動するので以下の設定をしてnextボタンをクリック

    • Basic configuration
      • Choose a target type: Instances
      • Target group name: mattermost-ec2-targetgroup
      • Protocol - Port: HTTP 8065
      • VPC: mattermost-vpc
      • Protocol version: HTTP1
    • Health checks
      • Health check protocol: HTTP
      • Health check path: /
      • Advanced health check settings: (デフォルト設定でOK)
    • Attributes
      • (デフォルト設定でOK)
    • Tags - optional
      • Key: Name
      • Value: mattermost-ec2-targetgroup
  • Register targets画面が起動するので以下の設定をしてcreate target groupボタンをクリック

    • グループに追加するEC2(mattermost-server01)にチェックを入れ、 include as pending belowボタンをクリック
    • Review targetsにチェックを入れたインスタンスが表示されるので、さらっと確認します。

ALBのセキュリティグループの作成

  • これはユーザからのリクエストをALBに受けるためのセキュリティグループです。
  • AWSコンソール画面の検索窓に「セキュリティグループ」と入力→セキュリティグループをクリック→セキュリティグループを作成ボタンをクリック
画面 設定項目 設定値
基本的な詳細 セキュリティグループ名 mattermost-alb-sg
説明 Security group applied to Mattermost ALB
VPC mattermost-vpc
インバウンドルール1 タイプ HTTPS
プロトコル TCP
ポート範囲 443
ソース AnywhereIPv4
説明 - オプション Allow inbound communication on port443 from source
インバウンドルール2 タイプ HTTP
プロトコル TCP
ポート範囲 80
ソース AnywhereIPv4
説明 - オプション Allow inbound communication on port80 from source
アウトバウンドルール - -
タグ - オプション キー Name
値 - オプション mattermost-alb-sg

ALBの作成

  • EC2の左メニューのロードバランサーをクリックします。

  • ロードバランサーの作成ボタンをクリック(Create load balancerボタンをクリック)
  • Application Load BalancerCreateボタンをクリック
  • Create Application Load Balance画面が起動するので以下の設定をしてCreate load balancerボタンをクリック

How Application Load Balancers work

デフォルト設定でOK

Basic configuration

設定項目 設定値
Load balancer name mattermost-alb
Scheme Internet-facing
IP address type IPv4

Network mapping

設定項目 設定値
VPC mattermost-vpc
Mappings ap-northeast-1にチェックをいれてSubnetはpublicのものを選択
ap-northeast-1cにチェックをいれてSubnetはpublicのものを選択

Security groups

設定項目 設定値
Security groups mattermost-alb-sg
※defaultで表示されているVPCは×で削除してください

Listeners and routing

Listeners
リスナー 設定項目 設定値
Listener HTTP:80 Protocol HTTP
Port 80
Default action mattermost-ec2-group
Key Name
Value alb-listerner-port80
Listener HTTPS:443 Protocol HTTPS
Port 443
Default action mattermost-ec2-group
Key Name
Value alb-listerner-port443
Secure listener settings
設定項目 設定値
Security policy (デフォルト設定でOK)
Default SSL/TLS certificate From ACM
*.jagisama.com

Add-on services

デフォルト設定でOK

Tags - optional

設定項目 設定値
Key Name
Value - optional mattermost-alb

Summary

デフォルト設定でOK

Route 53にサブドメイン追加

  • ここはRoute53の画面の作業で、サブドメインの運用をする設定です。ALBがないと設定ができません。
  • Route53の画面を開く→ 作成したホストゾーンをクリック → レコード作成をクリックします。
画面 設定項目 設定値
レコードのクイック作成 レコード名 toki
※自分の名前でいいと思います。ブラウザからここで設定する名前+ドメインでMattermostにアクセスすることになります。例:https://toki.jagisama.com)重要なので覚えておきましょう。
レコードタイプ A-IPv4 アドレスと一部のAWSリソースにトラフィックをルーティングします。
エイリアス 〇を右側に寄せる
トラフィックのルーティング先 Application Load Balancer と Classic Load Balancer へのエイリアス
アジアパシフィック(東京)[ap-northease-1]
XXXX.masttermost-alb-XXXXX.ap-northease-1.elb.amazonaws.com
※選択できるALBは1つしかないと思います。
ルーティングポリシー (デフォルトのままでOK)
ターゲットのヘルスを評価 はい

この後、Route 53にサブドメインのAレコードが追加されます

(今回は実施しません)ALBでHTTPリクエストをHTTPSにリダイレクト

  • なくてもいいのですが、あると少し便利なので設定します。
  • 最近画面が英語表記になったようだ。画像は日本語のときのものです。
  • ロードバランサーの画面で、作成したロードバランサーをクリック → ListnersのHTTP:80をクリック → Rulesタブをクリック → Manages rulesをクリックするとルールの編集画面が表示sれます。以降は画像に沿って設定します。

↓ 
アクションの追加→リダイレクト先
こうなればOK。設定がうまくいかなくてもhttpでアクセスできないだけなので大丈夫です。