Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

ドキュメント週末趣味のAWS ElasticBeanstalk編 Health Cheack Type

770 vues

Publié le

JAWS FESTA 中四国 2017 in 愛媛松山

登壇したときの資料です

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

ドキュメント週末趣味のAWS ElasticBeanstalk編 Health Cheack Type

  1. 1. 週末趣味のAWS Elastic Beanstalk 編 Health Check Type
  2. 2. 免責事項 本資料並びにセッションでの発言は私個人の調査や情報 収集および実践に基づいて構成したものです したがって所属企業やAWS等、私個人以外の如何なるも のの意見を代表するものではありません 本セッションでの内容に起因して損害が生じた場合におい ても、発表者はその責任を負うことができません
  3. 3. 自己紹介 氏名:難波 和生 株式会社リゾーム 所属 Twitter:@kazu_0 職業:ネットワークオペレータ :サーバ・NWのインフラ担当 :レイヤー4までの人です 趣味:車の運転 :映画鑑賞・音楽鑑賞 :「週末趣味のAWS」「週末趣味のAzure」など 週末趣味シリーズ
  4. 4. Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事 • 時間があればデモ環境のご紹介
  5. 5. Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介
  6. 6. Elastic Beanstalk • 使うようになったキッカケ • 新しい案件でコンテナを使ってみることに • そういえば Beanstalk が ECS を使った マルチコンテナ構成が可能になったらしいよ • じゃ、Beanstalk 使ってみよっか
  7. 7. Elastic Beanstalkって? • AWSが提供するクラウド環境作成・構成管理ツール • Beanstalkを使うと色々なAWSサービスを 組み合わせて環境を構築してくれます
  8. 8. Elastic Beanstalkって? • Beanstalkで作成された個々の環境を確認することで、 AWSサービスの学習することもできます • EC2、Security Group、ELB、ECS、Cloudformation
  9. 9. Elastic Beanstalkって? • ドキュメントも豊富 • AWS Elastic Beanstalk 開発者ガイド • pdf版は1037ページのボリューム感 • チュートリアル や サンプルアプリケーションも豊富 • お手軽にためしてみることができます
  10. 10. Elastic Beanstalkって? • 大きな枠 Application • Beanstalkで作成するアプリケーション • 小さな枠 Enviroment (環境) • Application 内の「環境」というパーツを 組み合わせて個々の機能を構成する
  11. 11. Elastic Beanstalkって? • Application 内で異なるバージョンの Enviroment(環境) Elastic Beanstalk Application 01 Environment 01 Application 02 Environment 02 Environment 03 Environment 01 Environment 02 Environment 03 Environment 02 Nginx Proxy PHP-fpm (Version 8.2) Nginx Proxy PHP-fpm (Version 9.1) Environment 03
  12. 12. Elastic Beanstalkって? • Application 内で異なる機能の Enviroment(環境) Elastic Beanstalk Application 01 Environment 01 Application 02 Environment 02 Environment 03 Environment 01 Environment 02 Environment 03 Environment 01 Nginx Proxy PHP-fpm (nextcloud) Private registry (docker private registry) Environment 02
  13. 13. 複数コンテナ 環境(multi-container docker) • ECS(EC2 Container Service)で コンテナが稼働します • 「Dockerrun.aws.json」が設計図 • containerDefinitionsでコンテナの環境を定義 • メモリ割当、ポート番号、マウントポイント などなど
  14. 14. 複数コンテナ 環境(multi-container docker) • 細かい設定をするときには少しコツがある • 「ebextentions」 というファイルで項目を設定 • ELB 、 AutoScaling 、Security Group などなど
  15. 15. 複数コンテナ 環境(multi-container docker) • 負荷に合わせてスケールする Enviroment (環境)は • 起動したときに完成した状態になっていることが必要 • コンテナホストやコンテナには状態を持たせない
  16. 16. Elastic Beanstalkって? • Beanstalk の構成は CodeCommit などで管理できる
  17. 17. Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事
  18. 18. Beanstalk利用時に気を付けたほうが良い事 • とても便利な Beanstalk なのですが multi-container docker 環境を利用するときに 気を付けたほうが良いかなと思ったことをお話します
  19. 19. Beanstalk利用時に気を付けたほうが良い事 Beanstalk multi-container docker 環境の オートスケーリング グループ ヘルスチェックタイプは 標準の「EC2」より「ELB」の方がよいのではないか 説
  20. 20. こんな事がありました • あれ? Beanstalk アプリケーションが止まってる。。。 • ヘルスチェックのステータスは「Severe(赤色)」 • ブラウザでサイト表示すると「 502 Bad Gateway 」
  21. 21. こんな事がありました • どうやら OOM Killer の発動でコンテナホストの Dockerプロセスが影響をうけたみたいだ • EC2のサイズは「m4.xlarge」のmulti AZ 構成 • WEBに公開されたサービス運用の怖さ。。
  22. 22. こんな事がありました • そこでこんな疑問が • ヘルスチェックのステータスが「Severe(赤色)」なのに Auto Scaling グループから外れないの?
  23. 23. 動作検証してみよう • 動作検証した環境 • platform: 64bit amazon linux 2017.03 v2.7.1 running multi-container docker 17.03.1-ce (generic)
  24. 24. 動作検証してみよう • コンテナホストの Docker プロセスを再起動させてみる • Docker プロセス再起動後のコンテナ稼働状況を確認 • 「eb health」コマンドで稼働状況をウォッチ
  25. 25. 動作検証で分かったこと • dockerプロセスがOOM killerなどによって停止された 場合、dockerプロセスは自動復旧しない • Systemd Unit の「Restart = always」的な設定なし • dockerプロセスが何らかの原因で再起動された場合、 ecs-agent コンテナは自動復旧しない
  26. 26. 動作検証で分かったこと • ecs タスクを再開するには 「start ecs」でecs-agentコ ンテナを起動する必要がある • ecs-agentコンテナに --restart=always など自動復旧 の仕組みは設定されていない
  27. 27. 動作検証で分かったこと • オートスケーリング グループにアタッチされたコンテナ ホスト(EC2)全ての ヘルスエージェント ステータスが 「Severe」になっていても、「Health Check Type」が標準 の「EC2」になっている環境では、ELB の health ステー タスは「Healthy」 状態のままとなり、そのまま稼働し続 ける。
  28. 28. 動作検証で分かったこと • この時、サービスの状態は 「502 Bad Gateway」のままとなる。
  29. 29. Beanstalk利用時に気を付けたほうが良い事 • デモ してみます。
  30. 30. Beanstalk利用時に気を付けたほうが良い事 • 「Health Check Type」がELBの場合 • 障害が発生したEC2はオートスケーリンググループから外れる • 新しいEC2がローンチされてグループに参加する • グループから外れたEC2はターミネートされる
  31. 31. Beanstalk利用時に気を付けたほうが良い事 Beanstalk Multi Docker環境では ECSエージェントの コンテナがとっても 重要なのさ
  32. 32. Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事 • 時間があればデモ環境のご紹介
  33. 33. デモ環境(ghost:1.14-alpine) Elastic Beanstalk container application Application Load Balancer Amazon Aurora Amazon EFS /var/lib/ghost/content AWS WAF AWS CodeCommit deployment deployment EC2 compute container certificate manager EC2 compute container Amazon Route 53 festa-ghost.us-west-2.elasticbeanstalk.com ↓ festa2017.std-adhocracy.net Amazon ECR ECR registry
  34. 34. IPv4/IPv6 Dual Stack • 今回の環境は「IPv4/IPv6デュアルスタック」
  35. 35. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • VPCの設定 • VPCで「Edit CIDRs」 • 「Add Ipv6 CIDR」 • /56のIPv6プレフィックス
  36. 36. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • /56のIPv6プレフィックスって? • 「2の64乗(=1844京6744兆0737億0955万1616)個のアドレスを 持つサブネット」を256個作れるグローバルアドレス
  37. 37. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Subnets の設定 • 「Edit IPv6 CIDRs」 • Add IPv6 CIDR • /64のIPv6プレフィックス
  38. 38. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Route Tables の設定 • 「::/0」 Ipv6 デフォルトルート設定
  39. 39. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • ELB の設定 • 「Edit IP address type」 • 「dualstack」を選択
  40. 40. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • ELB の設定 の設定 「Security Group」 HTTP(80) ::/0 HTTPS(443) ::/0 SGでは Permit ip any any 接続制限はWAFの IP match conditions
  41. 41. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • R53 の設定 • 「Type:AAAA」 • Aliasレコードをターゲット ELBに設定
  42. 42. 週末趣味のAWS Elastic Beanstalk編 • まとめ • Elastic Beanstalk は便利なシステム構成管理ツール • オートスケーリング ヘルスチェックタイプ は 「EC2」 か 「ELB」 どちらにするか検討しよう • IPv4/IPv6 Dual Stack 対応も簡単
  43. 43. 週末趣味のAWS Elastic Beanstalk編 ご清聴ありがとうございました

×