使用CoreOs,Docker和Nirmata来部署微服务风格的应用程序
[本文由Ritesh Patel撰写。]
随着应用程序容器(application container)的技术越来越被大众接受,设计用于运行容器的“最轻量级”操作系统正在变得非常流行。CoreOS便是这样的一个操作系统。CoreOs可以运行目前流行的,原生化云的应用程序,并能够为Docker容器提供支持。
在这篇文章中,我将介绍如何使用Nirmata在CoreOS上部署和运行微服务应用程序。其实,它的高阶步骤非常简单:
- 创建一个主机组
- 设置一个CoreOS VM(虚拟机)
- 部署一个应用程序
我将在下面详细地介绍每一步。
准备好了吗?Let's go!
第一步:创建一个主机组
在Nirmata中,主机组是一组相同的资源。我们可以为每个云提供商定义一个或多个主机组,然后将主机组映射到应用程序和服务级别的策略当中去。
Nirmata可以同时支持多个公有和私有云提供商。为了开启这项设置,我将使用“其他”作为提供程序的类型,并将各个CoreOS实例直接连接到我的主机组当中。
第一步,我们需要在Nirmata当中为CoreOS虚拟机创建一个新的主机组。这可以通过点击主机组->其他,然后单击添加主机组按钮来完成。在这个向导中,我们可以指定主机组的名称和资源选择的策略。
在资源选择策略中,我将选择“Sandbox(沙盒)”作为环境类型,“availableMemory”作为放置类型。这个策略可以确保每当在“沙箱”环境中部署的应用程序时,它会使用CoreOS群集,并会根据群集内的VM上提供的内存来放置容器。
创建了这个主机组之后,我们就可以将CoreOS虚拟机添加到集群当中。并且,用于设置虚拟机连接到Nirmata和添加到此主机组的CLI命令也会在界面上显示出来。
第二步:设置一个CoreOS VM(虚拟机)
为了设置我的CoreOS虚拟机与Nirmata可以一同使用,我可以通过SSH来访问虚拟机并运行一些命令来设置我的虚拟机,使它连接到Nirmata并添加到我的主机组当中去。这条命令也会显示在主机组页面上:
sudo curl -sSL http://www.nirmata.io/nirmata-host-agent/setup-nirmata-agent.sh | sudo sh -s other <host-group-id>
这个命令将下载Host Agent容器的映像,并将其作为systemd服务运行。
您可以使用docker ps命令验证主机代理是否正在运行:
一旦主机代理正在运行,它将会连接Nirmata并将主机添加到主机组
您可以重复此步骤来将多个CoreOS VM添加到主机组当中。我额外添加了一个虚拟机到我的主机组,所以我的CoreOS集群现在会有有2个虚拟机。
第三步:部署你的应用程序
现在,我准备部署我的应用程序了!其实,我已经在Nirmata导入了一个包含6个服务的小型演示应用程序,如下图所示。
要创建部署此应用程序的环境,请点击“环境”,然后单击“添加环境”。在向导中,选择环境类型为“沙盒”,并选择应用程序为“shopme-demo”。
点击完成开始部署环境。在这时,我们应该能看到容器(服务)正在被部署。
在几分钟内,所有的服务将会部署完成并开始运行。
现在,我可以通过转到主机组视图并查看主机来验证是否部署完成。如下图所示,我可以看到每个主机都部署了3个容器。
我也可以通过检查我的虚拟机来验证我的容器是否已经部署。
一旦我的应用程序被部署,我可以主动监控它并通过Nirmata来管理它。我可以非常轻松地将其他主机添加到我的主机组,并能够扩容或缩减我的容器。
正如您所看到的,在几分钟内,您就可以创建一个虚拟机集群,并与Nirmata共同来部署分布式应用程序。并且一旦部署完成,应用程序也可以很容易地被监控和管理。您觉得怎么样?快来试试看并告诉我们您的想法和建议吧!
如果您想要将CoreOS群集部署在不同的云提供商上,可以参考我们的文档。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- vue-element-admin提交表单数据到后端
- JDK15正式发布,划时代的ZGC同时宣布转正
- Redis的各种数据类型实践---List结构
- Git分支操作方法
- 最全解密微信红包随机算法(含代码实现)
- 两次死锁的分析
- 一次解决你的图像尺寸和定位问题。
- vuedraggable实现列表拖动排序
- 在 Xcode 中添加 Swift package 依赖
- 浅谈JavaScript中的apply,call和bind
- Git 的简单使用
- 移动端适配
- 《Algorithms Unlocked》读书笔记1——循环和递归
- 《Algorithms Unlocked》读书笔记2——二分查找和排序算法
- 《Algorithms Unlocked》读书笔记3——计数排序