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

249 Views

December 26, 22

スライド概要

JAWS FESTA 中四国 2017 in 愛媛松山 の登壇資料です

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

週末趣味のAWS Elastic Beanstalk 編 Health Check Type

2.

免責事項 本資料並びにセッションでの発言は私個人の調査や情報 収集および実践に基づいて構成したものです したがって所属企業やAWS等、私個人以外の如何なるも のの意見を代表するものではありません 本セッションでの内容に起因して損害が生じた場合におい ても、発表者はその責任を負うことができません

3.

自己紹介 氏名:難波 和生 株式会社リゾーム 所属 Twitter:@kazu_0 職業:ネットワークオペレータ :サーバ・NWのインフラ担当 :レイヤー4までの人です 趣味:車の運転 :映画鑑賞・音楽鑑賞 :「週末趣味のAWS」「週末趣味のAzure」など 週末趣味シリーズ

4.

Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事 • 時間があればデモ環境のご紹介

5.

Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介

6.

Elastic Beanstalk • 使うようになったキッカケ • 新しい案件でコンテナを使ってみることに • そういえば Beanstalk が ECS を使った マルチコンテナ構成が可能になったらしいよ • じゃ、Beanstalk 使ってみよっか

7.

Elastic Beanstalkって? • AWSが提供するクラウド環境作成・構成管理ツール • Beanstalkを使うと色々なAWSサービスを 組み合わせて環境を構築してくれます

8.

Elastic Beanstalkって? • Beanstalkで作成された個々の環境を確認することで、 AWSサービスの学習することもできます • EC2、Security Group、ELB、ECS、Cloudformation

9.

Elastic Beanstalkって? • ドキュメントも豊富 • AWS Elastic Beanstalk 開発者ガイド • pdf版は1037ページのボリューム感 • チュートリアル や サンプルアプリケーションも豊富 • お手軽にためしてみることができます

10.

Elastic Beanstalkって? • 大きな枠 Application • Beanstalkで作成するアプリケーション • 小さな枠 Enviroment (環境) • Application 内の「環境」というパーツを 組み合わせて個々の機能を構成する

11.

Elastic Beanstalkって? • Application 内で異なるバージョンの Enviroment(環境) Application 01 Env ironment 02 Elastic Beanstalk Environment 01 Environment 02 Environment 03 Nginx Proxy PHP-fpm (Version 8.2) Env ironment 03 Application 02 Environment 01 Environment 02 Environment 03 Nginx Proxy PHP-fpm (Version 9.1)

12.

Elastic Beanstalkって? • Application 内で異なる機能の Enviroment(環境) Application 01 Env ironment 01 Elastic Beanstalk Environment 01 Environment 02 Environment 03 Nginx Proxy PHP-fpm (nextcloud) Env ironment 02 Application 02 Environment 01 Environment 02 Environment 03 Private registry (docker private registry)

13.

複数コンテナ 環境(multi-container docker) • ECS(EC2 Container Service)で コンテナが稼働します • 「Dockerrun.aws.json」が設計図 • containerDefinitionsでコンテナの環境を定義 • メモリ割当、ポート番号、マウントポイント などなど

14.

複数コンテナ 環境(multi-container docker) • 細かい設定をするときには少しコツがある • 「ebextentions」 というファイルで項目を設定 • ELB 、 AutoScaling 、Security Group などなど

15.

複数コンテナ 環境(multi-container docker) • 負荷に合わせてスケールする Enviroment (環境)は • 起動したときに完成した状態になっていることが必要 • コンテナホストやコンテナには状態を持たせない

16.

Elastic Beanstalkって? • Beanstalk の構成は CodeCommit などで管理できる

17.

Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事

18.

Beanstalk利用時に気を付けたほうが良い事 • とても便利な Beanstalk なのですが multi-container docker 環境を利用するときに 気を付けたほうが良いかなと思ったことをお話します

19.

Beanstalk利用時に気を付けたほうが良い事 Beanstalk multi-container docker 環境の オートスケーリング グループ ヘルスチェックタイプは 標準の「EC2」より「ELB」の方がよいのではないか 説

20.

こんな事がありました • あれ? Beanstalk アプリケーションが止まってる。。。 • ヘルスチェックのステータスは「Severe(赤色)」 • ブラウザでサイト表示すると「 502 Bad Gateway 」

21.

こんな事がありました • どうやら OOM Killer の発動でコンテナホストの Dockerプロセスが影響をうけたみたいだ • EC2のサイズは「m4.xlarge」のmulti AZ 構成 • WEBに公開されたサービス運用の怖さ。。

22.

こんな事がありました • そこでこんな疑問が • ヘルスチェックのステータスが「Severe(赤色)」なのに Auto Scaling グループから外れないの?

23.

動作検証してみよう • 動作検証した環境 • platform: 64bit amazon linux 2017.03 v2.7.1 running multi-container docker 17.03.1-ce (generic)

24.

動作検証してみよう • コンテナホストの Docker プロセスを再起動させてみる • Docker プロセス再起動後のコンテナ稼働状況を確認 • 「eb health」コマンドで稼働状況をウォッチ

25.

動作検証で分かったこと • dockerプロセスがOOM killerなどによって停止された 場合、dockerプロセスは自動復旧しない • Systemd Unit の「Restart = always」的な設定なし • dockerプロセスが何らかの原因で再起動された場合、 ecs-agent コンテナは自動復旧しない

26.

動作検証で分かったこと • ecs タスクを再開するには 「start ecs」でecs-agentコ ンテナを起動する必要がある • ecs-agentコンテナに --restart=always など自動復旧 の仕組みは設定されていない

27.

動作検証で分かったこと • オートスケーリング グループにアタッチされたコンテナ ホスト(EC2)全ての ヘルスエージェント ステータスが 「Severe」になっていても、「Health Check Type」が標準 の「EC2」になっている環境では、ELB の health ステー タスは「Healthy」 状態のままとなり、そのまま稼働し続 ける。

28.

動作検証で分かったこと • この時、サービスの状態は 「502 Bad Gateway」のままとなる。

29.

Beanstalk利用時に気を付けたほうが良い事 • デモ してみます。

30.

Beanstalk利用時に気を付けたほうが良い事 • 「Health Check Type」がELBの場合 • 障害が発生したEC2はオートスケーリンググループから外れる • 新しいEC2がローンチされてグループに参加する • グループから外れたEC2はターミネートされる

31.

Beanstalk利用時に気を付けたほうが良い事 Beanstalk Multi Docker環境では ECSエージェントの コンテナがとっても 重要なのさ

32.

Elastic Beanstalk • 本日のアジェンダ • Elastic Beanstalk のご紹介 • Elastic Beanstalk 利用時に気を付けた方が良い事 • 時間があればデモ環境のご紹介

33.

デモ環境(ghost:1.14-alpine) certificate manager festa-ghost.us-west-2.elasticbeanstalk.com ↓ festa2017.std-adhocracy.net Amazon Route 53 AWS WAF Application Load Balancer Amazon ECR application deployment EC2 compute container Amazon EFS /var/lib/ghost/content ECR registry Elastic Beanstalk container Amazon Aurora EC2 compute container deployment AWS CodeCommit

34.

IPv4/IPv6 Dual Stack • 今回の環境は「IPv4/IPv6デュアルスタック」

35.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • VPCの設定 • VPCで「Edit CIDRs」 • 「Add Ipv6 CIDR」 • /56のIPv6プレフィックス

36.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • /56のIPv6プレフィックスって? • 「2の64乗(=1844京6744兆0737億0955万1616)個のアドレスを 持つサブネット」を256個作れるグローバルアドレス

37.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Subnets の設定 • 「Edit IPv6 CIDRs」 • Add IPv6 CIDR • /64のIPv6プレフィックス

38.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Route Tables の設定 • 「::/0」 Ipv6 デフォルトルート設定

39.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • ELB の設定 • 「Edit IP address type」 • 「dualstack」を選択

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.

IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • R53 の設定 • 「Type:AAAA」 • Aliasレコードをターゲット ELBに設定

42.

週末趣味のAWS Elastic Beanstalk編 • まとめ • Elastic Beanstalk は便利なシステム構成管理ツール • オートスケーリング ヘルスチェックタイプ は 「EC2」 か 「ELB」 どちらにするか検討しよう • IPv4/IPv6 Dual Stack 対応も簡単

43.

週末趣味のAWS Elastic Beanstalk編 ご清聴ありがとうございました