我的环境是两台物理机器,都运行在Docker-Compose中。
我想创建跨越两个docker容器的elasticsearch集群。
我这样的建筑
两个容器不能互相连接,有什么想法吗?
docker image正在使用ElasticSearch:5.4.2
Docker-compose.yml
version: '2'
services:
elasticsearch:
image: es:542
hostname: es2
container_name: es2
user: elasticsearch
ports:
- 9200:9200
- 9300:9300
environment:
- ES_JAVA_OPTS=-Xms1g -Xmx1g
command: /usr/share/elasticsearch/bin/elasticsearch
ElasticSearch.yml
http.host: 0.0.0.0
transport.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 2
cluster.name: prod_es_cluster
node.name: prod_es_node1
node.master: true
node.data: true
discovery.zen.ping_timeout: 10s
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "[::1]"]
和日志
ES1
[2017-11-09T05:56:10,552][信息][O.E.T.TransportService][prod_es_node1]publish_address{172.24.0.2:9300},bound_addresses{[::]:9300}
[2017-11-09T05:56:10,558][信息][O.E.B.BootstrapChecks][prod_es_node1]绑定或发布到非环回或非链接本地地址,强制引导检查[2017-11-09T05:56:40,576][警告][O.E.N.Node][prod_es_node1]
ES2
[2017-11-09T09:37:20084][警告][O.E.D.ZenDiscovery][prod_es_node2]无法连接到主服务器[{prod_es_node1}{BxKzhOnJTUC50cYTz_Hm fA}{zqtU07jfQJOrmB9AYL01Ig}{172.24.0.2}{172.24.0.2:9300}],正在重试...
在org.elasticsearch.transport.tcptransport.java:549)~[elasticsearch-5.4.2.jar:5.4.2]在org.elasticsearch.transport.tcptransport.connectTonode(tcptransport.java:473)~[elasticsearch-5.4.2.jar:5.4.2]在org.elasticsearch.transport.transportService.connectTonode(transportService.java:315)~[elasticsearch-5.4.2.jar:5.4.2]在ThreadContext$ContextPreservingGrunnable.run(ThreadContext.java:569)[ElasticSearch-5.4.2.jar:5.4.2]在java.util.concurrent.ThreadPoolExecutor.RunWorker(ThreadPoolExecutor.java:1142)[?:1.8.0_131]在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[?:1.8.0_131]在java.lang.Thread.run(ThreadPoolExecutor.java:748)[?
现在我使用OpenVSwitch
和Pipework
构建集群网络
ovs设置:
#ES1
sudo brctl addbr br0
sudo ip link set dev br0 up
sudo ovs-vsctl add-br ovs0
sudo ovs-vsctl set bridge ovs0 stp_enable=true
sudo ovs-vsctl add-port ovs0 br0
sudo ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=10.251.34.50
管道设置:
sudo pipework-master/pipework br0 -i eth1 es1 172.28.0.2/8
docker容器网络信息:
ElasticSearch@es1:/usr/share/ElasticSearch$ip a
521:eth1@if522:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 4e:06:91:91:1f:3e brd ff:ff:ff:ff:ff:ff inet 172.28.0.2/8 brd 172.255.255.255作用域全局eth1 valid_lft forever preferred_lft forever
在设置了两个docker容器之后,集群应该可以工作了!!
elasticsearch@es1:/usr/share/elasticsearch$ ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=1.222 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.339 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.547 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.303 ms
64 bytes from 172.18.0.2: icmp_seq=4 ttl=64 time=0.333 ms
64 bytes from 172.18.0.2: icmp_seq=5 ttl=64 time=0.362 ms`
[2017-11-17T02:06:21,205][INFO ][o.e.n.Node ] [prod_es_node1] started
[2017-11-17T02:06:21,223][INFO ][o.e.c.s.ClusterService ] [prod_es_node1] new_master {prod_es_node1}{IoG7C5BYQ26AYsggMuJo2A}{AL3oD0itR1CgibIr-x-8Sg}{172.28.0.2}{172.28.0.2:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-11-17T02:06:21,254][INFO ][o.e.g.GatewayService ] [prod_es_node1] recovered [0] indices into cluster_state
[2017-11-17T02:06:29,205][INFO ][o.e.c.s.ClusterService ] [prod_es_node1] added {{prod_es_node2}{ZA7CwKyBQS2gm-OamVSz2g}{U6WQyzwoQCiDkwBvmUxoQw}{172.18.0.2}{172.18.0.2:9300},}, reason: zen-disco-node-join[{prod_es_node2}{ZA7CwKyBQS2gm-OamVSz2g}{U6WQyzwoQCiDkwBvmUxoQw}{172.18.0.2}{172.18.0.2:9300}]`
curl localhost:9200/_cluster/health?pretty
{
"cluster_name" : "prod_es_cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
问题内容: 我有一个运行一些Dockerfile的docker- compose文件来创建我的容器。我不想编辑Dockerfile来设置时区,因为它们可能会随时被团队成员更改,并且我有一个docker- compose.override.yml文件可以进行本地环境更改。但是,我的一个容器(基于Selenium的容器)似乎没有拉主机时区,这给我带来了麻烦。基于此,我想在所有容器上实施时区。现在在我的
我有一个运行几个Dockerfile来创建我的容器的docker撰写文件。我不想编辑我的Dockerfile来设置时区,因为它们可以随时由我的团队成员更改,我有一个docker-compose.override.yml文件来进行本地环境更改。然而,我的一个容器(基于硒的容器)似乎没有拉动主机时区,这给我带来了问题。基于此,我想在所有容器上强制执行时区。在我的Dockerfile里我知道 一切正常。
致谢 本文由 DaoCloud 社区用户谭文科提供
我在试图在Airflow上显示我的本地DAG时遇到了一些问题。 我用Docker部署了Airflow,但是我没有显示我本地计算机上的Dag,它只显示了我在“docker-compose.yaml”文件中设置airflow时出现的“标准”Dag。 我的 dag/日志文件的路径是:C:\用户\taz\文档\工作区(工作区是我拥有 dag 和日志文件夹的文件夹) 这是“docker-compose.ya
问题内容: 我在设置中运行官方Redis镜像https://hub.docker.com/_/redis/。 如何在该图像上使用docker-compose 运行? 我尝试了以下操作,但未连接: 图片的文档说我应该运行: 这是什么意思? 问题答案: 那会覆盖默认值:您试图在从未执行过的容器上运行。 如此处所述,您还可以使用以下方法进行测试: 如这个docker / compose问题2123 所述
我试图运行在通过包含文件()在虚拟机中,但我无法连接到,并且在尝试连接失败时收到的消息如下所示: 如果您注意到,docker能够连接到docker compose文件中提到的其他服务,其中一个是前两行显示的。在docker compose文件中调用kibana的命令如下: 如果我做了,它会给我以下信息: 在这里发布这个问题之前,我在google上广泛搜索了这个问题,并尝试了人们对这个问题的各种建议