aws black belt techシリーズ aws elastic beanstalk

51
AWS Elastic Beanstalk AWS Black Belt Tech Webinar 2014 (旧マイスターシリーズ) アマゾンデータサービスジャパン株式会社 技術本部 エマージングソリューション部 シニアソリューションアーキテクト 安川 健太

Upload: amazon-web-services-japan

Post on 26-Jan-2015

130 views

Category:

Technology


9 download

DESCRIPTION

AWS Black Belt Tech Webinar 2014 (旧マイスターシリーズ) AWS Elastic Beanstalk

TRANSCRIPT

  • 1. AWS Elastic Beanstalk AWS Black Belt Tech Webinar 2014 ()

2. Agenda AWS Elastic Beanstalk? Elastic Beanstalk Webinar Docker Worker Tier CloudWatch Logs Rolling Update Black Belt Tips CLIeb 3. Agenda AWS Elastic Beanstalk? Elastic Beanstalk Webinar Docker Worker Tier CloudWatch Logs Rolling Update Black Belt Tips CLIeb 4. AWS Elastic Beanstalk OpsWorks CloudFormation 5. Elastic Beanstalk 5 6. ELB + Web(DB) Auto Scaling S3 VPC 6 7. 7 8. v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.2 v1.2 v1.2.1 v1.2.1 v1.2.2 v1.2.2 DNS (Amazon route 53) Web (Amazon EC2) (Amazon RDS) 90% 5% 3% 2% 9. Elastic Load Balancing Web Tier deploy! WAR Java Python PHP .NET Ruby nodeJS Docker Amazon RDS Auto scaling Group Auto scaling GroupQueueAsync Tasks Worker Tier 10. Agenda AWS Elastic Beanstalk? Elastic Beanstalk Webinar Docker Worker Tier CloudWatch Logs Rolling Update Black Belt Tips CLIeb 11. - Docker - 12. ElasticBeanstalkDocker ElasticBeanstalkDocker DockerDistribution ElasticBeanstalk ElasticBeanstalk meets 13. Environment EC2 HM AutoScaling Nginx (tcp:80) Docker (tcp: xxxx) 1 Host Manager (HM) 14. 2 Dockerle Dockerle AWS Dockerrun.aws.json ElasticBeanstalk Dockerle 15. Dockerle Dockerle EXPOSEnginx nginx1 FROMEXPOSE CMDENTRYPOINT 16. Dockerrun.aws.json S3 EXPOSE ElasticBeanstalkContainerPort EC2 17. 2 Dockerle / Dockerrun.aws.json Pros: Cons: ElasticBeanstalk ZIP / git Dockerle / Dockerrun.aws.json Pros: Dockerle Cons: giteb push / git aws.push 18. - Worker Tier - 19. Worker Tier SQS Tier SQS HTTPPOST 200 OKDelete Message Web SQSWorker Worker 1.1SQS Dead Letter Queue 20. Worker Tier Worker queue WorkerQueue Queue Dead Letter Queue (Worker 1.1) HTTP Path sqsdPOST /async http://localhost:80/async POST Max Retries Retry 21. Worker Tier Retention Period ElasticBeanstalkSQS Queue If SQS > ElasticBeanstalk: Worker tiersqsd If SQS < ElasticBeanstalk: SQS Visibility Timeoutsqsd SQSElasticBeanstalk 22. - CloudWatch Logs - 23. CloudWatch Logs CloudWatch Logs Agent - Tomcat (Java) - Apache (PHP and Python) - Nginx (Ruby, Node.js, and Docker) CloudWatch LogsIAM Role 24. CloudWatch Logs Agent cwl-setup.cong CloudWatch Logs agentEC2 general.conf cwl-webrequest-metrics.cong CloudWatch Logs AgentMetrics Filter AlarmAmazon SNSTopic Alarm eb-logs.cong CloudWatch Logs Agent 25. - Rolling Update - 26. Rolling Update (*) CloudFormationUpdate Policy UpdatePause (*) 27. Agenda AWS Elastic Beanstalk? Elastic Beanstalk Webinar Docker Worker Tier CloudWatch Logs Rolling Update Black Belt Tips CLIeb 28. Black Belt Tips - CLI eb - 29. Elastic Beanstalk IDE Eclipse Java VisualStudio .Net AWS SDK Java, PHP, Ruby, Python, .Net AWS CLI $ aws elasticbeanstalk eb Eclipse 30. eb: CLIElasticBeanstalk " eb init " eb start " eb status " eb update " eb stop " eb delete " eb logs " eb events " eb branch git branch " eb push 31. eb + git ElasticBeanstalkCLI URLURL http://aws.amazon.com/code/6752709412171743 Version 2.6.3 $ wget https://s3.amazonaws.com/elasticbeanstalk/cli/AWS-ElasticBeanstalk-CLI-2.6.3.zip $ unzip AWS-ElasticBeanstalk-CLI-2.6.3.zip 32. eb + git " ElasticBeanstalkCLIebGit $ mkdir project && cd project $ git init $ eb init # AWSCredential $ eb start # $ eb status # StatusReady $ eb push # 33. eb + git " eb branchgit git new_branch new_branch $ git checkout b new_branch Switched to a new branch 'new_branch' $ eb branch The current branch is "new_branch". Enter an AWS Elastic Beanstalk environment name (auto-generated value is sample-newbranch- env"): Do you want to copy the settings from environment "nodesample-env" for the new branch? [y/n]: y $ eb start Starting application "sample". Waiting for environment "sample-newbranch-env" to launch. 2013-10-08 08:12:59 INFO createEnvironment is starting. 34. AWS Dev Tool git aws.congaws.push $ mkdir ebapp # rails rails new ebapp $ cd ebapp $ git init $ ~/AWS-ElasticBeanstalk-CLI-2.6.3/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh $ git aws.config AWS Access Key: AKIXXXXXXXXXXXXXXXX AWS Secret Key: zGt9B9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AWS Region [default to us-east-1]: ap-northeast-1 $ git aws.push 35. Black Belt Tips -- 36. AMI /.ebextensions/*.cong git packages: yum: git: [] commands: 01prepare: command: scripts/prepare.sh yumgit 37. packages yumrpm sources (tar) les services service users/groups / http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/customize-containers.html 38. commands OS container_commands option_settings Resources SQSDynamoDBCloudWatch 39. New Relic packages: yum: newrelic-sysmond: [] rpm: newrelic: http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic- repo-5-3.noarch.rpm commands: configure_new_relic: command: nrsysmond-config --set license_key=XXXXX .ebextensions/01newrelic.config 40. CommandsContainer Commands Commands Container Commands leader_only container_commands: leader_only_command: command: leader_only: true every_node_command: command: every_node_command Leader leader_only_command 41. 1. commands 2. /opt/elasticbeanstalk/hooks/appdeploy/pre/* DB 3. container_commands 4. /opt/elasticbeanstalk/hooks/appdeploy/enact/* 5. /opt/elasticbeanstalk/hooks/appdeploy/post/* 42. Pre Deploy files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstraup.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash cd /var/app/ondeck/public s3cmd get s3://mybucket/assets.tgz tar xvzf assets.tgz 43. Post Deploy files: "/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_resque_worker.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash . /opt/elasticbeanstalk/support/envvars cd $EB_CONFIG_APP_CURRENT if [ -e /var/run/resque.pid ]; then kill `cat /var/run/resque.pid` fi chown $EB_CONFIG_APP_USER /var/run/resque.pid su -c "PIDFILE=/var/run/resque.pid BACKGROUND=yes RAILS_ENV=productionQUEUE=default bundle exec rake environment resque:work" $EB_CONFIG_APP_USER 44. Pre&Post Deploy Amazon S3Docker Developer 1. docker push4. docker pull 2. deploy registry registry registry registry Docker registry container with AWS credentials Regionapp app app registry app 3. docker run registry 5. docker stop registry http://aws.typepad.com/sajp/2014/06/eb-docker-private-repo.html 45. Black Belt Tips -- 46. Resources Resources: : Type: Properties: : DynamoDB ElastiCache SQS SNS CloudWatch 47. DynamoDB .ebextensions/sessiontable.cong Resources: SessionTable: Type: AWS::DynamoDB::Table Properties: KeySchema: HashKeyElement: AttributeName: "username" AttributeType: "S" ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1 les: "/var/app/support/sessiontable": mode: "000444" content: | `{"Ref" : "SessionTable"}` `{"Ref" : "AWS::Region"}` Ref Fn::GetAtt, Fn::Join CloudFormation 48. Agenda AWS Elastic Beanstalk? Elastic Beanstalk Webinar Docker Worker Tier CloudWatch Logs Rolling Update Black Belt Tips CLIeb 49. ElasticBeanstalk Docker Worker Tier ElasticBeanstalk Happy Coding! 50. Webinar AWS http://aws.amazon.com/jp/aws-jp-introduction/ 51. Q&A