访问部署在apache mesos代理上的微服务

时间:2017-03-01 09:18:27

标签: dns load-balancing microservices mesos marathon

客户端如何访问已部署的微服务,无需指定主机代理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

2 个答案:

答案 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)

查看this answer

当您发出DNS SRV请求时,DNS可以提供​​有关服务端口的信息。它与大多数客户端不兼容,因此您需要手动操作。 Mesos DNS有whole section dedicate to SRV records

以下是docs的示例:

  

SRV记录

     

SRV记录将服务名称与主机名和IP端口相关联。   对于框架task启动的任务framework,Mesos-DNS会为服务名称_task._protocol.framework.domain生成SRV记录,其中protocoludptcp 。   例如,其他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生成的规则: