我正在努力在亚马逊云上迁移我们的服务器,原因显然是自动扩展的可能性、成本、服务等等。
到目前为止,我正在努力尝试并尝试深入研究功能齐全的文档,但是没有以前的经验,我有很多问题。
设想的基础设施如下:
+-----+
| ELB |
+--+--+
|
+--------------------|--------------------+
| Auto-Scaling Group |
|--------------------|--------------------|
| | |
| +---------+ | +---------+ |
| | varnish |<------+------>| varnish | |
| +----+----+ +---------+ |
| | | |
+-----------------------------------------+
| |
| |
| +------------+ |
+---->|Internal ELB|<-----+
+------+-----+
|
+-----------------------------------------+
| Auto-Scaling Group |
|-----------------------------------------|
| +---------+ | +---------+ |
| | Apache |<------+------>| Apache | |
| +----+----+ +----+----+ |
| | | |
+-----------------------------------------+
| +-----+ |
+-------->| RDS |<--------+
+-----+
换句话说,我将拥有 Elastic LoadBalancer,它将流量发送到 Varnish 实例,而 Varnish 实例又将流量发送到内部 Elastic LoadBalancer,该内部 Elastic LoadBalancer 将流量发送到 Apache 前端。
目前,我已经发现了 AWS 工具,例如CloudFormation似乎能够在给定模板的情况下引导实例的服务,这看起来很棒,但似乎只能引导。
有一点经验Puppet(并且考虑到 AWS 在这个主题上的建议),我喜欢 Puppet Master 的东西,这是一个很棒的工具。
我的想法可能不可行或不现实,是使用CloudFormation模板创建一个“Puppet Node Stack”,它将根据需要配置实例并连接要配置的 puppet master。
准备好堆栈后,我想知道如何为实例Varnish和Apache实例配置/创建 Auto-Scaling 组。
CFN 似乎有资源来配置自动扩展组和策略,所以我想我可以为每个创建两个不同的模板。
但是 AS 功能是否会通过 CFN 服务运行,然后执行所有初始化操作(并执行user-data)?
我还在这里和那里读到 Puppet 可以使用 EC2 标签,也许带有相应标签(如角色)的通用堆栈模板可以做到这一点?
这种架构是否现实可行?你有什么反馈吗?
感谢您的建议。