Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

307 views

Published on

JAWS FESTA 中四国 2017 in 愛媛松山

登壇したときの資料です

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ドキュメント週末趣味の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編 ご清聴ありがとうございました

×