我已经设置了3个节点的Docker Swarm。它们都配置为群集的一部分。主节点也是容器的主机。
每个节点都有NFS挂载到NFS以存储集中数据。
我创建了一个全局的ElasticSearch集群,因此它可以在所有节点上运行。这被配置为使用cluser中的DNS Round Robin(dnsrr
)在Docker Swarm中运行。由于dnsrr
不允许暴露端口,因此我有一个Nginx代理服务器,它在19200上侦听请求,然后将它们代理到端口9200上的服务elasticsearch
。
Traefik,ElasticSearch Proxy和ElasticSearch节点都连接到名为elastic_cluster
的相同覆盖网络。网络为10.0.10.0/24
。
我已经配置了Traefik,因此它有一个命名主机并在端口443上回答elasticsearch.homenetwork.local
(非真实域)。(我们配置了加密)并且应该转发到Nginx代理。
然而,当我尝试点击https://elasticsearch.homenetwork.local
时,我在Traefik日志中收到错误:
time="2017-12-02T22:50:37Z" level=warning msg="Error forwarding to http://10.0.10.3:19200, err: dial tcp 10.0.10.3:19200: getsockopt: no route to host"
鉴于Traefik服务在10.0.10.0/24
网络上,我不明白为什么会出现此错误。我使用Portainer跟踪服务,我可以看到Traefik服务的IP地址为10.0.10.4
。
如果我运行的交互式会话到IP地址为10.0.10.7
的Nginx代理,我可以毫无问题地ping 10.0.10.4
。
容器都在运行Ubuntu。没有涉及iptables
。
有没有人见过这样的东西?我正在努力弄清楚这里有什么问题,所以如果有人有任何建议我会非常感激他们。真烦人的是,这曾经有用。我不记得改变了什么,但显然有些东西。
ElasticSearch服务命令:
docker service create --name elasticsearch \
--network elastic_cluster \
--constraint "node.labels.app_role == "elasticsearch" \
--mode global \
--endpoint-mode dnsrr \
docker.elastic.co/elasticsearch/elasticsearch:5.4.2 \
elasticsearch
ElasticSearch代理服务命令:
docker service create --name elasticsearch_proxy \
--network elastic_cluster \
--label traefik.enable=true \
--label traefik.backend=elasticsearch_proxy \
--label traefik.port=19200 \
--label traefik.frontend.rule=Host:elasticsearch.home.turtlesystems.co.uk \
--label traefik.docker.network=elastic_cluster \
nginx:1.13
nginx.conf
- https://pastebin.com/Q5sXw6aw
Traefik服务命令
docker service create --name reverse_proxy \
--network elastic_cluster \
--network traefik-net \
--constraint "node.role == manager" \
--publish 80:80 \
--publish 8080:8080 \
--publish 443:443 \
traefik
traefik.toml
- https://pastebin.com/GFPu8MYJ
答案 0 :(得分:0)
我认为您忘记提及服务上的标签
docker service create --name elasticsearch_proxy \
--label traefik.docker.network=elastic_cluster
--label traefik.enable=true
--label traefik.port=19200
--network elastic_cluster \
nginx:1.13
答案 1 :(得分:0)
在所有这一切之后,我发现我遇到网络问题的原因是由于网络电缆故障。
更换后,everythig工作正常。谢谢你的所有建议。