【译】Envoy with Nomad and Consul (二)
原文:
Nomad
Nomad正适合2015年中的场景, 在过去的两年,在调度领域还没有在狂热营销时,大部分都在低调的改进。
Nomad是一个允许你将想跑的task放到集群中的调度器 - 选择跑着Nomad agent的机器。不像你可能熟悉的其他生态圈里的调度系统, Nomad既不是一个规范的PaaS,也不是一个需要你提供自己调度器的低层资源管理器。Nomad提供一个单体的调度器和资源管理器(看看Large-scale cluster management at Google with Borg https://pdos.csail.mit.edu/6.... 这篇论文,讨论了单体调度器),它提供了大部分用户需要的常用场景,开箱即用。
由于这篇文章的目的,解压并安装Nomad并不重要, 但我仍然推荐你读一下这篇文章(https://www.nomadproject.io/d...) 并自己试一下。我会指出有一个很棒的特性:开箱即用并与Vault(https://www.vaultproject.io/) 整合。如果你需要动态生成证书和其他你的task需要的安全凭证,那就很有用,你可以提供一个牢固的,自动的方案,你的安全团队会很高兴签收的。
Consul
当你开始在Nomad上运行多个系统后,这些分散的系统需要一种方式来定位和彼此调用。这就是Consul要用的地方。Consul在2014年早期开始流行,可以看到在世界上很多公司里进行部署。Consul提供以下功能:
服务目录
DNS提供者
键值对存储
自带失败探测
据报道,Consul已经能运行上万节点!在这个阶段的项目已经可以在生产环境使用了。我们最感兴趣的特性是文章关注的服务目录,这样我们可以用来注册部署好的系统,并可以在之后通过一些方式来查找他们。
想要查询目录中的服务,对大多数系统使用DNS是个不用动脑的选择,DNS跟互联网一样历史悠久并且所有应用都支持它。大体上,我建议部署一个Consul集群,然后你可以用DNS的域,consul设置成你主域的一个子域。最终这事变得很简单,你可以直接用一个简单的DNS A记录来引用任何服务(e.g. foo.service.yourdatacenter.yourcompany.com),你可以透明地整合所有异构系统,零配置。
当你用Nomad部署一个系统时你可以选择自动用Consul注册(https://www.nomadproject.io/d...)。通常,当你的容器暴露了一些在运行时你需要访问的端口时,需要做一些重映射的工作 - 例如 - 两个容器不能在同一个宿主机上一起暴露8080端口。为了避免端口冲突,Nomad可以为你自动重映射这些端口,例如,在容器内部将65387映射到8080.这个很快会有个问题,因为取决于Nomad worker在哪里运行,每一个容器实例都会有一个不同的重映射。当将Nomad自动注册到Consul,你可以很容易的查找目录中的所有服务实例。这很好用,因为作为调用方,你不需要知道任何关于IP:PORT的前置信息... 这只是一次DNS查询或HTTP请求。
本文来自微信公众号「麦芽面包,id「darkjune_think」
转载请注明。
微信扫一扫关注公众号。