在 RHEL 7.1 little endian 上设置 Mesos/Marathon 集群(5)

Mesos-DNS 也会为服务创建 DNS SRV 记录。SRV 记录将服务名称与主机名和 IP 端口相关联。Mesos-DNS 为服务名称生成一条 DNS-SRV 记录 _task._protocol.framework.domain

其中:

任务是启动的应用程序/服务(在本例中为 MysSQL)

协议是 UDP 或 TCP,框架是 Marathon 或其他任何框架

域是集群域(在本例中为 Mesos)。

其他 Marathon 应用程序可使用此 SRV 记录来发现服务。

例如,需要 MySQL 服务的任何应用程序都可以查找 _mysql_tcp.marathon.mesos 的 SRV 记录

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

# docker ps

CONTAINER ID IMAGE          COMMAND    CREATED      STATUS                PORTS                        NAMES

e227390bfb3d ppc64le/mysql "/setup.sh" 3 seconds ago Up Less than a second 0.0.0.0:31172->3306/tcp  mesos-fabb6e52-064a-425a-a501-330bc772cd55-S16.85fb3e7c-b2ca-412f-ac75-1ec314bee575

# dig _mysql._tcp.marathon.mesos -t SRV

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> _mysql._tcp.marathon.mesos -t SRV

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2126

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:

;_mysql._tcp.marathon.mesos. IN SRV

;; ANSWER SECTION:

_mysql._tcp.marathon.mesos. 60 IN SRV 0 0 31172 mysql-4huw5-s16.marathon.slave.mesos.

;; ADDITIONAL SECTION:

mysql-4huw5-s16.marathon.slave.mesos. 60 IN A 192.168.122.48

;; Query time: 1 msec

;; SERVER: 192.168.122.48#53(192.168.122.48)

;; WHEN: Mon Feb 08 14:27:38 IST 2016

;; MSG SIZE rcvd: 147

 

有关 mesos-dns 命名的更多信息,请参阅 服务命名

下面的示例 Python 代码使用 dnspython 模块查询 SRV 记录,检索访问该服务所需的主机和端口:

1

2

3

4

5

6

7

 

import dns.resolver

 

a = dns.resolver.query("_mysql._tcp.marathon.mesos",dns.rdatatype.SRV)

for i in a.response.answer:

    for j in i.items:

        print j.target

        print j.port

 

以下是示例设置中的输出:

1

2

 

mysql-4huw5-s16.marathon.slave.mesos.

31172

 

因此,可以推断 MySQL 服务在主机名为 mysql-4huw5-s16.marathon.slave.mesos 的从属节点的端口 31172 上运行。

可将一种类似逻辑直接包含在应用程序配置中,或者可以使用该数据设置应用程序配置所需的相关环境变量。例如,可以将 MYSQL_TCP_ADDR 和 MYSQL_TCP_PORT 分别设置为目标和端口返回的值。

联络相关人员

IBM Linux Technology Center (LTC) 是一个 IBM 开源软件开发人员团队,他们与 Linux 开源开发社区合作开展工作。LTC 是一个 Linux 技术能力中心。请联系我们。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3bdc2089e653c52f31beb667a3cb34c0.html