这是有关使用Weave作为底层网络层的DCHQ平台的可伸缩性的2博客系列文章的第二篇博客。 第一个博客介绍了在10个Weave集群上部署10,000个容器的情况,每个集群在Rackspace上具有3个云服务器,4GB内存和2个CPU。
在此博客中,我们将介绍2,000个容器的部署-但不是使用10个群集和3个云服务器,而是使用单个Weave群集和30个云服务器 。 DCHQ不仅可以自动化应用程序的部署和管理,还可以自动化13种不同的云和虚拟化平台上的基础架构配置和自动扩展。 在此博客中了解有关此可伸缩性测试的更多信息。
背景
尽管应用程序的可移植性(即能够在任何Linux主机上运行相同的应用程序)仍然是采用Linux容器的主要驱动力,但另一个关键优势是能够优化服务器利用率,以便您可以使用每一个计算。 当然,对于PROD之类的上游环境,您可能仍想为工作负载分配足够的CPU和内存–但是在DEV / TEST环境中(通常代表组织中大多数计算资源消耗),优化服务器利用率可以节省大量成本。
在纸上这一切听起来都是不错的—但是DevOps工程师和基础架构运营商仍在努力解决以下问题:
- 如何将跨不同云的服务器分组到映射到业务组,开发团队或应用程序项目的集群中?
- 如何监视这些群集并深入了解不同组或用户的资源消耗?
- 如何在群集中的服务器之间建立网络,以便多个主机之间的容器可以相互通信?
- 如何定义自己的基于容量的放置策略,以便可以使用群集中的所有计算?
- 如何自动扩展集群以满足开发人员对基于容器的新应用程序部署的需求?
DCHQ提供托管和内部部署版本,可解决所有这些挑战,并为基础架构运营商或DevOps工程师提供最先进的基础架构设置,自动扩展,群集和放置策略。
- 用户可以通过运行自动生成的脚本来安装DCHQ代理以及Docker和软件定义的网络层(可选),来注册在任何地方运行的Linux主机。 可以使用我们的REST API以编程方式自动执行此任务,以创建“ Docker服务器”( https://dchq.readme.io/docs/dockerservers )
- 另外,DCHQ与13个云提供商集成,从而允许用户自动启动vSphere,OpenStack,CloudStack,Amazon弹性云计算,Google Compute Engine,Rackspace,DigitalOcean,SoftLayer,Microsoft Azure等众多虚拟基础设施。
为Nginx集群构建应用程序模板
登录到DCHQ(托管的DCHQ.io或本地版本)后,用户可以导航到“ 管理” >“ 应用程序/机器” ,然后单击+按钮创建新的Docker Compose模板。
为了进行此可伸缩性测试,我们创建了一个简单的Nginx群集。 您会注意到, cluster_size参数使您可以指定要启动的容器数(具有相同的应用程序依赖性)。
使用mem_min参数可以指定要分配给容器的最小内存量。
host参数允许您指定要用于容器部署的主机。 这样,您可以确保跨不同主机(或区域)的应用程序服务器群集的高可用性,并且可以遵守关联性规则以确保数据库在例如单独的主机上运行。 以下是host参数支持的值:
- host1,host2,host3等–在数据中心(或集群)中随机选择一个主机进行容器部署
- <IP地址1,IP地址2等> -允许用户指定用于容器部署的实际IP地址
- <主机名1,主机名2等> -允许用户指定用于容器部署的实际主机名
- 通配符 (例如“ db- *”或“ app-srv- *”)–指定要在主机名中使用的通配符
在任何云上配置基础架构
保存应用程序后,用户可以注册云提供商,以在13个不同的云端点(包括vSphere,OpenStack,CloudStack,Amazon Web Services,Rackspace,Microsoft Azure,DigitalOcean,HP Public)上自动配置和自动扩展群集。云,IBM SoftLayer,Google Compute Engine等。
首先,用户可以通过导航到“管理”>“仓库和云提供商”,然后单击“ +”按钮选择“ Rackspace”,为Rackspace注册一个Cloud Provider。 需要提供Rackspace API密钥-可以从“帐户设置”部分中获取。
然后,用户可以使用自动扩展策略创建集群,以自动启动新的Cloud Server。 可以通过导航到“ 管理” >“ 集群”页面,然后单击+按钮来完成。 您可以选择一个基于容量的放置策略,然后选择Weave作为网络层,以促进群集内多个主机之间安全,受密码保护的跨容器通信。 在这种情况下,我们还定义了一种自动扩展策略,该策略将自动旋转该群集中的云服务器,使其达到定义的最大限制(在本例中为30个云服务器)。 可以使用粒度权限来确保该群集只能由我们在此测试中使用的10个用户(user1 @ dchq.io,user2 @ dchq.io,…,user10 @ dchq.io)使用。 最后,可以在蓝图(或应用程序模板)级别定义权限-以确保仅将授权的应用程序部署到此共享集群。 在这种情况下,群集向“所有蓝图”开放。
现在,用户可以通过基于UI的工作流,或者通过定义可以从自助服务库请求的基于YAML的简单计算机组成模板来在新创建的群集上配置大量Cloud Server。
基于UI的工作流 –用户可以通过导航至“ 管理” >“ 主机” ,然后单击+按钮以选择Rackspace来请求Rackspace Cloud Server。 选择云提供商后,用户可以选择所需的区域,大小和图像。 默认情况下,会在Rackspace Cloud Server上打开端口以适应某些端口要求(例如,对于Docker是32000-59000,对于Weave是6783,对于RabbitMQ是5672)。 然后选择一个集群,然后可以指定云服务器的数量。
基于YAML的Machine Compose模板 -用户可以通过导航到Manage > Templates然后选择Machine Compose来为Rackspace创建Machine Compose模板。
Machine Compose模板支持的参数总结如下:
- description :蓝图/模板的描述
- instanceType :云提供商的特定值(例如general1-4)
- 地区 :特定于云提供商的价值(例如,IAD)
- 映像 :强制–完全限定的映像ID /名称(例如IAD / 5ed162cc-b4eb-4371-b24a-a0ae73376c73或vSphere VM模板名称)
- username :可选–仅适用于vSphere VM模板用户名
- password :可选–仅适用于vSphere VM Template加密密码。 您可以使用端点https://www.dchq.io/#/encrypt加密密码
- 网络 :可选–云提供商特定值(例如,默认值)
- securityGroup :云提供商特定值(例如dchq-security-group)
- keyPair :云提供商的特定值(例如私钥)
- openPorts :可选–逗号分隔的端口值
- count :虚拟机总数,默认为1。
保存Machine Compose模板后,用户可以从自助服务库中请求此计算机。 用户可以单击“ 自定义” ,然后选择用于提供这些Rackspace Cloud Server的Cloud Provider和群集 。
使用DCHQ的REST API以编程方式部署Nginx集群
部署云服务器后,用户可以使用DCHQ的REST API以编程方式部署Nginx集群。 为了简化API的使用,用户将需要选择之前创建的集群作为默认集群。 可以通过导航到“ 用户名 > 我的配置文件” ,然后选择所需的默认集群来完成。
一旦选择了默认集群,用户就可以简单地执行以下调用“ deploy” API的curl脚本( https://dchq.readme.io/docs/deployid )。
在这个简单的curl脚本中,我们具有以下内容:
- for循环,从1到20
- 在每次迭代中,我们都使用分配给user1@dchq.io的默认集群来部署集群Nginx应用程序
- user1%40dchq.io用于user1@dchq.io,其中@符号用十六进制%40代替
- 密码和主机之间的@不替换为十六进制
- <id>是指Nginx集群应用程序ID。 可以通过导航到Nginx集群的Library > Customize来检索它。 该ID应该在URL中
- 每次迭代之间使用sleep 22
- 运行此脚本后,user1 @ dchq.io将部署200个Nginx容器-20个迭代部署每个10个容器的Nginx集群。
然后,我们对其他用户(user2 @ dchq.io,user3 @ dchq.io,…,user10 @ dchq.io)重复相同的过程-所有这些都部署到同一共享群集上。
您可以自己尝试使用curl脚本。 您可以安装DCHQ本地( http://dchq.co/dchq-on-premise.html ),也可以在DCHQ.io托管PaaS( http://dchq.io )上注册。
监视群集,服务器和运行中的容器的CPU,内存和I / O利用率
DCHQ允许用户监视群集,主机和容器的CPU,内存,磁盘和I / O。
- 要监视集群,您只需导航至“ 管理”>“集群”
- 要监视主机,您只需导航至管理>主机>监视图标
- 要监视容器,您只需导航至Live Apps>监视图标
在启动2,000个容器之前和之后,我们跟踪了主机和群集的性能。
分解了2,000个容器之后,我们捕获了集群性能图表的屏幕截图。 您可以看到, 群集中30台云服务器之间的总内存利用率为81% 。
您可以看到, 群集中30台云服务器中的最高内存利用率为84% 。
当我们深入研究集群中的30台主机之一时,看到了更多详细信息,例如在该特定主机上运行的容器数,提取的映像数,当然还有CPU /内存/磁盘利用率。 在这种情况下,该特定主机的内存利用率为83% 。
这是所有正在运行的200个Nginx集群的视图(每个集群有10个容器)。
结论
对于许多DevOps工程师和基础架构运营商来说,基于Docker的应用程序部署编排仍然是一个挑战,因为他们经常难以管理多个开发团队中的服务器池,其中访问控制,监视,网络,基于容量的放置,自动扩展策略和配额是需要配置的关键方面。
DCHQ提供托管和内部部署版本,可解决所有这些挑战,并为基础架构运营商或DevOps工程师提供最先进的基础架构设置,自动扩展,群集和放置策略。
除了先进的基础架构配置和集群功能外,DCHQ还通过先进的应用程序组合框架简化了企业应用程序的容器化,该框架通过跨映像环境变量绑定,可在请求时调用的可扩展BASH脚本插件或扩展了Docker Compose。供应后配置和应用程序群集,可跨多个主机或区域实现高可用性,并支持自动扩展。
- 免费注册在http://DCHQ.io或下载DCHQ内部部署
可以访问现成的多层Java应用程序模板以及应用程序生命周期管理功能,例如监视,容器更新,扩展/扩展和连续交付。