Articles of 自动缩放

从一个CloudFormation堆栈获取信息以在另一个CloudFormation堆栈中使用

我正在尝试为AWS中的Web服务设置构buildpipe道。 计划是让服务在Auto Scale Group中运行,并使用Jenkins构build一个一次性的EC2实例,运行testing,并成功映像实例并将其传递给现有的Auto Scale Group。 为了创build所有必要的资源,我创build了两个CloudFormation模板,一个用于构buildAutoscale组和周围的资源,另一个用于构build一个可testing的实例。 我已经注意到这个问题:每个区域和每个EC2实例types有不同的基础图像。 这意味着,jenkins需要知道该地区和实例typesbuild立。 理想的解决scheme是select目标CloudFormation堆栈,并从那里拉取信息(区域,实例types等)。 这意味着如果我们对Auto Scale Group进行任何更改,它们将自动反映在Jenkins版本中。 如果我们创build了第二个组,我们可以复制Jenkins作业并更改一个参数,将它指向新的堆栈。 但是这似乎不是一个选项… 这些是我能想到的潜在解决scheme,但我并不特别喜欢它们中的任何一个: 在两个模板中硬编码这个信息 这与CF模板的想法背道而驰,因为我理想的是要保持这些东西的灵活性。 将信息发送给API,然后让Jenkins查找它 这是相当多的额外工作,因为我必须构build和维护一台机器来存储一些variables。 更不用说,我不确定是否可以通过脚本将信息输出到API,因此必须将其包装在另一个脚本中,才能从AWS CLI工具中获取信息。 分类最终的图像 我可以允许所有参数的灵活性,然后通过这些参数对最终图像进行分类。 然后我可以确保自动缩放组只加载具有正确参数的图像。 这将防止使用不正确的基本图像,但可能导致构build与错误的信息(如果我们改变一个,我们必须记得改变另一个)。 感觉就像我想做的事情不应该那么难,但我不能找出最好的办法。

如何访问自动扩展数据库服务器,因为不知道IP地址

我把web servers和db servers放在不同的自动缩放组中。 自动缩放组中的那些机器将被dynamic添加或删除。 因此,我不知道什么是数据库服务器的IP地址 在AWS下实现这一点的常用方法是什么?

EC2:复制启动configuration导致实例不启动

我有一个工作正常的自动缩放组。 我制作了一个启动configuration的副本,并将一个附加的卷(不是AMI中的根卷)从Magnetic / standard更改为SSD / gp2。 我将自动扩展组更改为使用新的启动configuration,并执行扩展策略以“添加1个实例”。 然后EC2进入循环开始,停止和终止实例。 EAch实例显示“Client.InstanceInitiatedShutdown:实例启动closures”的状态转换原因。 每个实例的系统日志都是空的。 我创build了复制的启动configuration的副本,并将附加的卷更改回磁性/标准,并更新了自动缩放组,但仍在循环中。 我执行了一个扩展策略来“删除1个实例”让它停止。 我做错了什么? AMI是好的,因为我有另一个自动缩放组使用相同的AMI。 自动缩放组正常工作,直到我做了这个改变。 (我今天早些时候改变了实例types,没有任何问题。)

Amazon RDS和自动扩展EBS:安全组

我在Amazon AWS上有以下设置: 一个自动缩放组 ELB 一个RDS数据库 一切都在默认的VPC中 关于这个设置,我不太了解的唯一的事情是关于安全规则。 对于RDS实例,我想: 只允许从Auto-Scaling组启动的EC2实例访问端口3306 , 允许从我自己的IP访问相同的端口3306 。 我已经为后者工作得很好了。 但是,我不确定如何去解决第一个问题。 各种资源提到简单地将EC2实例使用的相同SG附加到RDS实例。 但是,例如,如果EC2 SG允许每个人都使用端口80stream量,并且如果我使用同一个SG作为RDS实例,那么是否不会允许所有端口80访问RDS实例? 所以问题是:我如何创build一个只允许Auto-Scaling组中的EC2实例访问RDS端口3306的SG,而不是其他人? 最后,我如何为EC2实例创build一个只允许ELB访问的SG? 我非常希望为此使用AWS Web UI。 谢谢!

自动缩放组中的EC2自定义AMI未运行用户数据脚本

与这个问题类似, 我的用户数据是: #!/bin/bash echo 'test' > /home/ubuntu/user-script.txt Using a standard Ubuntu AMI, this works fine. 我有一个自定义的AMI,是通过build立一个标准的Ubuntu AMI创build的,运行一个Ansible操作手册并从中创build一个AMI。 当我configuration我的启动configuration使用我的自定义AMI时,用户数据不运行。 没有其他区别。 我明白,这可能是由于信号量文件,所以我站了起来,我的AMI的一个实例,删除/ var / lib / cloud / sem / *,并创build一个新的AMI。 我用这个AMI创build了一个新的启动configuration,得到了相同的结果。 我重复了这个过程,这次删除/ var / lib / cloud / *。 同样的结果。 有任何想法吗? 这是可能的,对吧?

使用Xen或XenServer进行自动调节

我需要学习如何在Xen平台或Citrix XenServer上实现自动缩放,就像在AWS上工作一样。 我在Google上search,但是我找不到这方面的信息。 如果我的问题太广泛了,没有一个简单的答案,如“启用functionX”,我会感谢您的build议,我应该研究做什么。

我可以使用多个虚拟机与单个启动盘在谷歌云中进行自动调整

我的平均CPU负载约为40-50%,但在高峰时间(一般4小时)服务器响应时间为时已晚。 如何克服这个问题? 有没有其他的方式来增加额外的CPU在规定的时间。 在自动缩放每个虚拟机从映像快照创build引导盘。 为此我必须自动快照。 但每个虚拟机也有不同的IP。 在哪里指向域的DNS。

在自动扩展组中获取EC2实例的公共IP的要求是什么?

我的目标是启动一些应由自动缩放组pipe理的EC2实例。 所有的实例都应该有公有的IP。 在我的testing中,我发现取决于AWS账户的configuration,这并不总是可能的。 在我可以使用的testing帐户中,某些地区有默认的VPC。 在那个地区,我能够获得公共知识产权。 在其他地区,我们没有configuration默认的VPC。 在这种情况下,我的理解是不可能获得公共IP。 那是对的吗? 另外,AWS文档提到了ClassicLink这个术语。 根据我的理解,这个概念只适用于旧账户。 它也允许有公共IP,但是只有在设置了“ClassicLink”标志的VPCconfiguration的情况下。 (在我的帐户,情况并非如此,所以我无法testing它。) 总之,我想问我的理解是否正确。 如果至less有一个条件成立,那么您是否可以在自动缩放组中只有EC2实例的公有IP? 在该地区,存在一个默认的VPC 您有一个旧帐户(支持EC2-Classic),并且在该地区至less有一个启用了ClassicLink的VPC (请注意,我不能使用ELB,因为实例不相同,如果ELB洗牌请求,会混淆系统,因为发件人需要控制哪个实例处理请求。)

如何确定自动缩放组中的EC2实例索引/位置?

我正在开发一些自动化脚本来引导我的应用程序,并将使用AWS中的自动缩放组来为我的应用程序启动/停止EC2实例。 我需要能够为遵循模式的机器重新创build一个一致的名称: MYAPP001 , MYAPP002 , MYAPP003 。 问题 有没有办法在用户数据引导阶段查询元数据,以确定刚刚出现的这台机器是002组? 如果我能确定这一点,那么我可以将机器重命名为MYAPP002 。 情景来帮助解释 设想一个第三方服务,希望机器被命名为MYAPP001 , MYAPP002 , MYAPP003 。 在此软件中,机器可以脱机并稍后以不同的IP地址重新联机。 但是, 不能让两台不同的计算机同时使用相同的主机名与此软件进行通信。

有没有一个标准的方法来更新实例组中的实例模板?

AWS提供名为CodeDeploy的服务,可以将代码部署到Auto Scaling(AS)组。 例如,如果您的AS策略被触发,并且创build了一个新的实例(它将使用AWS中预定义的名为AMI的实例图像)CodeDeploy会将代码从S3或GitHub的最新版本推送到新实例。 有什么办法可以在GCP中做到这一点,这样每次代码更改或部署时都不必更新实例模板?