Mesos-DNS 实现Mesos集群的服务发现

Mesos-DNS 是Mesos提供的服务发现的组件,本文介绍如何使用Mesos-DNS实现服务发现功能。
mesos-dns可以安装到mesos集群内的任意一个主机,也可以单独安装在额外一台主机,但是要和mesos集群在同一网段。
下载mesos-dns: https://github.com/mesosphere/mesos-dns/releases

mkdir /usr/local/mesos-dns
mv mesos-dns-v0.6.0-linux-amd64 /usr/local/mesos-dns/mesos-dns
chmod +x /usr/local/mesos-dns/mesos-dns 

利用marathon运行mesos-dns可以实现failover, 如果mesos-dns挂掉,可以立马被Marathon拉起来。所以为了让marathon把mesos-dns管理起来,本文建议把mesos-dns安装到mesos agent节点上。
要用Marathon启动mesos-dns只需要配置以下mesos-dns的json文件。

cat > /usr/local/mesos-dns/config.json <<EOF
{
    "zk": "zk://<zookeeper_ip>:2181/mesos",
    "refershSeconds": 10,
    "ttl": 10,
    "domain": "mesos",
    "port": 53,
    "resolvers": ["<self_ip>"],
    "timeout": 5,
    "dnson": true,
    "httpon": true,
    "httpport": 8123,
    "email": "root.mesos-dns.mesos",
    "IPSources": ["host", "docker", "mesos", "netinfo"]
}
EOF

注: self_ip是本机的IP
IPSources: 从左至右优先级从高到低
host: Mesos agent主机的IP
mesos: Mesos 运行容器的IP, (deprecated)
docker: docker 容器的IP, (deprecated)
创建一个mesos-dns.json用来在Marathon上创建app

cat > /usr/local/mesos-dns/mesos-dns.json <<EOF
{
    "cmd": "sudo /usr/local/mesos-dns -config=/usr/local/mesos-dns/config.json",
    "cpus": 1,
    "mem": 512,
    "id": "mesos-dns",
    "instances": 1,
    "constraints": [{"hostname", "CLUSTER", "<mesos-agent-hostname>"}]
}
EOF

注:
mesos-agent-hostname是这个mesos-agent主机的主机名。 也就是/etc/hostname里记录的名称。

启动mesos-dns:

curl -X POST -H "Content-Type: application/json" http://<marathon-ip>:8080/v2/apps -d@mesos-dns.json

在每台mesos agent主机上设置mesos-dns主机为Primary DNS server.

vi /etc/resolv.conf
<mesos-dns-ip>

把mesos-dns主机的IP添加到每个mesos agent节点的/etc/resolv.conf中。
这样就在mesos集群中建立了服务发现的组件。在集群中任意一台主机或容器都可以实现服务发现功能。通过访问服务名称就可以获得IP,port等信息。
可以在Marathon上运行一个nginx容器,然后再执行下面的命令可以查询到这个nginx容器对应的主机IP和Port。

curl http://mesos-dns.marathon.mesos/8123/v1/services/_nginx._tcp.marathon.mesos
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值