《云计算与虚拟化技术丛书 Service Mesh实战》—3.4.3 namer

网友投稿 648 2022-05-30

3.4.3 namer

namer用于配置Linkerd的服务发现工具,Linkerd支持配置多个namer以满足不同需求,每个namer可对应一种服务发现机制,它负责把服务名字经过dtab转换得到的客户端名字解析为IP地址和端口集合。当前版本Linkerd支持多种服务发现工具,如基于文件的服务发现机制、ZooKeeper、Consul等,甚至支持发现运行在k8s和marathon编排工具中的服务,使得Linkerd直接从k8s和marathon读取服务相关信息。namer配置包括下列内容。

kind:指定选择哪种类型的服务发现工具,比如上一章中使用的基于文件的服务发现,其类型为io.l5d.fs,还有本章将使用的Consul,其类型为io.l5d.consul。对namer配置,kind是强制要求配置的,否则出错。当前,Linkerd支持的namer类型有:

io.l5d.fs

io.l5d.serversets

io.l5d.consul

io.l5d.k8s

io.l5d.marathon

io.l5d.zkLeader

io.l5d.curator

io.l5d.rancher

io.l5d.rewrite

每种类型namer具体配置可参考官方文档namers(https://linkerd.io/config/1.3.6/linkerd/index.html#namers),在此不作一一介绍,本章着重介绍类型为io.l5d.consul的namer,当然后续章节也会对类型为io.l5d.k8s的namer进行详细介绍。

prefix:prefix依赖于namer,默认为/+kind对应的值,如/io.l5d.consul,也可将其自定义为任意其他以/打头的值。namer在解析名字时以/#+prefix作为前缀,如/#/io.l5d.consul/dc1/booking。

transformers:用于转换已解析得到的地址,后续会详细介绍。

experimental:标识namer是否处于试验状态,默认为false。

《云计算与虚拟化技术丛书 Service Mesh实战》—3.4.3 namer

另外,基于所选择的namer类型,除配置上述通用配置外,可能还需配置特定额外配置,如示例中使用io.l5d.consul类型的namer除通用配置外,还需配置Consul地址和端口、是否包括服务标签、是否使用Consul的健康监测数据判断服务健康与否等,其配置如下。

namers:

- kind: io.l5d.consul

prefix: /io.l5d.consul

host: 127.0.0.1

port: 8500

includeTag: false

setHost: false

useHealthCheck: true

还有,Linkerd提供两种特殊的内置namer:inet和io.buoyant.rinet,其中inet对形如/$/inet/DNSOrIPAddress/Port的客户端名字进行解析,若DNSOrIPAddress为DNS记录,则查询DNS记录对应的IP地址,解析为IPAddress:Port集合,若为IPAddress,则直接解析为IPAddress:Port,比如/$/inet/127.0.0.1/4140会被解析为127.0.0.1:4140。而io.buoyant.rinet则对形如/$/io.buoyant.rinet/Port/DNSOrIPAddress的客户端名字进行解析。需要特别注意的是inet和io.buoyant.rinet都以/$打头,以此区分上述namer。

除上述所列出的namer,Linkerd还提供一些工具namer,用于辅助实现dtab的复杂变换,但不用作服务发现,我们称这些namer为rewriting namer,这包括以下工具。

io.buoyant.http.domainToPathPfx:重写形如/$/io.buoyant.http.domainToPathPfx/ / 的dtab路径为以打头的前缀,然后以/替换的.并反转,如/$/io.buoyant.http.domainToPathPfx/pfx/foo.buoyant.io/resource/name被重写为/pfx/io/buoyant/foo/resource/name。

io.buoyant.http.subdomainOfPfx:重写形如/$/io.buoyant.http.subdomainOfPfx///的dtab路径为以打头的前缀,然后丢弃部分,如/$/io.buoyant.http.subdomainOfPfx/buoyant.io/pfx/foo.buoyant.io/resource/name被重写为/pfx/foo/resource/name。

io.buoyant.hostportPfx:重写形如/$/io.buoyant.hostportPfx//:/etc的dtab路径为以打头的前缀,转换:为/host/port,然后连接/etc,如/$/io.buoyant.hostportPfx/pfx/host:port/etc被重写为/pfx/host/port/etc。需注意的是该namer不支持IPv6。

io.buoyant.porthostPfx:重写形如/$/io.buoyant.porthostPfx//:/etc的dtab路径为以打头的前缀,转换:为/port/host,然后连接/etc,如/$/io.buoyant.porthostPfx/pfx/host:port/etc被重写为/pfx/port/host/etc。

与用于服务发现的namer不同的是rewriting namer以/$打头,而且无需在namer配置中显示配置即可使用。

现假如已获得客户端名字/#/io.l5d.consul/dc1/booking,其告之prefix为/io.l5d.consul的namer将解析该客户端名字成Consul数据中心为dc1,服务名字为booking对应的IP地址和端口集合,如192.168.1.12:39462 192.168.1.13:42251。

虚拟化 云计算

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深度神经网络在文本匹配中的应用
下一篇:非结构化数据库mongo操作入门
相关文章