ELBの概要と勘所
2016/11/14
ユースケースから学ぶAWS勉強会
クラスメソッド 渡辺修司
渡辺修司のこと
• クラスメソッド
AWSコンサルティング
Jenkins(定期ジョブ)
構築自動化(Ansible)
• プログラミング
Java, JavaScript, Groovy, Ruby
ユニットテスト
• 趣味
ロードバイク(夏)
スノーボード(冬)
今日お話すること
• ELBはAWSが提供する格安ロードバランサ
• ELBで高可用性設計
• ELBで高負荷対応
• スケールアップよりスケールアウト
ロードバランサ(負荷分散)
スケールアップとスケールアウト
スケールアップ
• シングルサーバの限界
高性能のサーバで処理能力Up
ある程度までは可能だが、一定水準から高額
故障のリスク
• 可用性の問題
障害発生が即時にサービス停止になる
「絶対に止まらない」サーバは存在しない
• 普及帯のサーバは相対的に安い
スケールアウト
• 普及帯サーバを増やして対応
調達しやすい
1台が故障してもサービス停止にならない
アクセス増でもサーバを増やせば良い
• 複数台に分散して処理を捌く
適切に処理を分散する仕組み(ロードバランサ)
分散処理される前提のシステム
ロードバランサの基本機能
1. 処理の分散
2. 死活監視
3. SSLアクセラレーション
基本機能① ー 処理の分散
• ロードバランサは配下のサーバに処理を転送
• 転送先のサーバは不定
ラウンドロビン:均等に分散
リーストコネクション:最小の接続数サーバへ
基本機能② ー 死活監視
• 配下のサーバを死活監視
異常サーバには処理を転送しない
基本機能③ ー SSLアクセラレーション
• ロードバランサでSSL処理を行う
サーバへはHTTPで転送(負荷減少)
証明書を一個所で管理
ロードバランサの種類
• ハードウェア・ロードバランサ
高額(安い製品でも100万円程度)
高性能回線も必須
製品例
F5 BIG-IP
Hitachi Netwiser
• ソフトウェア・ロードバランサ
オープンソースでもある
処理能力はハードウェアに敵わない
設定や運用が大変
ELB (Elastic Load Balancing)
• AWSの提供するサービス
• 簡単に、すぐ、利用できる
• 基本的な機能はすべて利用できる
• 安価($0.027/h = 約3,000円/月)
• フルマネージドで運用の手間がほとんどない
• 高負荷対応
• 柔軟な設定や高度な設定はできない
ELBの用途
負荷対策
• スケールアウトでの処理能力増加
• ある程度までは線形に処理能力アップ
データベースのボトルネックに注意
高可用性
• 複数インスタンスならば故障の影響は少
「稀に不調になる」という意識を持つ
• AZ(データセンター)障害への対策
スケールアップよりスケールアウト
• 障害発生時の連鎖障害対策
 2台構成時は処理能力50%減
 4台構成時は処理能力25%減
• サーバ台数を調整しやすい
 1万ユーザ対応サーバを10台
 2万ユーザ対応サーバを5台
• 数十台でも可能
現実的には4-10台付近に調整
DMZ(非武装地帯)
• サーバへの直接アクセスを防止
• HTTP(s)アクセス可能なネットワークを制限
• 1台構成であっても有効
ELBの機能
ヘルスチェック(死活監視)
• ヘルスチェック用パスを設定
例) 30秒毎にチェックし、4回連続の失敗
• アンヘルシーインスタンスには転送しない
• チェック成功で復旧
SSLサポート
• ELBでSSLアクセラレーション
HTTPS -> HTTP
HTTP -> HTTP
• マネジメントコンソールから証明書を登録
スティッキーセッション
• 同一セッションを同じサーバに転送
• デフォルトでは無効
• DBなどでセッション情報を共有がベター
システム開発時の注意
• 転送されるサーバは不定である前提
ローカルファイル
全サーバは同様に振る舞う
• 状態(ステート)は外部に保存
ステートレスが理想
データベース(RDS, ElasticCache)
ストレージ(S3)
• ステートフルからステートレスへの変更は困難
最初にステートレスにしておく
1台→2台は困難、2台→N台は容易
モニタリング
• アクセス数
• ヘルシーホスト数
• 40xエラー/50xエラー数
アクセスロギング
• ELBのアクセスログをS3に保存
timestamp, status code, useragent, etc…
• 障害発生時の情報
2014-03-07T07:25:38.285777Z elber 130.0.237.XX:37522 172.31.4.218:80 0.000066 0.00105 0.000037 404 404 0 570 "GET
http://54.249.27.XX:80/actus4/ HTTP/1.1"
2014-03-07T07:26:43.731149Z elber 77.50.22.XXX:53477 172.31.4.218:80 0.000053 0.000866 0.000053 200 200 0 10
"GET http://54.249.27.XX:80/ HTTP/1.0"
2014-03-07T07:26:44.410747Z elber 77.50.22.XXX:53656 172.31.4.218:80 0.000052 0.000853 0.000039 404 404 0 168
"GET http://54.249.27.XX:80/foltia/ HTTP/1.0"
2014-03-07T07:26:45.084730Z elber 77.50.22.XXX:53839 172.31.4.218:80 0.000061 0.000874 0.000035 404 404 0 168
"GET http://54.249.27.XX:80/epgrec/do-record.sh HTTP/1.0"
2014-03-07T07:28:12.386207Z elber 189.206.75.XX:64289 172.31.4.218:80 0.000062 0.000924 0.000035 404 404 0 168
"GET http://54.249.27.XX:80/manager/html HTTP/1.1"
まとめ
まとめ
• 簡単に安価に利用できるロードバランサ
• サーバはマルチAZ構成を推奨
スケールアップよりスケールアウト
• 高負荷アクセス対策
必要に応じて追加
• 高可用性構成には必須
• SSL証明書の管理
• モニタリングやロギング機能も有効
• セッション情報などステートフルな部分に注意
• 参考(Blackbelt)
 http://aws.typepad.com/sajp/2015/05/aws-black-belt-elb.html
ELBの概要と勘所

ELBの概要と勘所