我正在努力在亚马逊云上迁移我们的服务器,原因显然是自动扩展的可能性、成本、服务等等。
到目前为止,我正在努力尝试并尝试深入研究功能齐全的文档,但是没有以前的经验,我有很多问题。
设想的基础设施如下:
+-----+
| 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 标签,也许带有相应标签(如角色)的通用堆栈模板可以做到这一点?
这种架构是否现实可行?你有什么反馈吗?
感谢您的建议。