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 Elastic Beanstalk 編

561 views

Published on

第7回 Amazonクラウド(JAWS-UG) 岡山

参考URL
・storage-efs-mountfilesystem.config

https://github.com/awslabs/elastic-beanstalk-docs/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-mountfilesystem.config

・Beansralk Docker Multi container : pulling docker image from private registry

http://qiita.com/kazu_0/private/072e716d7e7352d4015e

・Analyzing VPC Flow Logs with Amazon Kinesis Firehose, Amazon Athena, and Amazon QuickSight

https://aws.amazon.com/jp/blogs/big-data/analyzing-vpc-flow-logs-with-amazon-kinesis-firehose-amazon-athena-and-amazon-quicksight/

・S3のデータをAmazon Athenaを使って分析する
https://aws.amazon.com/jp/blogs/news/analyzing-data-in-s3-using-amazon-athena/

Published in: Engineering
  • Be the first to comment

ドキュメント週末趣味のAWS Elastic Beanstalk 編

  1. 1. 週末趣味のAWS Elastic Beanstalk 編
  2. 2. 免責事項 本資料並びにセッションでの発言は私個人の調査や情報 収集および実践に基づいて構成したものです したがって所属企業やAWS等、私個人以外の如何なるも のの意見を代表するものではありません 本セッションでの内容に起因して損害が生じた場合におい ても、発表者はその責任を負うことができません
  3. 3. 自己紹介 氏名:難波 和生 株式会社リゾーム 所属 Twitter:@kazu_0 職業:ネットワークオペレータ :サーバ・NWのインフラ担当 :レイヤー4までの人です 趣味:車の運転 :映画鑑賞・音楽鑑賞 :「週末趣味のAWS」「週末趣味のAzure」など 週末趣味シリーズ
  4. 4. Elastic Beanstalk • 使うようになったキッカケ • 新しい案件でコンテナを使ってみることに • そういえば Beanstalk が ECS を使ったマルチコンテナ構成 が可能になったらしいよ • じゃ、Beanstalk 使ってみよっか
  5. 5. Elastic Beanstalk • その頃のクラウドインフラのトレンドは。。 • CloudFormation とか terraform などが話題に • きっと Beanstalk って便利ツールに違いない • AWS環境にとっても詳しい人とお話してみると。。
  6. 6. Elastic Beanstalk 自分でEC2を ローンチしたら 負けなのさ
  7. 7. Elastic Beanstalk • 実際のところ、、 • AWSリソースの構成管理をしてくれる、とっても便利なツール • ただ、とっても簡単ではない。。 • 最低限のECSやELB、CloudFomation Stack の知識があった方が 幸せになれます
  8. 8. Elastic Beanstalkって? • AWSが提供するクラウド環境作成・構成管理ツール • Beanstalkを使うとAWSのサービスを組み合わせて環境を構築 してくれます • Beanstalkで作成された個々の環境を確認することで、AWS サービスの学習することもできます • EC2、Security Group、ELB、ECS、Cloudformation
  9. 9. 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
  10. 10. 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
  11. 11. 環境構築の方針 • カスタムAMI ではなく .ebextentions で環境を作成 • コンテナイメージはオフィシャルを使う • できるだけ AWS Well-Architected Framework に沿った環境
  12. 12. 今回の環境構成 • Multicontainer Docker Environments • Application Load Balancer(ELB) • Beanstalk の構成管理は「CodeCommit」
  13. 13. 今回のBeanstalk環境構成 • アプリケーションは「Nextcloud」 • データベースはRDS(Amazon Aurora) • 永続性データの保存にEFS( Elastic File System) • ユーザ管理に「AWS Directory Service」
  14. 14. 構成図です Oreg-VPC218-Ap2-2b application Amazon EFS Oreg-VPC218-ap1-2c application Elastic Load Balancing AWS Elastic Beanstalk AWS Elastic Beanstalk /efs (Host NFS) /var/www/html/config /var/www/html/data /var/www/html/apps /efs (Host NFS) /var/www/html/config /var/www/html/data /var/www/html/apps Amazon Aurora certificate manager *.std-adhocracy.net. AWS Directory Service AWS WAF Amazon Route 53
  15. 15. 事前準備リスト • VPC・サブネット と RDS を作成 • EFS( Elastic File System)を作成 • 「AWS Directory Service」で simple AD を作成
  16. 16. 事前準備リスト • ACM ( AWS Certificate Manager )でSSL証明書作成 • ECR(EC2 Container Registry)準備 • Beanstalk にデプロイするファイル準備
  17. 17. 事前準備(VPC・RDS) サブネット IPアドレスプレフィックス アベイラビリティゾーン subnet-97aa55cf | Oreg-VPC218-ap1-2c 172.22.218.64/26 c subnet-d7d47fa1 | Oreg-VPC218-ap2-2b 172.22.218.128/26 b subnet-cc097594 | Oreg-VPC218-db1-2c 172.22.218.192/27 c subnet-710c0107 | Oreg-VPC218-db2-2b 172.22.218.224/27 b • RDSを作成 • VPCとサブネットを作成 DB Engine Multi AZ Aurora No
  18. 18. 事前準備(EFS) • EFS( Elastic File System)を作成 Mount Point(/efs) Amazon EFS config application Auto Scaling group Mount Point(/efs) Data Volume data apps application EC2 compute container EC2 compute container NFS Data Volume Data Volume
  19. 19. 事前準備(EFS) • EFS( Elastic File System)を作成 • Multi-AZ構成で複数のサブネットにマウントターゲットを作成
  20. 20. 事前準備 (Directory Service) Details Directory name jaws-ug.ok2017.local NetBIOS name JAWSUG Subnets Oreg-VPC218-ap1-2c | subnet-97aa55cf Oreg-VPC218-ap2-2b | subnet-d7d47fa1 DNS Address 172.22.218.163 172.22.218.111 • 「Simple AD」で認証環境を作成 • VPCの「DHCP Option Set」 を設定
  21. 21. 事前準備 (AWS Certificate Manager) Details Domain name *.your-domain.net(wild card) ARN arn:aws:acm:us-west-2:your-id:certificate/Identifier • SSL証明書作成 • ARNをBeanstalk環境(ebextentions)へ設置します • ACMあるある • 自動更新には条件があります • 証明書に記載されているFQDNが名前解決可能 • 証明書がAWSリソースに関連付けされており使用されている • 関連付けしているAWSリソースがインターネットから接続できる
  22. 22. 事前準備 (AWS Certificate Manager) • 内部向けELBに割り当てしている ACMは自動更新されないので注意 • 手動更新はメールが届きます • 英語メールなので見落とし注意 • http://qiita.com/kazu_0/private/072e716d7e7352d4015e 内向きELB
  23. 23. 事前準備 (Identity and Access Management) • 「role」を設定 aws-elasticbeanstalk-ec2-role AWSElasticBeanstalkWebTier AWSElasticBeanstalkWorkerTier AWSElasticBeanstalkMulticontainerDocker AmazonEC2ContainerServiceforEC2Role CloudWatchLogsFullAccess AmazonEC2RoleforSSM aws-elasticbeanstalk-service-role AWSElasticBeanstalkEnhancedHealth AWSElasticBeanstalkService
  24. 24. 事前準備 (EC2 Container Registry) • Docker logon の認証なしでコンテナイメージをpull できるように「elasticbeanstalk-ec2-role」に 「permissions」を設定
  25. 25. Beanstalk環境の作成 • Beanstalk にデプロイするファイル準備 • .ebextensions • EB環境の設定、AWSリソースのカスタマイズ • .elasticbeanstalk config.yml • EB環境設定時(eb init)に自動生成 • Dockerrun.aws.json • 設定ファイルやコンテンツと組み合わせて、Docker プラットフォーム上に環境を作成 • デプロイ時に展開したいコンテンツ • ローンチされるEC2の /var/app/current/ に展開
  26. 26. 環境の作成 ( .elasticbeanstalk ) • config.yml • Beanstalk 環境設定 • eb init コマンド実行時に作成 • Aplication名 • 使用プラットフォーム • AWSリージョン • AWS CLI プロファイル などが設定されます
  27. 27. 環境の作成 (.ebextentions) • 00.storage-efs- mountfilesystem.config • EFS(Elastic File System)のマウント • This ebextentions includes the work that is distributed in the Apache License 2.0 • https://github.com/awslabs/elastic-beanstalk- docs/blob/master/configuration-files/aws- provided/instance-configuration/storage-efs- mountfilesystem.config
  28. 28. 環境の作成 (.ebextentions) • 01.set-env.config • RDSの接続情報を環境変数として Beanstak環境へ登録 • eb-setenv.ps1 • eb set env コマンドでも 設定可能
  29. 29. 環境の作成(.ebextentions) • 03.sg.config • 特定IPからのSSH・HTTP接続を許可する
  30. 30. 環境の作成(.ebextentions) • 11.autoscaling-trigger.config • Enviroment を構成するEC2の最大数・ 最小数を設定(MaxSize,MinSize) • スケールアウト、スケールインの閾値を 設定 • cooldown: Auto Scaling が新しいイン スタンスを起動した後、次のスケーリン グアクティビティを再開するまでに待機 する時間 • Period:トリガのメトリクスを測定する頻 度(minutes) • Breach duration:トリガが発せられる まで待機する限度時間(minutes)
  31. 31. 環境の作成(.ebextentions) • 12.application-load-balancer.config • ALB(Application Load Barlncer)を構成 • ALBは Enviroment 構築時のみ構成可能 • 「eb create」 コマンド実行時でも設定可能 • --elb-type application
  32. 32. 環境の作成(.ebextentions) • 13.alb-default-process.config • DeregistrationDelay: • 登録解除前にアクティブなリクエスト が完了するまでの待機時間 • HealthyThresholdCount: • ELBがインスタンスのヘルスステータ スを変更するために必要な、連続し て成功したリクエストの数。 • StickinessEnabled: • スティッキーセッションを有効 • StickinessLBCookieDuration: • スティッキーセッション Cookie の 有効期間 (Second)
  33. 33. 環境の作成(.ebextentions) • 14.alb-secure-listener.config • ALB(Application Load Balancer)にACM(AWS Certificate Manager)を設定
  34. 34. 環境の作成(Dockerrun.aws.json) • "AWSEBDockerrunVersion": 2, • 複数コンテナの Docker 環境はVer2になります • “volumes” • コンテナホストのボリュームを定義 • name:ボリュームの名前を設定 • sourcePath:実体のフォルダ • 同じ階層に設置した「フォルダ」や「ファイル」は 「/var/app/current/」に展開
  35. 35. 環境の作成(Dockerrun.aws.json) • containerDefinitions • コンテナの定義の配列 • name:コンテナ名 • Image:pullする image • mountPoints: • sourceVolume 設定したボリューム • containerPath コンテナ上の マウントパス • readOnly trueでreadonly
  36. 36. 環境の作成(Dockerrun.aws.json) • containerDefinitions
  37. 37. 環境の作成(Dockerrun.aws.json) • "containerDefinitions“ • Nginx-proxy コンテナの定義 • コンテナ名「php-app」とリンク
  38. 38. 環境の作成(eb-create.ps1) • コンテナ作成コマンド (eb create)のスクリプトを 作成 • スクリプトを実行すると環境 が構築されます
  39. 39. 今回使った他のAWSサービス 時間があれば ご紹介
  40. 40. VPC Flow Logs • https://aws.amazon.com/jp/blogs/big-data/analyzing-vpc-flow-logs-with-amazon-kinesis-firehose- amazon-athena-and-amazon-quicksight/ • Serverless Architecture for Analyzing VPC Flow Logs
  41. 41. ALB Log Analysis with Athena https://aws.amazon.com/jp/blogs/news/analyzing-data-in-s3-using-amazon-athena/
  42. 42. IPv4/IPv6 Dual Stack • 今回の環境は「IPv4/IPv6デュアルスタック」対応してます
  43. 43. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • VPCの設定 • VPCで「Edit CIDRs」 • 「Add Ipv6 CIDR」 • /56のIPv6プレフィックス
  44. 44. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • /56のIPv6プレフィックスって? • 「2の64乗(=1844京6744兆0737億0955万1616)個のアドレスを 持つサブネット」を256個作れるグローバルアドレス
  45. 45. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Subnets の設定 • 「Edit IPv6 CIDRs」 • Add IPv6 CIDR • /64のIPv6プレフィックス
  46. 46. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • Route Tables の設定 • 「::/0」 Ipv6 デフォルトルート設定
  47. 47. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • ELB の設定 • 「Edit IP address type」 • 「dualstack」を選択
  48. 48. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • ELB の設定 の設定 「Security Group」 HTTP(80) ::/0 HTTPS(443) ::/0 SGでは Permit ip any any 接続制限はWAFの IP match conditions
  49. 49. IPv4/IPv6 Dual Stack • AWSでのIPv6はとっても簡単 • R53 の設定 • 「Type:AAAA」 • Aliasレコードをターゲット ELBに設定
  50. 50. IPv4/IPv6 Dual Stack • 会場にIPv6接続 環境をご用意で きず。。 • WAFのログです
  51. 51. Elastic Beanstalk • まとめ • Elastic Beanstalk は便利なシステム構成管理ツール • 学習コストはそれなりに必要 • IPv4/IPv6 Dual Stack 対応も簡単
  52. 52. Elastic Beanstalk ご清聴ありがとうございました

×