当前位置: 首页 > 知识库问答 >
问题:

尝试使用docker-compose设置elasticsearch群集

鲁华皓
2023-03-14

我的环境是两台物理机器,都运行在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)[?

共有1个答案

丌官博文
2023-03-14

现在我使用OpenVSwitchPipework构建集群网络

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 所述

  • 我可以将其更改为正确的容器主机名-->plaintext://kafka:9092,但这样我就无法用其他应用程序再次访问kafka实例了。有什么简单的方法可以解决这个问题吗?