gitkadoの気まぐれ日記

島根在住エンジニアが何かに興味を持ったらブログを更新します

難しそうなELB(ALB)使ってみた

概要

ロードバランサー=サーバの負荷分散のためにある難しいやつ」
と思っている私が、実際にAWSの「ELB(ALB)」を使ってみた。

ロードバランサーとは

  • 複数サーバでサービスを稼働させてサービスの供給を止めない仕組み
  • Webレイアの負荷分散を行い可用性をあげる
    • 昔は100:0で分散していたが、現在は50:50で分散される

ELB(ElasticLoadBalancer)とは

  • LBのマネージドサービス
  • ヘルスチェック 停止していない正常なインスタンスにリクエストを振り分ける
  • 負荷分散 ぶら下げているEC2に均等に負荷が分散するように振り分ける
  • AutoScaling CPU使用率や時間を基準にサーバ数を一時的に増強して負荷に耐える
  • ELB自体もスケールする
    • LBが負荷に耐えられなくならないように

ELBは3種類ある

ELB種類 説明
ALB (Application) レイア7のロードバランシング
NLB (Network) レイア4のロードバランシング
CLB (Classic) 以前の世代(レイア7, 4)

レイア7 ‥ アプリケーション判断が可能なのでアプリやブラウザ毎に振り分けられる

単一障害点(SPOF)をなくす設計

  • DB層はRDSでMaster-Slave構成を取る
  • NATインスタンスではなくNAT-GWを使用する
  • ElasticCache(インメモリキャッシュ)のレプリケーション機能
  • メールサーバはSES(SimpleEmailService)を使用する

ELB設計ポイント

  • アベイラビリティゾーンをまたがったサーバ配置
    • 1つのAZに何らかの障害が発生した際にシステムがダウンしないように
  • ステートレスなアプリケーション構築
    • サーバ依存な設計にならないように(ログや登録データ/ファイルはS3やRDSへ)
    • AutoScalingに対応できるように

実際に触ってみた

ELB基礎(負荷分散)

  1. VPC>サブネットのpublicサブネット(a/c)
    • 自動割り当てIP設定を有効化
  2. EC2>ロードバランサー 作成
    • ApplicationLoadBalancerを選択
    • 基本的な設定(インターネット向け、ipv4
    • リスナー(HTTP)
    • VPC(自作VPC
    • サブネット(public-a, public-c)
    • ALB用セキュリティグループ(HTTP::0.0.0.0/0)
    • ターゲットグループ(デフォルト値のまま)
    • ヘルスチェック(デフォルト値)
    • ターゲット(EC2インスタンスa/c)「登録済みに追加」
  3. EC2>ロードバランサー
    • DNS名コピー(これで接続が可能)
  4. EC2>ターゲットグループ
    • ターゲット(対象のEC2インスタンスを確認可能)
    • healty の場合はヘルスチェックOKになっているという意味

AutoScaling機能

  1. EC2>起動設定 作成
    • マイAMIのイメージ選択(選択したAMIがAutoScalingで複製される)
    • イメージのインスタンス情報を入力していく
    • セキュリティグループを忘れなく
  2. AutoScalingグループ 作成
    • 開始時インスタンスを2に設定
    • 自作VPCを選択
    • サブネットを選択(public-a, public-c)
    • ロードバランシングにチェック
    • 先ほど作成したターゲットグループを選択
    • ヘルスチェックのタイプでELBを選択
    • スケーリングポリシーを使用してキャパシティを調整するにチェック
    • スケーリング範囲を2~4に設定(インスタンスの最小/最大サイズ)
    • グループサイズ増加/減少設定
      • アラームの作成 増減条件を入力(CPU使用率など)
      • アクションを実行 増減インスタンス数を入力

まとめ

触るまでは難しそうだったけど、ELBめっちゃ簡単で最高でした!
EC2インスタンスはAMIでクローン作れるので準備もGUI上でチョチョイのチョイ

参考

Udemy:手を動かしながら2週間で学ぶAWSの基基本から応用まで