難しそうな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基礎(負荷分散)
- VPC>サブネットのpublicサブネット(a/c)
- 自動割り当てIP設定を有効化
- EC2>ロードバランサー 作成
- EC2>ロードバランサー
- DNS名コピー(これで接続が可能)
- EC2>ターゲットグループ
- ターゲット(対象のEC2インスタンスを確認可能)
- healty の場合はヘルスチェックOKになっているという意味
AutoScaling機能
- EC2>起動設定 作成
- マイAMIのイメージ選択(選択したAMIがAutoScalingで複製される)
- イメージのインスタンス情報を入力していく
- セキュリティグループを忘れなく
- AutoScalingグループ 作成
まとめ
触るまでは難しそうだったけど、ELBめっちゃ簡単で最高でした!
EC2インスタンスはAMIでクローン作れるので準備もGUI上でチョチョイのチョイ