dus*_*ris 5 scalability amazon-web-services docker kubernetes
我有一些关于扩展Docker容器的基本问题:
我有5个不同的应用程序.它们没有相互连接.在拥有容器之前,我会为每个VM运行1个应用程序,并在云中单独调整它们.
现在使用容器我可以在VM上获得隔离,所以现在我可以运行一个带有5个docker容器的主机,其中每个应用程序都在自己的容器中隔离.
只要我的主机上有足够的资源,我可以随着流量的增长或缩小而单独扩展和缩小这些容器.例如,我有3个容器运行app 1,但只有1个容器运行app 2.
在高峰时段,应用程序3获得了大量流量,我需要启动第二个主机,该主机仅运行应用程序3的容器.
我的第一个问题是,如果上述内容对我所说的内容有所了解,或者我是否误解了某些内容.我的第二个问题是目前有哪些技术可以自动完成所有这些工作.我需要一个负载均衡器和一个能够实现上述场景的自动缩放组,而无需我进行手动干预.
我查看了AWS ECS,并且我不太确定它是否能够满足我的需求,如上所述.
有谁知道如何实现这一目标,还是有更好的方法来管理和扩展我缺少的5个应用程序?
更新:
通过Twitter,我被指向Kubernetes,特别是关于Horizontal Pod Autoscaler的文档.
也可能对其他人有用.随着我的了解,我会更新这个问题.
有几种选择,但我所知道的没有一个能做到这一切:您需要两件事:根据信号自动缩放主机,然后在主机上自动缩放容器。
以下是在主机上部署和扩展容器的解决方案(虽然不一定是自动扩展):
Kubernetes是一种编排工具,它允许在集群中调度和(使用可选的自动缩放器)自动缩放 pod(容器组)。如果主机出现故障,它可以确保您的容器在某处运行。Google Container Engine (GKE) 将此作为服务提供,但是我不确定它们是否具有与 AWS 相同的功能来自动扩展集群中的 VM 数量。
Mesos:有点类似于 Kubernetes,但不是专门用于运行容器。
Docker Swarm:Docker 多主机部署解决方案,允许您像控制单个 Docker 主机一样控制多个主机。我不相信它具有任何类型的“自动缩放”功能,而且我不相信它负责确保 pod 始终在某处运行:它基本上是用于集群的 docker。
[编辑] Docker 支持使用该restart=always
选项重新启动失败的容器,此外,从 Docker 1.11 开始,Docker Swarm 是 Docker Daemon 中的一种模式,并支持在节点故障时重新安排容器:如果节点不再可用,它将在其他节点上重新启动容器.
就功能而言,Docker 1.11+ 越来越像 Kubernetes。它有一些不错的功能(比如默认节点之间的 TLS),但仍然缺乏静态 IP 和存储配置等功能
这些解决方案都不会为您自动扩展主机数量,但它们可以扩展主机上的容器数量。
对于自动缩放主机,解决方案特定于您的云提供商,因此这些是专用解决方案。您的关键部分是将两者集成:AWS 允许在 CoreOS 上部署 Kubernetes;我不认为他们将此作为服务提供,因此您需要部署自己的 CoreOS 集群和 Kubernetes。
现在我的个人意见(和免责声明)
大约 6 个月前,我主要在 GKE 和裸机以及 Swarm 上使用 Kubernetes,并且我在 GKE 上运行了一个具有约 35 个服务的基础设施:
坦率地说,带有 Kubernetes 即服务的 GKE 提供了您想要的大部分内容,但它不是 AWS。扩展主机仍然有点棘手,需要一些工作。
在 AWS 或裸机上设置您自己的 Kubernetes 或 Mesos 是非常可行的,但是有一个相当大的学习曲线:这完全取决于您是否真的对使用 AWS 有强烈的感觉并愿意花时间。
Swarm 可能是最容易使用的,但也更有限,但是自制脚本可以很好地完成核心工作:使用 AWS API 扩展主机,并使用 Swarm 进行部署。但是,可用性保证需要您监控并在节点发生故障时重新启动容器。
除此之外,还有容器托管提供商可以为您完成这项工作:
Scalingo 是我所知道的,但还有其他的。https://scalingo.com/
OVH Sail Above 在 Alpha 版中提供此服务。https://www.runabove.com/sailabove.xml
归档时间: |
|
查看次数: |
1053 次 |
最近记录: |