gpt4 book ai didi

amazon-web-services - 如何在相对复杂的基础设施中正确自动扩展 AWS EC2 实例组?

转载 作者:行者123 更新时间:2023-12-04 23:54:55 25 4
gpt4 key购买 nike

我正在努力将我们的服务器迁移到 Amazon Cloud 上,原因显然是自动扩展的可能性、成本、服务等等。

到目前为止,我正在努力尝试并尝试深入了解功能齐全的文档,但由于没有以前的经验,我有很多问题。

设想的基础设施如下:

                                  +-----+
| ELB |
+--+--+
|
+--------------------|--------------------+
| Auto-Scaling Group |
|--------------------|--------------------|
| | |
| +---------+ | +---------+ |
| | varnish |<------+------>| varnish | |
| +----+----+ +---------+ |
| | | |
+-----------------------------------------+
| |
| |
| +------------+ |
+---->|Internal ELB|<-----+
+------+-----+
|
+-----------------------------------------+
| Auto-Scaling Group |
|-----------------------------------------|
| +---------+ | +---------+ |
| | Apache |<------+------>| Apache | |
| +----+----+ +----+----+ |
| | | |
+-----------------------------------------+
| +-----+ |
+-------->| RDS |<--------+
+-----+

换句话说,我会让 Elastic LoadBalancer 将流量发送到 Varnish 实例,后者又会将流量发送到内部 Elastic LoadBalancer,后者将流量发送到 Apache 前端。

目前,我已经发现了 AWS 工具,例如 CloudFormation服务似乎能够在给定模板的情况下引导实例,这看起来很棒,但似乎只能引导。

有一点经验 Puppet (并给出了 AWS 在该主题上的推荐)我深入研究了 Puppet Master 的东西,这是一个很棒的工具。

我的想法可能不可行或不现实,是使用 CloudFormation 创建一个“Puppet Node Stack”。模板,它将根据需要配置实例并连接要配置的 puppet master。

一旦我准备好堆栈,我想知道 怎么样Varnish 配置/创建 Auto-Scaling 组和 Apache实例。

CFN 似乎有资源来配置自动缩放组和策略,所以我想我可以为每个创建两个不同的模板。

但是 AS 功能是否会通过 CFN 服务运行,然后执行所有初始化操作(并执行 user-data )?

我还在这里和那里读到 Puppet 可以使用 EC2 标签,也许带有相应标签(如角色)的通用堆栈模板可以做到这一点?

这种架构是否现实可行?你有任何反馈吗?

谢谢你的建议。

最佳答案

自动缩放根据启动配置创建新节点。因此,您将拥有两个单独的 Auto Scaling 组和两个单独的启动配置。 IE

"VarnishScalingGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"LaunchConfigurationName" : {"Ref" : "VarnishLaunchConfiguration" },
"LoadBalancerNames" : {"Ref" : "ELB"},
...
}
},
"VarnishLaunchConfiguration" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
...
"UserData" : {
....
},
"MetaData" : {
...
}
},
"ApacheScalingGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"LaunchConfigurationName" : {"Ref" : "ApacheLaunchConfiguration" },
"LoadBalancerNames" : {"Ref" : "InternalELB"},
...
}
},
"ApacheLaunchConfiguration" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
...
"UserData" : {
....
},
"MetaData" : {
...
}
}

您要添加的另一件事是每个扩展组的单独扩展策略,以及要匹配的适当 CloudWatch 指标。

CloudFormation 还可以启动对堆栈的更新。如果您将 cfn-hup 作为用户数据的一部分,那么它会定期(您决定)检查堆栈元数据中的更改 - 然后执行您喜欢的任何操作。我倾向于启动另一个版本的 cfn-init - 它将解析和更新任何元数据。

关键点 - 如果您沿着 cfn-hup 路径走下去,它将不会再次执行 userdata,除非 CloudFormation 堆栈需要删除和创建新实例。

另一点是,如果您希望推出 LaunchConfiguration 的更新,您需要确保 LaunchConfiguration 还应用了 UpdatePolicy。

关于amazon-web-services - 如何在相对复杂的基础设施中正确自动扩展 AWS EC2 实例组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com