- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 AWS Elastic Beanstalk (EB) 上尝试环境时,我注意到创建新的单实例环境比不可变部署到同一环境要快得多(使用完全相同的应用程序版本)。
我指的是在环境健康状况为“正常”之前分别需要3 分钟和14 分钟。
谁能解释一下吗?
可能我对环境与实例的概念是错误的,但我希望差异(如果有的话)是相反的。
以下是工作流程的最小示例:
使用 EB (Web) 管理控制台创建新的单实例环境,并使用默认的 Python/Amazon-Linux 和默认示例应用程序。在开始环境创建之前,仅更改默认配置以将部署策略设置为“不可变”,而不是“一次性全部”。这大约需要。 3分钟:
2018-10-17 12:14:17 UTC+0200 INFO Environment health has transitioned from Pending to Ok. Initialization completed 33 seconds ago and took 3 minutes.
2018-10-17 12:13:39 UTC+0200 INFO Successfully launched environment: create-vs-deploy
从“应用程序版本”页面中选择示例应用程序(即与步骤 1 中使用的应用程序版本完全相同),并将其部署(不可变)到步骤 1 中创建的环境。这大约需要 1 分钟。 14 分钟:
2018-10-17 12:36:16 UTC+0200 INFO Environment health has transitioned from Info to Ok. Application update completed 67 seconds ago and took 14 minutes.
这同样适用于后续部署,并且自定义应用版本的结果类似。
两个实例的 eb-activity.log
文件具有相同的命令和输出,并且从启动到应用程序部署 - 命令 CMD-Startup 成功
的持续时间也接近相同:都略多于 1 分钟。
不可变部署的日志随后显示了 6 分钟后开始的一些附加行:
[2018-10-17T10:22:10.227Z] INFO [2269] - [Initialization] : Starting activity...
...
[2018-10-17T10:23:21.610Z] INFO [2620] - [Application deployment Sample Application@2/AddonsAfter] : Completed activity.
[2018-10-17T10:23:21.610Z] INFO [2620] - [Application deployment Sample Application@2] : Completed activity. Result:
Application deployment - Command CMD-Startup succeeded
[2018-10-17T10:29:58.110Z] INFO [3055] - [Re-associating instance] : Starting activity...
...
[2018-10-17T10:29:58.115Z] INFO [3055] - [Re-associating instance] : Completed activity. Result:
Re-associating instance - Command CMD-ImmutableDeploymentFlip succeeded
知道 6 分钟暂停期间发生了什么吗? EB每次健康检查等待6分钟吗?
此外,大约之间存在很大差异。 eb-activity.log
中从开始到结束的持续时间为 8 分钟,“事件”页面报告的持续时间为 14 分钟。
不确定它是否有帮助,但这来自不可变部署的healthd/daemon.log
:
# Logfile created on 2018-10-17 10:22:04 +0000 by logger.rb/47272
A, [2018-10-17T10:22:05.218449 #2186] ANY -- : healthd daemon 1.0.3 initialized
W, [2018-10-17T10:22:05.369315 #2186] WARN -- : log file "/var/log/httpd/healthd/application.log.2018-10-17-10" does not exist
...
W, [2018-10-17T10:23:16.646199 #2186] WARN -- : log file "/var/log/httpd/healthd/application.log.2018-10-17-10" does not exist
W, [2018-10-17T10:36:55.231184 #2186] WARN -- : discarding statistic item after validation error (Invalid timestamp): {:id=>"0", :namespace=>"application", :timestamp=>1539771800, :data=>"{\"duration\":10,\"latency_histogram\":[[0.213,1]],\"http_counters\":{\"status_200\":1,\"request_count\":1}}"}
新创建的环境的日志看起来相同,除了最后一行。
其他信息:
根据下面的事件(在不同时间部署同一应用程序),我假设新实例在应用程序更新开始后大约 12 分钟接管,之后旧实例终止等。
2018-10-17 14:29:07 UTC+0200 INFO Environment health has transitioned from Info to Ok. Application update completed 37 seconds ago and took 13 minutes.
2018-10-17 14:28:38 UTC+0200 INFO Environment update completed successfully.
2018-10-17 14:28:38 UTC+0200 INFO New application version was deployed to running EC2 instances.
2018-10-17 14:28:07 UTC+0200 INFO Removed instance [i-0*******] from your environment.
2018-10-17 14:26:25 UTC+0200 INFO Deployment succeeded. Terminating old instances and temporary Auto Scaling group.
2018-10-17 14:24:36 UTC+0200 INFO Waiting for post-deployment configuration to complete.
2018-10-17 14:24:31 UTC+0200 INFO Starting post-deployment configuration on new instances.
2018-10-17 14:23:31 UTC+0200 INFO Attached new instance(s) to the permanent auto scaling group awseb-e-******-stack-AWSEBAutoScalingGroup*****.
2018-10-17 14:23:29 UTC+0200 INFO Detached new instance(s) from temporary auto scaling group awseb-e-******-immutable-stack-AWSEBAutoScalingGroup*****.
2018-10-17 14:19:32 UTC+0200 INFO Waiting for instance(s) (i-0******) to pass health checks.
2018-10-17 14:17:08 UTC+0200 INFO Added instance [i-0******] to your environment.
2018-10-17 14:17:08 UTC+0200 INFO Environment health has transitioned from Ok to Info. Application update in progress on 1 instance. 0 out of 1 instance completed (running for 2 minutes).
2018-10-17 14:15:19 UTC+0200 INFO Created temporary auto scaling group awseb-e-*****-immutable-stack-AWSEBAutoScalingGroup-*******.
2018-10-17 14:14:33 UTC+0200 INFO Immutable deployment policy enabled. Launching one instance with the new settings to verify health.
2018-10-17 14:14:24 UTC+0200 INFO Environment update is starting.
最佳答案
事实证明,不可变部署涉及的内容比环境创建涉及的内容要多得多。以下是我从 AWS 支持 收到的部分回复,比我以前更清楚地解释了这些差异:
What will happen on environment creation
1) The new environment creation command is issued
2) A CloudFormation stack is created to launch the resources associated with the environment
3) The instance or instances that will be launched as part of the AutoScaling group are provisioned: this implies to execute, in that particular case, CMD-StartUp which will execute also all the hooks associated. At this time the environment is provisioned.
What will happen on Immutable Deployments
1) A new CloudFormation stack is created to so the current one is not getting modified
2) One instance is being launched in a temporary AutoScaling group
3) The instance is provisioned the same way as the existing one was at environment creation with CMD-StartUp
4) The instance, once ready, is added to the environment's load balancer
5) The instance has to pass all health checks. If the environment is of type "Web server", it needs to pass 12 consecutive health checks; if the environment is of type "worker", it needs to pass 18 health checks. Since Enhanced health check is reporting the status every 10 seconds, it means that in the best possible scenario, this is going to take 2 minutes (10 x 12 = 120). (More information regarding this [1])
6) The "CMD-ImmutableDeploymentFlip" command needs to be executed on the new instance/instances, which will then call the "infra-reregister-cfn-hup.rb" script and performs different actions
7) Post-deployment configuration starts
8) When deployment succeeded, the old instance(s) needs to be terminated
9) The deployment is completed.
关于amazon-web-services - Elastic Beanstalk : duration of environment creation vs immutable deployment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52854921/
我正在尝试将我的应用程序上载到Elastic Beanstalk,但是在节点预gyp安装--fallback-to-build上,npm安装失败。我尝试了各种版本的节点,但无济于事。似乎正在尝试获取一
设置 Elastic Beanstalk 的配置时,我没有获得解决方案堆栈的任何选项。 以下是有问题的行: `Select a solution stack. Available solution s
我正在尝试自定义 beanstalk 的默认 AMI,但每次我都会在一段随机时间后服务器重新启动。我什至没有改变任何东西,但没有任何效果。 我尝试过以下方法: 找到运行beanstalk的实例,创建A
我正在尝试使用sudo pip install awsebcli在新的Ubuntu 14.04(在Windows的Linux子系统上)上安装Elastic Beanstalk CLI(awsebcli
Amazon Beanstalk 是否会自动防止(分布式)拒绝服务攻击?如果没有,最方便的方法是什么? 最佳答案 我相信它会 New – AWS Shield AWS Shield is a new
每当我在 Elastic Beanstalk 中创建新环境时,我都会手动配置自定义 AMI ID、SNS 通知等,但我想自动完成,即,将设置(自定义 AMI ID、SNS、 key 对等)保存到一个配
我已使用以下方法连接到 Elastic Beanstalk: eb ssh XXXXXX --profile=xx 现在我想将一个文件复制到我的本地机器上,我该怎么做? 最佳答案 找出与 scp 一起
对于典型的 Java Web 应用程序,使用 Elastic Beanstalk 相对于手动创建 EC2 实例、设置 tomcat 服务器和部署等有哪些优势?负载平衡、监控和自动缩放是唯一的优势吗?
我有一个运行 PHP 的弹性 beanstalk 环境。在我的项目中,我有一个 .ebextensions 文件夹和一个名为“15-memorymonitor.config”的文件,其中包含以下内容;
我有 “更新”:Dockerrun.aws.json 中的“真” 当我更新 ECR 中的图像时,它应该自动更新 EC2 iontance 中的图像和容器。 但是当我在推送新图像后通过 ssh 进入实例
我有一个定义 Elastic Beanstalk 应用程序的 CloudFormation 模板。 我想扩展这个应用程序,即我希望端口 80 上的监听器重定向到 HTTPS。 AWS::Elastic
我在使用自定义 .ebextensions 文件部署 EB 实例时遇到问题。这是该文件中的相关部分: container_commands: 01_migrate: command: 'p
我已经使用带负载均衡器的 Elastic Beanstalk 创建了一个环境,并在各自的配置中分配了所有健康检查值 我也为ELB设置了应用健康检查url 但是当我检查自动缩放组配置时,健康检查类型是
我正在尝试部署我的 角申请通过GitHub Actions到 Elastic Beanstalk 。我正在使用这个 GitHub actions用于部署到 ELB。 我的问题是,部署失败,因为 ELB
我已阅读有关 Deploying Versions with Zero Downtime 的 AWS 文档,又名 CNAME 交换。 如 yegor256在 this answer 中有解释: The
我有一个弹性 beanstalk 设置,但无法访问环境中列出的 url,而如果我指向负载均衡器的 url,我可以访问它。 有什么建议吗? 最佳答案 将 LoadBalancer 安全组附加到实例。对我
我正在使用 AWS Elastic beanstalk 并希望为不同的环境配置不同的 ENV 变量。我发现的唯一方法是使用 ebextensions,但如果我将同一个数据包部署到多个环境,则无法覆盖在
我有一个应用程序,其中包含 nodejs 和 php 代码。 nodejs 用于运行应用程序所需的几个脚本。我如何使用 aws Elastic beanstalk 部署此类应用程序? 最佳答案 有两种
我今天遇到一个关于 Amazon Elastick BeanStalk 的奇怪问题:对于我的实例,我无法上传应用程序: XXX@-Vostro-2520:~/git_projects/ProjectB
我不断收到以下消息。但是在我的 nginx 日志中没有任何内容表明返回的请求状态为 5xx。此外,应用程序似乎按预期工作。我可能会得到这些的任何指示? 留言: Environment health h
我是一名优秀的程序员,十分优秀!