namerd
namerd 是为多个 linkerd 实例管理路由的服务。它通过存储 dtabs 并使用 namers 进行服务发现来实现这个功能。namerd 支持与 linkerd 相同的服务发现后端套件,包括 ZooKeeper,Consul,Kubernetes API和 Marathon 等服务。
使用 namerd ,单独的 linkerd 不再需要直接与服务发现通话,或者将 dtabs 硬编码到其配置文件中。相反,他们向 namerd 询问所有必要的路由信息。这给我们带来了一些好处:
减少服务发现后端的负载
使用 namerd 意味着只有一小群 namerd 需要直接与服务发现后端通话,而不是队列中的每个linkerd。namerd 还利用缓存来进一步保护服务发现后端免受过载。
全局路由策略
通过将 dtabs 存储在 namerd 中,而不是硬编码在 linkerd 配置中,它可以确保路由策略在整个队列中同步,并在您需要进行更改时,为您提供一个真正的中心源。
动态路由策略
在 namerd 中存储 dtabs 的另一个优点是可以使用 namerd 的 API 或命令行工具动态更新这些 dtabs。这样可以执行诸如canary,staging或 blue-green 部署等操作,而无需重新启动任何 linkerd。
更多信息
要了解有关 namerd,搭建及其运维的更多信息,请查看 Booyant的动态路由博客文章。
配置您自己的 namerd,转到 namerd 配置文档。 另外还可以看看 namerctl,我们的控制 namerd 的开源工具。
为了一步一步的演练在 Kubernetes 中运行 namerd,以便持续部署,请查看 Buoyant 的博客文章,通过流量转移持续部署。