使用CoreOS,Docker和Nirmata部署微服务风格的应用程序

[本文由Ritesh Patel撰写。]

随着应用容器的运用持续火热,设计用于运行容器的“最小”操作系统也悄然而生。CoreOS就是其中一个操作系统,它被设计用于运行现代原生云应用,并且支持Docker容器。

在这篇文章中,我将介绍如何使用Nirmata在CoreOS上部署和运行微服务应用程序,可以简单分为以下几个主要步骤:

  1. 创建一个主机组
  2. 搭建一个CoreOS VM
  3. 部署一个应用程序

下面我会详细介绍每一步。

创建一个主机组

对于Nirmata,主机组相当于一个相同的资源池。您可以为每个云提供商定义一个或多个主机组,然后将主机组映射到应用程序和服务级别策略。

Nirmata支持多个公共和私有云提供商。因为有这样的设定,我决定采用“不尽相同”的提供商,并将各个CoreOS实例直接连接到我的主机组。

第一步是用Nirmata为CoreOS虚拟机创建一个新的主机组。选择“Host Groups” - >“Other”,然后点击“Add Host Group ”按钮添加主机组。在创建向导中,说明主机组的名称,然后配置其资源选择策略。

在资源选择策略中,我选择“Sandbox”作为环境类型,“availableMemory”作为放置类型。此策略可确保每当在“沙箱”环境中部署应用时,会使用CoreOS集群并根据集群内的VM提供的内存来放置容器。

创建好主机组后,就能将CoreOS虚拟机添加到集群中,同时会给出用于设置虚拟机连接Nirmata并添加到主机组的CLI命令。

搭建一个CoreOS VM

为了搭建CoreOS虚拟机与Nirmata一起运作,可以使用SSH访问虚拟机并运行命令来将虚拟机连接到Nirmata并添加到我的主机组。在Host Groups页面已经给出了这条命令:

sudo curl -sSL http://www.nirmata.io/nirmata-host-agent/setup-nirmata-agent.sh | sudo sh -s other <host-group-id>

运行该命令会下载Host Agent容器映像,并将其作为systemd service运行。

你可以使用docker ps命令验证主机代理是否正在运行:

如果主机代理在运行,它就会连接到Nirmata并且主机将被添加到主机组

你可以重复此步骤将多个CoreOS VM添加到你的主机组。这里我添加了一个虚拟机到我的主机组,所以可以看到CoreOS集群里有2个虚拟机。

部署您的应用程序

完成后就可以准备部署应用程序了,这里我已经在Nirmata导入了一个包含6个服务的小型演示应用。

要创建部署此应用的环境,请选择“Environments”然后点击“Add Environment”来添加环境。在向导中,选择环境类型为“Sandbox”,应用程序为“shopme-demo”。

点击完成按钮即可开始环境部署,之后你会看到容器(服务)被部署。

等待几分钟,所有的服务部署完成后就会运行。

可以通过转到Host Groups页面查看主机来验证这一点,这里可以看到每个主机都部署了3个容器。

也可以通过检查我的虚拟机来验证我的容器是否被部署。

完成应用部署后,我就能通过Nirmata来监控和管理它。我可以轻松地将其他主机添加到我的主机组,以及放大或缩小容器。

正如你所看到的,在这短短几分钟内就创建好了一个虚拟机集群,以及用Nirmata部署了一个分布式应用,不仅如此,监控和管理应用也相当容易。何不试一试,分享你的想法!

可以参考我们的文档尝试将CoreOS集群部署在不同的云提供商上,。

本文的版权归 亦非demo 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mantou大数据

Kafka基础入门

1. Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统...

3544

五分钟在笔记本上快速部署容器应用

按照以下步骤设置Nirmata并部署容器应用:

2158

使用CoreOs,Docker和Nirmata部署微服务类型的应用

随着采用应用容器的持续增长,设计用于运行容器的“最小”操作系统正在普及。CoreOS就是这样的一个操作系统。CoreOs是为运行现代云原生应用,并为Docker...

30310
来自专栏匠心独运的博客

消息中间件—RocketMQ消息消费(三)(消息消费重试)

摘要:如果Consumer端消费消息失败,那么RocketMQ是如何对失败的异常情况进行处理? 前面两篇RocketMQ消息消费(一)/(二)篇,主要从Pus...

3973
来自专栏乐沙弥的世界

快速体验Percona XtraDB Cluster(PXC)

Percona XtraDB Cluster(简称PXC)集群是基于Galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一...

1182
来自专栏游戏杂谈

express:node throwing error on mongodb

与此类似node throwing error on mongodb,一直报Db.open那里出错,查源代码,发现应该是有err参数传入,因为之前从来没接触过m...

761
来自专栏ThoughtWorks

10Hours 网页应用

以前段开发为特长,不放过技术大赛这样机会的刘旸,和几个同事打造的10Hours 受到了大家的好评。想知道何谓10Hours?那就~ ? 最近公司举办技术大赛,...

3299
来自专栏北京马哥教育

大型网站架构系列:消息队列(二)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)。 【第二篇...

3325
来自专栏MessageQueue

Push or Pull?

采用Pull模型还是Push模型是很多中间件都会面临的一个问题。消息中间件、配置管理中心等都会需要考虑Client和Server之间的交互采用哪种模型:

2194
来自专栏开源项目

Git 项目推荐 | 基于go+protobuff 实现的分布式

eQ ? 基于go+protobuff实现的多种持久化方案的mq框架 Client For KiteQ Go: https://github.com/b...

50714

扫码关注云+社区

领取腾讯云代金券