# 第6回AWS勉強会 <今日のテーマ> **高可用性の実現** クラウドならではのAutoScailingしたいなら ↓ ## ELB ![Uploading file..._2mpcgl6xx](https://recipe.kc-cloud.jp/wp-content/uploads/2013/02/SnapCrab_NoName_2013-5-22_17-8-34_No-00.png) ### 概要 - AutoScailingの設定ができる - ELBを使った時の、ヘルスチェックのタイプは、ELB - https://qiita.com/Batchi/items/e407a7a3fe0393bb5153 - EC2インスタンスにトラフィックを送信する - AmazonCloudWatchにメトリクスを送信 - EC2のレイテンシが特に長いとか、サーバー高負荷を感知して、AutoScailingの設計に役立つ ### ELB/ヘルスチェックの設定 * ELB配下のインスタンスをAUto Scalingの対象にする場合、ヘルスチェックのタイプをEC2もしくはELBに設定する(選択できる) * EC2の場合:EC2のシステムステータスがImpairedとなった時に異常とみなす * ELBの場合:⬆︎+ELBのヘルスチェックで正常ではない結果状況の時に異常といなす * 異常時:問題のインスタンスを解除した上で新しいインスタンスを起動する事でインスタンス数を維持する。=**Auto Healing** * Auto Scalingで管理されてるEC2を停止するとEC2はTerminateされる→EC2のステータスがRunning以外と判断するのを予防するために、完全に消すって事 ### ELBの種類 ![Uploading file..._pxemvzlj5](https://aws-solutionarchitect-benkyokai-sample.s3.amazonaws.com/1.png) |特徴|Application Load Balancer|Network Load Balancer|Classic Load Balancer| | -------- | -------- | -------- | -------- | |プロトコル|HTTP、HTTPS|TCP、UDP、TLS|TCP、SSL/TLS、HTTP、HTTPS| |プラットフォーム|VPC|VPC|EC2-Classic、VPC| |ヘルスチェック|✔|✔|✔| |CloudWatch メトリクス|✔|✔|✔| |ログ記録|✔|✔|✔| |ゾーンごとのフェイルオーバー|✔|✔|✔| |Connection Draining (登録解除の遅延)|✔|✔|✔| |同一のインスタンスで 複数ポートに負荷分散|✔|✔|| |IPアドレスをターゲットに設定|✔|✔ (TCP、TLS) || |ロードバランサーの削除防止|✔|✔|| |設定可能なアイドル接続の タイムアウト|✔||✔| |クロスゾーン負荷分散|✔|✔|✔| |特徴|Application Load Balancer|Network Load Balancer|Classic Load Balancer| | -------- | -------- | -------- | -------- | |スティッキーセッション|✔||✔| |静的 IP アドレス||✔|| |Elastic IP アドレス||✔|| |送信元 IP アドレスの保持||✔|| |リソースベースの IAM アクセス許可|✔|✔|✔| |タグベースの IAM アクセス許可|✔|✔|| |スロースタート|✔||| |WebSocket 対応|✔|✔|| |PrivateLink のサポート||✔ (TCP、TLS) || |ソース IP アドレス CIDR ベースのルーティング|✔||| https://aws.amazon.com/jp/elasticloadbalancing/features/?nc1=h_ls ### ELBのスティッキーセッション ELB(ALB)がサーバにリクエスト振り分ける際、特定のCookieを確認することで、特定のクライアントからのリクエストを特定のサーバに紐付けることが出来る機能です。 ELBのスティッキーセッションの設定は以下3つのパターンが選択出来ます。 * 維持無し * 2回目以降のアクセスが、別のサーバで処理され、初めてのアクセスと認識されてしまう * ELBによって生成されたCookieの維持 * ELBに、Cookieを付与する機能がある * アプリケーションによって生成されたCookieの維持 * ELBのCookie付与機能を使わずに、ほかのアプリケーションのCookieを利用する http://blog.serverworks.co.jp/tech/2017/01/05/elb-sticky/#ELBCookie ### TLS Termination Transport Layer Security - 証明書管理を宜しくやってくれる ![](https://miro.medium.com/max/1508/1*ibZZVpUe6o2dlg7j8Ek0ow.png) ### ClassicLoadBalancer ![Uploading file..._edytugo3p](https://dmhnzl5mp9mj6.cloudfront.net/application-management_awsblog/images/img1.png) これだと、ELB3つも必要。AutoScailingグループの数だけ作らなきゃいけないなんていやだ。 ### ApplicationLoadBalancer ![Uploading file..._2mpcgl6xx](https://dmhnzl5mp9mj6.cloudfront.net/application-management_awsblog/images/img2.png) https://aws.amazon.com/jp/blogs/devops/introducing-application-load-balancer-unlocking-and-optimizing-architectures/# * 固定IPを設定不可能 ### NetworkLoadBalancer * 固定IPを設定可能 * Elastic IPは、EC2の機能 * クライアントからIPアクセスしたい場合に、この機能を利用する * NLBのネットワーク経路 ![経路](https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2017/09/desc-elb01.png) * アクセス許可設定 * セキュリティグループの設定は、ターゲット側のEC2などでインターネット側のアクセス元を制御すること # ハンズオン ちょっとやってみる ![](https://aws-solutionarchitect-benkyokai-sample.s3.amazonaws.com/groupDiscussion.png) 上記システムをAWSで実現する際に必要なサービスと設定を検討しましょう ## その他 1台のEC2でもELBを使うメリットについてまとめてみました https://dev.classmethod.jp/cloud/aws/benefit_elb_with_one_ec2/ **Global Accelerator** AWS Global Accelerator を使用すると、以下のことができます。 * AWS Global Accelerator が提供する静的 IP アドレスと AWS エッジロケーションからのエニーキャストを、Network Load Balancer、Application Load Balancer、EC2 インスタンス、Elastic IP アドレスなどのリージョン別 AWS リソースまたはエンドポイントに関連付ける。 * DNS 設定の更新または顧客対応アプリケーションの変更を行うことなく、アベイラビリティーゾーンまたは AWS リージョン間のエンドポイントを簡単に移動する。 * エンドポイントグループのトラフィックダイヤルの割合を設定して、特定の AWS リージョンのトラフィックをトラフィックを調整する(これは、パフォーマンスと更新をテストするのに特に役立ちます)。 * エンドポイント間に重みを割り当てることによって、エンドポイントグループ内の各エンドポイントに割り当てられるトラフィック量を制御する。 ### 勉強になったこと セキュリティグループ・・・ステートフル ネットワークACL・・・ステートレス