我是Service Discovery和集群系统的新手.我开始尝试使用Mesos和Marathon来部署Docker容器,Marathon REST API和UI似乎做得很好.
我的问题是部署服务的实际发现.出于测试目的,我通过Marathon部署了一个缩放到3个实例的Kafka集群,因为我使用了MongoDB测试集群.Mesos-DNS客户端给我一个类似的记录kafka.marathon.mesos
,mongo.marathon.mesos
它暗示了从主机到容器的动态映射端口.问题是,我的客户端明确需要有关目标端口的信息.是否有一种通用方法可以自动和动态地从服务中获取这些端口信息?暴露多个端口的应用程序怎么样?
到目前为止我的想法: - 做一个REST调用以获取有关已部署应用程序的状态并以某种方式提取相关数据 - 执行DNS SRV查找并以某种方式提取相关数据 - 拥有某种"主",静态绑定到端口,拥有动态的"客户".
我搜索了很多这些信息,但最后大部分教程以手动查找结束,这不是我的目标.
我是Docker和Consul的新手,现在尝试设置由3个dockerized节点组成的本地Consul集群。我正在使用progrium/consul
Docker映像并经历了整个教程和所描述的示例。
集群可以正常工作,直到涉及到重新启动/重新启动为止。
这是我的docker-compose.yml
:
---
node1:
command: "-server -bootstrap-expect 3 -ui-dir /ui -advertise 10.67.203.217"
image: progrium/consul
ports:
- "10.67.203.217:8300:8300"
- "10.67.203.217:8400:8400"
- "10.67.203.217:8500:8500"
- "10.67.203.217:8301:8301"
- "10.67.203.217:8302:8302"
- "10.67.203.217:8301:8301/udp"
- "10.67.203.217:8302:8302/udp"
- "172.17.42.1:53:53/udp"
restart: always
node2:
command: "-server -join 10.67.203.217"
image: progrium/consul
restart: always
node3:
command: "-server -join 10.67.203.217"
image: progrium/consul
restart: always
registrator:
command: "consul://10.67.203.217:8500"
image: "progrium/registrator:latest"
restart: always
我收到如下消息:
[ERR] raft: Failed to make RequestVote RPC to 172.17.0.103:8300: dial tcp 172.17.0.103:8300: no route to host …
我想通过VPN容器将traffik从我的docker容器路由到Internet以及从Internet路由到Internet:
Internet <---> VPN Container <---> Containers A,B,C
Run Code Online (Sandbox Code Playgroud)
我尝试将容器A,B,C连接到内部网络以限制对Internet的访问。VPN容器连接到内部网络以及默认网络,但是由于docker网络的严格隔离,我无法traceroute
从A,B,C到Internet。
有什么办法可以做到这一点?