云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名备案_系统时间同步服务器_免费

小七 141 0

HashiCorp执政官0.6

我们很高兴发布consur0.6,这是一个包含许多新特性和改进的重要更新。consur是一个现代数据中心运行时,它以易于部署的Go二进制文件提供服务发现、配置和编排功能。它是分布式的、高度可用的,并且被证明可以扩展到成千上万个节点,服务跨越多个数据中心。这个版本花了几个月的时间来准备,因为它涉及到一些核心的变化,比如迁移到一个全新的内存数据库,以及添加一个跨越多个内部层的新的网络断层扫描子系统。尽管发生了所有重大变化,我们还是努力使consur0.5.2升级成为一个标准升级,通常只需要使用新的二进制文件重新启动代理即可。consur0.6中有大量的特性、错误修复和改进。consur现在也是100%纯Go,这使得构建和部署更加容易。以下是一些功能亮点:网络断层扫描新内存数据库准备好的查询增强型ACLTCP和Docker容器运行状况检查更好的低层网络鲁棒性您可以在这里下载consur0.6或查看变更日志请继续阅读以了解有关0.6中主要新功能的更多信息。»网络断层扫描consur的底层gossip协议由Serf提供,它让集群中的所有节点定期对其他节点执行随机探测,以检测节点故障。这些探测的一个很好的副作用是,每个探测周期,节点都会获得到不同节点的网络往返时间的测量值。consur0.6利用这些测量值,将其输入到网络断层扫描子系统中,该子系统主要基于一种名为Vivaldi的学术研究算法。Vivaldi算法的工作方式类似于弹簧连接的节点系统的物理模拟。节点一开始聚集在原点,但随着时间的推移,它们会了解到与对等节点的距离信息,它们会调整自己的位置,以尽量减少弹簧中存储的能量。这个模拟的最终结果是一组"网络坐标",通过执行一个简单的计算,可以估计集群中任意两个节点之间的RTT。下面是一个使用Vivaldi算法创建的动画,它为一个模拟集群聚合,其中节点被人为地放置在RTT的网格模式中:conver0.6添加了与网络坐标相关的新命令和API端点,并以强大的方式将它们编织到现有端点中。下面是一些使用新consur rtt命令的示例,该命令允许操作员交互式地查询rtt估计值:#获取从当前节点到另一个节点的估计RTT$CONSUR rtt nyc3-服务器-1估计nyc3-server-1nyc3-server-2 rtt:1.091毫秒(使用LAN坐标)#从第三个节点获取其他两个节点之间的估计RTT$CONSUR rtt nyc3-服务器-1 nyc3-服务器-3估计nyc3-server-1nyc3-server-3 rtt:1.210毫秒(使用LAN坐标)#获取从当前服务器到另一个数据中心的估计RTT$consur rtt-广域网sfo1-server-1.sfo1估计的sfo1-server-1.sfo1nyc3-server-2.nyc3 rtt:79.291毫秒(使用广域网坐标)请注意,在上面的最后一个命令中,WAN池中的服务器也可以使用网络坐标。这对于应用程序非常有用,例如,如果本地数据中心中没有可用的服务,则故障转移到下一个最近的数据中心。执政官0.6加一个?near=查询许多现有api的参数,使它们能够利用网络层析成像。以下是一些示例:#获取提供"redis"服务的健康节点的列表#通过RTT相对于特定节点$卷曲本地主机:8500/v1/health/service/redis?超车&靠近=nyc3-server-2#通过RTT获取相对于特定节点排序的节点的完整列表$卷曲本地主机:8500/v1/catalog/nodes?near=nyc3-server-2附近最后,consur0.6为原始网络坐标公开了一个新的httpapi,可用于任何外部应用程序,允许强大的新布局、故障转移和其他类型的RTT感知算法。下面是一个显示网络坐标的示例:$卷曲本地主机:8500/v1/coordinate/nodes?漂亮的[{"Node":"nyc3-server-1","协调":{"Vec":[0.01566849390443588,-0.041767933427767884,-0.039999165076651244,-0.03846615252705054,-0.028208175963693814,0.021521109674738765,-0.0325953125031965,0.0392771535734132],"误差":0.2093820069437395,"调整":0.00038434248982906666,"高度":1.87355541114160737E-05}},...尽管在一个网络坐标系中看起来有很多组件,但计算RTT估计值非常简单。您可以通过阅读有关网络坐标的CONSUR和Serf内部指南了解这些计算是如何执行的,以及有关CONSUR用于提高RTT估计精度的技术的更多详细信息。»新内存数据库consur的早期版本将LMDB用于内存数据库,该数据库支持consur服务器的所有数据,如目录、键/值存储和会话。LMDB性能良好,非常稳定,但是通过转移到基于基数树的新内存数据库中,我们能够根据consur的需要定制这个核心组件,这在consur0.6中带来了几个重要的好处。数据库的设计允许在基数树中直接引用数据,从而消除了在读取查询期间反序列化结构的需要。这大大提高了consur服务器的读吞吐量,并降低了垃圾收集压力。直接引用,再加上go1.5.1及其改进的垃圾收集性能的使用,有助于使Consul服务器在大的、繁忙的集群中常见的重读取负载下更加稳定。另一个好处是LMDB是consur的最后一个cgo依赖项,因此删除它使consur 100%纯Go代码,从而简化了构建过程,并使为新平台构建consur变得更容易。最后,这个新的数据库提供了一个很好的基础,以改善阻塞的查询在未来版本的执政官的粒度。这可以在数据库本身的支持下添加,还可以利用基数树结构。内存存储是根据状态快照和启动时的Raft日志构建的,因此升级到新的内存中数据库不需要任何特殊步骤。但是,由于我们删除了LMDB依赖项,所以当从consur 0.5.1之前的版本升级时,Raft日志本身不再自动迁移。有关详细信息,请参阅升级过程文档。»准备好的查询consur的DNS接口是consur的一个流行部分,因为它易于使用,并且几乎可以与任何现有的应用程序集成。一个常见的请求是通过DNS公开更多的特性,例如使用多个标记的查询。另外,我们想通过DNS公开新的网络断层扫描系统。不幸的是,DNS查询的语法相当有限,因此很难添加复杂的新功能。consur0.6引入了准备好的查询,允许通过新的httpapi端点定义复杂的查询,然后通过DNS公开。下面是一个查询定义示例,它显示了准备好的查询可能具有的一些功能:$curl-X后-d\'{"Name":"具有故障转移的redis","服务":{"Service":"redis","故障转移":{"最接近":3},"标签":主人","!实验"]},"DNS":{"TTL":"10s"}}' 本地主机:8500/v1/query{"ID":"5e1e24e5-1329-f86f-18c6-3d3734edb2cd"}一旦这个准备好的查询注册到consur,就可以使用-故障转移.query.consul将执行以下步骤:在本地数据中心查找"redis"服务的健康实例将那些筛选到具有所需标记"master"但没有不允许的标记"experimental"的实例如果本地数据中心没有可用的实例,则根据网络断层扫描的RTT数据,查询最近的3个远程数据中心返回DNS TTL为10秒的结果如上面的例子所示,这个简单的redis-故障转移.query.consul准备好的查询以某种方式公开了大量的功能,编码到DNS查询中是不切实际的。准备好的查询的其他属性包括服务发现ACL支持、会话集成和用户定义的故障转移数据中心列表。现有的准备好的查询也可以动态更新以更改其行为,而不必更改任何consur-agent配置。准备好的查询是为将来的可扩展性而设计的,这样DNS可以继续支持consur提供的新功能。查询结果也可以通过新的HTTP端点与其他应用程序集成。准备好的查询HTTP端点文档中提供了更多详细信息»增强型ACLConsul用户通常有多个不同的团队共享同一个基础设施,因此一个常见的请求是更丰富的acl来支持混合环境。consur0.6提供了几个增强的acl来支持这些使用。服务ACL已经扩展到包括服务发现,而不仅仅是服务注册。启用了read acl后,HTTP客户端需要提供一个有能力的令牌来读取服务信息。通过使用有能力的令牌注册准备好的查询并向客户端提供安全的准备查询ID,即使在使用DNS接口时,也可以启用服务发现读取acl。还添加了新的acl来控制对激发用户事件和keyring操作的访问。因为这些新的acl可能会影响匿名令牌的可用访问,所以在升级到consur 0.6时,计划一个新策略以保持与以前相同的行为(如果acl_default_policy设置为deny)非常重要。对于consol 0.6,像这样的ACL策略将模拟consur以前版本的行为:服务""{policy="读取"}事件""{策略="