客户端如何访问已部署的微服务,无需指定主机代理ip-address和相关的映射端口。
如果我们将Mesos-DNS添加为客户端解析器,我们只能获取代理IP地址,但它不会返回微服务实例及其相关端口列表。
假设我们有三个webapp1的实例如下:
+---------+---------+
| agent1 | agent2 |
+---------+---------+
| | |
| ins1:11 | ins3:13 |
| | |
| ins2:12 | |
| | |
+---------+---------+
应该启用客户端直接访问其中一个实例(不引用agent1和agent2 ip-address或11,12和13端口号)。例如:
$ lynx webapp1.marathon.mesos
答案 0 :(得分:1)
请使用马拉松负载均衡器检查标题X-Marathon-App-Id
。
示例:
curl -v -H "X-Marathon-App-Id: /your-app-id-in-marahton" -X GET \
http://marathon-lb.marathon.mesos:9091/yourAppEndPoint
更多信息marathon-lb docs。
答案 1 :(得分:1)
当您发出DNS SRV请求时,DNS可以提供有关服务端口的信息。它与大多数客户端不兼容,因此您需要手动操作。 Mesos DNS有whole section dedicate to SRV records
以下是docs的示例:
SRV记录
SRV记录将服务名称与主机名和IP端口相关联。 对于框架
task
启动的任务framework
,Mesos-DNS会为服务名称_task._protocol.framework.domain
生成SRV记录,其中protocol
为udp
或tcp
。 例如,其他Mesos任务可以发现search
框架启动的服务marathon
,并查找查找_search._tcp.marathon.mesos
:
$ dig _search._tcp.marathon.mesos SRV
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> _search._tcp.marathon.mesos SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33793
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;_search._tcp.marathon.mesos. IN SRV
;; ANSWER SECTION:
_search._tcp.marathon.mesos. 60 IN SRV 0 0 31302 10.254.132.41.
Mesos-DNS支持使用任务的DiscoveryInfo来生成SRV记录。 如果没有DiscoveryInfo可用,则Mesos-DNS将回退到那些&#34;端口&#34;为该任务分配的资源。 下表说明了管理SRV生成的规则: