Elasticsearch 2.4节点不会与ConnectTransportException形成集群 [英] Elasticsearch 2.4 nodes does not form cluster with ConnectTransportException

查看:797
本文介绍了Elasticsearch 2.4节点不会与ConnectTransportException形成集群的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经运行ELK堆栈与Elasticsearch(ES)1.7与docker容器有3个节点,每个运行一个ES容器,运行在 nginx 服务器后面。现在我试图将ES升级到2.4.0。 ES 2.4.0中不允许root用户使用,因此我使用 -Des.root.insecure.allow = true 选项。

  #Pulling SLES12 thin base image 
FROM private-registry-1

#Author
MAINTAINER xyz

#先决条件 - 添加存储库
运行zypper ar private-registry-2

运行zypper --no-gpg-checks -n刷新

#安装所需的软件包和依赖项
运行zypper -n在net-tools-1.60-764.185 wget-1.14-7.1 python-2.7.9-14.1 python-base-2.7.9-14.1 tar-1.27.1-7.1

#Downloading elasticsearch executable
ENV ES_VERSION = 2.4.0
ENV ES_CLUSTER_NAME = ccs-elasticsearch
ENV ES_DIR =// opt // log-management // $ search $
ENV ES_DATA_PATH =// data
ENV ES_LOGS_PATH =// var // log
ENV ES_CONFIG_PATH =$ {ES_DIR} // config
ENV ES_REST_PORT = 9200
ENV ES_INTERNAL_COM_PORT = 9300

WORKDIR / opt / log-management
运行wget private-registry-3 / elasticsearch / elasticsearch / $ {ES_VERSION} .tar /弹性搜索 - $ {ES_VERSION} .tar.gz - 无检查证书
运行tar -xzvf $ {ES_DIR} - $ {ES_VERSION} .tar.gz \
&& rm $ {ES_DIR} - $ {ES_VERSION} .tar.gz \
&& mv $ {ES_DIR} - $ {ES_VERSION} $ {ES_DIR} \
&& cp $ {ES_DIR} /config/elasticsearch.yml $ {ES_CONFIG_PATH} /elasticsearch-default.yml

#将弹性搜索服务器容器端口暴露给HOST
EXPOSE $ {ES_REST_PORT} $ {ES_INTERNAL_COM_PORT

#删除不需要的二进制文件
运行zypper -n rm wget

#删除zypper repos
运行zypper rr caspiancs_common

COPY query-crs-es.sh $ {ES_DIR} /bin/query-crs-es.sh
RUN chmod + x $ {ES_DIR} /bin/query-crs-es.sh

COPY query-crs-wrapper.py $ {ES_DIR} /bin/query-crs-wrapper.py
运行chmod + x $ {ES_DIR} / bin / query-crs-wrapper。 py
ENV CRS_PARSER_PYTHON_SCRIPT =$ {ES_DIR} // bin // query-crs-wrapper.py

#Copy弹性搜索引导脚本
COPY弹性搜索引导和-run.sh $ {ES_DIR} /
运行chmod + x $ {ES_DIR} /elasticsearch-bootstrap-and-run.sh

COPY config-es-cluster $ {ES_DIR} / bin / config-es-cluster
运行chmod + x $ {ES_DIR} / bin / config-es-cluster

COPY弹性搜索配置脚本$ {ES_DIR } / bin / elasticsearch-config-script
运行chmod + x $ {ES_DIR} / bin / elasticsearch-config-script

#Running弹性搜索可执行文件
WORKDIR $ {ES_DIR}
ENTRYPOINT $ {ES_DIR} /elasticsearch-bootstrap-and-run.sh

配置文件将在Dockerfile中提到的 elasticsearch-config config-es-cluster 进行修改,如下所示:

  #Bootstrap脚本配置elasticsearch.yml文件

echocluster.name:$ {ES_CLUSTER_NAME}> ; $ {ES_CONFIG_PATH} /elasticsearch.yml
echopath.data:$ {ES_DATA_PATH}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echopath.logs:$ {ES_LOGS_PATH}>> $ {ES_CONFIG_PATH} /elasticsearch.yml

#Performance优化设置
echoindex.number_of_replicas:1>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echoindex.number_of_shards:3>>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echodiscovery.zen.ping.multicast.enabled:false>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echobootstrap.mlockall:true>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echoindexes.memory.index_buffer_size:50%>>> $ {ES_CONFIG_PATH} /elasticsearch.yml


#Search线程池
echothreadpool.search.type:fixed>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echothreadpool.search.size:20>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echothreadpool.search.queue_size:100000>> $ {ES_CONFIG_PATH} /elasticsearch.yml

#Index线程池
echothreadpool.index.type:fixed>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echothreadpool.index.size:60>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echothreadpool.index.queue_size:200000>>> $ {ES_CONFIG_PATH} /elasticsearch.yml

#publish主机作为容器主机地址
#echonetwork.publish_host:$ {CONTAINER_HOST_ADDRESS}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echonetwork.bind_host:$ {CONTAINER_HOST_ADDRESS}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echonetwork.publish_host:$ {CONTAINER_PRIVATE_IP}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echonetwork.bind_host:$ {CONTAINER_PRIVATE_IP}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echonetwork.host:$ {CONTAINER_HOST_ADDRESS}>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echonetwork.host:0.0.0.0>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echohtpp.port:9200>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#echotransport.tcp.port:9300-9400>> $ {ES_CONFIG_PATH} /elasticsearch.yml
#configure elasticsearch.yml进行聚类
echo'discovery.zen.ping.unicast.hosts:[ELASTICSEARCH_IPS]'>> $ {ES_CONFIG_PATH} /elasticsearch.yml
echodiscovery.zen.minimum_master_nodes:1>> $ {ES_CONFIG_PATH} /elasticsearch.yml

ELASTICSEARCH_IPS 是其他节点的IP数组,由所有节点运行一个名为 query-crs-es.sh 的脚本获取。最终Array将具有其他两个集群节点的IP。请注意,它们将是节点的IP,而不是容器专用IP。



当我尝试运行容器时,我使用 ansible 。在启动过程中,所有节点起起来,但未能形成集群。我一直收到这些错误



Node1:

  [2016-10 -07 09:45:23,313] [WARN] [bootstrap]作为ROOT用户运行。这是一个坏主意! 
[2016-10-07 09:45:23,474] [信息] [节] [龙之主]版本[2.4.0],pid [1],构建[ce9f0c7 / 2016-08-29T09:14: 17Z]
[2016-10-07 09:45:23,474] [INFO] [节] [龙之主]初始化...
[2016-10-07 09:45:23,970] [INFO ] [插件] [龙之主]模块[reindex,lang-expression,lang-groovy],plugins [],sites []
[2016-10-07 09:45:23,994] [INFO] [env] [Dragon Lord]使用[1]数据路径,mount [[/ data(/ dev / mapper / platform-data)]],net unavailable_space [2.5tb],net total_space [2.5tb],旋转? [可能],类型[xfs]
[2016-10-07 09:45:23,994] [INFO] [env] [龙之主]堆大小[989.8mb],压缩的普通对象指针[true]
[2016-10-07 09:45:24,028] [WARN] [threadpool] [Dragon Lord]请求线索池大小[60]为[index]太大;设置为最大值[32]而不是
[2016-10-07 09:45:25,540] [INFO] [node] [Dragon Lord]初始化
[2016-10-07 09:45:25,540] [信息] [节] [龙之主]开始...
[2016-10-07 09:45:25,687] [信息] [运输] [龙之主] publish_address {172.17.0.15:9300},bound_addresses {[::]:9300}
[2016-10-07 09:45:25,693] [信息] [发现] [龙之主] ccs-elasticsearch / 5wNwWJRFRS-2dRY5AGqqGQ
[2016-10- 07 09:45:28,721] [INFO] [cluster.service] [Dragon Lord] new_master {Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300},原因:禅宗 - 已收到的[0]加入收件)
[2016-10-07 09:45:28,765] [信息] [http] [龙之王] publish_address {172.17.0.15:9200},bound_addresses {[::] 9200}
[2016-10-07 09:45:28,765] [信息] [节] [龙之主]开始
[2016-10-07 09:45:28,856] [信息] [网关] [拖on Lord]将[20]个索引恢复到cluster_state

Node2:

  [2016-10-07 09:45:58,561] [WARN] [bootstrap]作为ROOT用户运行。这是一个坏主意! 
[2016-10-07 09:45:58,729] [INFO] [node] [Defensor] version [2.4.0],pid [1],build [ce9f0c7 / 2016-08-29T09:14:17Z ]
[2016-10-07 09:45:58,729] [INFO] [node] [Defensor]初始化...
[2016-10-07 09:45:59,215] [INFO] [插件] [Defender]模块[reindex,lang-expression,lang-groovy],plugins [],sites []
[2016-10-07 09:45:59,237] [INFO] [env] [Defensor]使用[1]数据路径,mount [[/ data(/ dev / mapper / platform-data)]],net unavailable_space [2.5tb],net total_space [2.5tb],旋转? [可能],类型[xfs]
[2016-10-07 09:45:59,237] [INFO] [env] [Defensor]堆大小[989.8mb],压缩的普通对象指针[true]
[2016-10-07 09:45:59,266] [WARN] [threadpool] [Defensor]请求线索池大小[60]为[index]太大;设置为最大值[32]而不是
[2016-10-07 09:46:00,733] [INFO] [node] [Defensor]已初始化
[2016-10-07 09:46:00,733] [ INFO] [node] [Defensor] start ...
[2016-10-07 09:46:00,833] [INFO] [transport] [Defensor] publish_address {172.17.0.16:9300},bound_addresses {[: :]:9300}
[2016-10-07 09:46:00,837] [INFO] [发现] [Defensor] ccs-elasticsearch / RXALMe9NQVmbCz5gg1CwHA
[2016-10-07 09:46:03,876 ] [WARN] [discovery.zen] [Defensor]无法连接到主[{Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300}],重试...
ConnectTransportException [[龙之主] [172.17.0.15:9300] connect_timeout [30s]];嵌套:ConnectException [Connection denused:/172.17.0.15:9300];
在org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
在org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
在org.elasticsearch.discovery .zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
在org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
在org.elasticsearch.discovery.zen.ZenDiscovery .access $ 4400(ZenDiscovery.java:96)
在org.elasticsearch.discovery.zen.ZenDiscovery $ JoinThreadControl $ 1.run(ZenDiscovery.java:1296)
在java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang。 Thread.run(Thread.java:745)
引起的:java.net.ConnectException:拒绝连接:/172.17.0.15:9300
在sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
在org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
在org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
在org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java: 79)
在org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
在org.jboss.netty.channel.socket.nio.NioClientBoss.run( NioClientBoss.java:42)
在org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
在org.jboss.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker .java:42)
... 3更多
[2016-10-07 09:46:06,899] [WARN] [discovery.ze n] [Defensor]无法连接到主[{Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300}],重试...
ConnectTransportException [[Dragon Lord] [172.17 connect_timeout [30s]];嵌套:ConnectException [Connection denused:/172.17.0.15:9300];
在org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
在org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
在org.elasticsearch.discovery .zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
在org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
在org.elasticsearch.discovery.zen.ZenDiscovery .access $ 4400(ZenDiscovery.java:96)
在org.elasticsearch.discovery.zen.ZenDiscovery $ JoinThreadControl $ 1.run(ZenDiscovery.java:1296)
在java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang。 Thread.run(Thread.java:745)
引起的:java.net.ConnectException:拒绝连接:/172.17.0.15:9300
在sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
在org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
在org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
在org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java: 79)
在org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
在org.jboss.netty.channel.socket.nio.NioClientBoss.run( NioClientBoss.java:42)
在org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
在org.jboss.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker .java:42)
... 3更多
[2016-10-07 09:46:09,917] [WARN] [discovery.ze n] [Defensor]无法连接到主[{Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300}],重试...
ConnectTransportException [[Dragon Lord] [172.17 connect_timeout [30s]];嵌套:ConnectException [Connection denused:/172.17.0.15:9300];

Node3:

 code> [2016-10-07 09:45:58,624] [WARN] [bootstrap]作为ROOT用户运行。这是一个坏主意! 
[2016-10-07 09:45:58,806] [INFO] [node] [Scarlet Beetle] version [2.4.0],pid [1],build [ce9f0c7 / 2016-08-29T09:14: 17Z]
[2016-10-07 09:45:58,806] [INFO] [node] [Scarlet Beetle]初始化...
[2016-10-07 09:45:59,341] [INFO ] [插件] [Scarlet Beetle]模块[reindex,lang-expression,lang-groovy],plugins [],sites []
[2016-10-07 09:45:59,363] [INFO] [env] [Scarlet Beetle]使用[1]数据路径,mount [[/ data(/ dev / mapper / platform-data)]],net useful_space [2.5tb],net total_space [2.5tb],旋转? [可能],类型[xfs]
[2016-10-07 09:45:59,363] [INFO] [env] [Scarlet Beetle]堆大小[989.8mb],压缩的普通对象指针[true]
[2016-10-07 09:45:59,390] [WARN] [threadpool] [Scarlet Beetle]请求线索池大小[60]为[index]太大;设置为最大[32]而不是
[2016-10-07 09:46:00,795] [INFO] [node] [Scarlet Beetle]已初始化
[2016-10-07 09:46:00,795] [信息] [节点] [猩红色甲壳虫]起始...
[2016-10-07 09:46:00,927] [信息] [运输] [猩红色甲壳虫] publish_address {172.17.0.16:9300},bound_addresses {[::]:9300}
[2016-10-07 09:46:00,931] [信息] [发现] [猩红色甲壳虫] ccs-elasticsearch / SFWrVwKRSUu - 4KiZK4Kfg
[2016-10 -07 09:46:03,965] [WARN] [discovery.zen] [Scarlet Beetle]未能连接主人[{Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300}],重试...
ConnectTransportException [[Dragon Lord] [172.17.0.15:9300] connect_timeout [30s]];嵌套:ConnectException [Connection denused:/172.17.0.15:9300];
在org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
在org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
在org.elasticsearch.discovery .zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
在org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
在org.elasticsearch.discovery.zen.ZenDiscovery .access $ 4400(ZenDiscovery.java:96)
在org.elasticsearch.discovery.zen.ZenDiscovery $ JoinThreadControl $ 1.run(ZenDiscovery.java:1296)
在java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang。 Thread.run(Thread.java:745)
引起的:java.net.ConnectException:拒绝连接:/172.17.0.15:9300
在sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
在org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
在org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
在org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java: 79)
在org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
在org.jboss.netty.channel.socket.nio.NioClientBoss.run( NioClientBoss.java:42)
在org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
在org.jboss.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker .java:42)
... 3更多
[2016-10-07 09:46:06,990] [WARN] [discovery.ze n] [猩红色甲壳虫]未能连接到主[{Dragon Lord} {5wNwWJRFRS-2dRY5AGqqGQ} {172.17.0.15} {172.17.0.15:9300}],重试...
ConnectTransportException [[Dragon Lord] [ connect_timeout [30s]]; 172.17.0.15:9300]嵌套:ConnectException [Connection denused:/172.17.0.15:9300];
在org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
在org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
在org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
在org.elasticsearch.discovery .zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
在org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
在org.elasticsearch.discovery.zen.ZenDiscovery .access $ 4400(ZenDiscovery.java:96)
在org.elasticsearch.discovery.zen.ZenDiscovery $ JoinThreadControl $ 1.run(ZenDiscovery.java:1296)
在java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang。 Thread.run(Thread.java:745)

从日志中可以看出,节点2和3都知道master,Node1,但无法连接。我已经尝试过关于 network.host 的大多数配置,您可以在配置代码中看到它们,而且它们都不工作。
任何潜在客户将不胜感激。



这是端口状态:

  netstat -nlp | grep 9200 
tcp 0 0 10.240.135.140:9200 0.0.0.0:* LISTEN 188116 / docker-proxy
tcp 0 0 10.240.137.112:9200 0.0.0.0:* LISTEN 187240 / haproxy

netstat -nlp | grep 9300
tcp 0 0 ::: 9300 ::: * LISTEN 188085 / docker-proxy


解决方案

我可以使用以下设置形成群集



network.publish_host = CONTAINER_HOST_ADDRESS ie运行
容器的节点的地址。

  network.bind_host = 0.0.0.0 
transport.publish_port = 9300
transport.publish_host = CONTAINER_HOST_ADDRESS

tranport.publish_host 在运行时很重要ES后面的代理/负载平衡器,如nginx或haproxy。


I am already running ELK stack with Elasticsearch(ES) 1.7 with docker container with 3 nodes, each running one ES container, running behind nginx server. Now I am trying to upgrade ES to 2.4.0. Root user is not allowed in ES 2.4.0 so I am using -Des.root.insecure.allow=true option.

#Pulling SLES12 thin base image
FROM private-registry-1

#Author
MAINTAINER xyz

# Pre-requisite - Adding repositories
RUN zypper ar private-registry-2

RUN zypper --no-gpg-checks -n refresh

#Install required packages and dependencies
RUN zypper -n in  net-tools-1.60-764.185 wget-1.14-7.1 python-2.7.9-14.1 python-base-2.7.9-14.1 tar-1.27.1-7.1 

#Downloading elasticsearch executable
ENV ES_VERSION=2.4.0
ENV ES_CLUSTER_NAME=ccs-elasticsearch
ENV ES_DIR="//opt//log-management//elasticsearch"
ENV ES_DATA_PATH="//data"
ENV ES_LOGS_PATH="//var//log"
ENV ES_CONFIG_PATH="${ES_DIR}//config"
ENV ES_REST_PORT=9200
ENV ES_INTERNAL_COM_PORT=9300

WORKDIR /opt/log-management
RUN wget private-registry-3/elasticsearch/elasticsearch/${ES_VERSION}.tar/elasticsearch-${ES_VERSION}.tar.gz --no-check-certificate
RUN tar -xzvf ${ES_DIR}-${ES_VERSION}.tar.gz \
&& rm ${ES_DIR}-${ES_VERSION}.tar.gz \
&& mv ${ES_DIR}-${ES_VERSION} ${ES_DIR} \
&& cp ${ES_DIR}/config/elasticsearch.yml ${ES_CONFIG_PATH}/elasticsearch-default.yml

#Exposing elasticsearch server container port to the HOST
EXPOSE ${ES_REST_PORT} ${ES_INTERNAL_COM_PORT}

#Removing binary files which are not needed
RUN zypper -n rm wget

# Removing zypper repos
RUN zypper rr caspiancs_common

COPY query-crs-es.sh ${ES_DIR}/bin/query-crs-es.sh
RUN chmod +x ${ES_DIR}/bin/query-crs-es.sh

COPY query-crs-wrapper.py ${ES_DIR}/bin/query-crs-wrapper.py
RUN chmod +x ${ES_DIR}/bin/query-crs-wrapper.py
ENV CRS_PARSER_PYTHON_SCRIPT="${ES_DIR}//bin//query-crs-wrapper.py"

#Copy elastic search bootstrap script
COPY elasticsearch-bootstrap-and-run.sh ${ES_DIR}/
RUN chmod +x ${ES_DIR}/elasticsearch-bootstrap-and-run.sh

COPY config-es-cluster ${ES_DIR}/bin/config-es-cluster
RUN chmod +x ${ES_DIR}/bin/config-es-cluster

COPY elasticsearch-config-script ${ES_DIR}/bin/elasticsearch-config-script
RUN chmod +x ${ES_DIR}/bin/elasticsearch-config-script

#Running elasticsearch executable
WORKDIR ${ES_DIR}
ENTRYPOINT ${ES_DIR}/elasticsearch-bootstrap-and-run.sh

Configuration file will be modified by elasticsearch-config and config-es-cluster, mentioned in Dockerfile, as follows:

#Bootstrap script to configure elasticsearch.yml file

echo "cluster.name: ${ES_CLUSTER_NAME}" > ${ES_CONFIG_PATH}/elasticsearch.yml
echo "path.data: ${ES_DATA_PATH}" >>   ${ES_CONFIG_PATH}/elasticsearch.yml
echo "path.logs: ${ES_LOGS_PATH}" >>   ${ES_CONFIG_PATH}/elasticsearch.yml

#Performance optimization settings
echo "index.number_of_replicas: 1" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "index.number_of_shards: 3" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "discovery.zen.ping.multicast.enabled: false" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "bootstrap.mlockall: true" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "indices.memory.index_buffer_size: 50%" >> ${ES_CONFIG_PATH}/elasticsearch.yml


#Search thread pool
echo "threadpool.search.type: fixed" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "threadpool.search.size: 20" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "threadpool.search.queue_size: 100000" >> ${ES_CONFIG_PATH}/elasticsearch.yml

#Index thread pool
echo "threadpool.index.type: fixed" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "threadpool.index.size: 60" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "threadpool.index.queue_size: 200000" >> ${ES_CONFIG_PATH}/elasticsearch.yml

#publish host as container host address
#echo "network.publish_host: ${CONTAINER_HOST_ADDRESS}" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "network.bind_host: ${CONTAINER_HOST_ADDRESS}" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "network.publish_host: ${CONTAINER_PRIVATE_IP}" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "network.bind_host: ${CONTAINER_PRIVATE_IP}" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "network.host: ${CONTAINER_HOST_ADDRESS}" >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "network.host: 0.0.0.0" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "htpp.port: 9200" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#echo "transport.tcp.port: 9300-9400" >> ${ES_CONFIG_PATH}/elasticsearch.yml
#configure elasticsearch.yml for clustering
echo 'discovery.zen.ping.unicast.hosts: [ELASTICSEARCH_IPS] ' >> ${ES_CONFIG_PATH}/elasticsearch.yml
echo "discovery.zen.minimum_master_nodes: 1" >> ${ES_CONFIG_PATH}/elasticsearch.yml

ELASTICSEARCH_IPS is array of IPs of other nodes, which is obtained by all nodes running a script called query-crs-es.sh. Eventually Array will have IPs of other two nodes of cluster. Please note they will be node's IP, not container private IPs.

When ever I try to run the container I use ansible. During start up, all nodes get up but failed to form cluster. I consistently get these error

Node1:

[2016-10-07 09:45:23,313][WARN ][bootstrap                ] running as ROOT user. this is a bad idea!
[2016-10-07 09:45:23,474][INFO ][node                     ] [Dragon Lord] version[2.4.0], pid[1], build[ce9f0c7/2016-08-29T09:14:17Z]
[2016-10-07 09:45:23,474][INFO ][node                     ] [Dragon Lord] initializing ...
[2016-10-07 09:45:23,970][INFO ][plugins                  ] [Dragon Lord] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
[2016-10-07 09:45:23,994][INFO ][env                      ] [Dragon Lord] using [1] data paths, mounts [[/data (/dev/mapper/platform-data)]], net usable_space [2.5tb], net total_space [2.5tb], spins? [possibly], types [xfs]
[2016-10-07 09:45:23,994][INFO ][env                      ] [Dragon Lord] heap size [989.8mb], compressed ordinary object pointers [true]
[2016-10-07 09:45:24,028][WARN ][threadpool               ] [Dragon Lord] requested thread pool size [60] for [index] is too large; setting to maximum [32] instead
[2016-10-07 09:45:25,540][INFO ][node                     ] [Dragon Lord] initialized
[2016-10-07 09:45:25,540][INFO ][node                     ] [Dragon Lord] starting ...
[2016-10-07 09:45:25,687][INFO ][transport                ] [Dragon Lord] publish_address {172.17.0.15:9300}, bound_addresses {[::]:9300}
[2016-10-07 09:45:25,693][INFO ][discovery                ] [Dragon Lord] ccs-elasticsearch/5wNwWJRFRS-2dRY5AGqqGQ
[2016-10-07 09:45:28,721][INFO ][cluster.service          ] [Dragon Lord] new_master {Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2016-10-07 09:45:28,765][INFO ][http                     ] [Dragon Lord] publish_address {172.17.0.15:9200}, bound_addresses {[::]:9200}
[2016-10-07 09:45:28,765][INFO ][node                     ] [Dragon Lord] started
[2016-10-07 09:45:28,856][INFO ][gateway                  ] [Dragon Lord] recovered [20] indices into cluster_state

Node2:

[2016-10-07 09:45:58,561][WARN ][bootstrap                ] running as ROOT user. this is a bad idea!
[2016-10-07 09:45:58,729][INFO ][node                     ] [Defensor] version[2.4.0], pid[1], build[ce9f0c7/2016-08-29T09:14:17Z]
[2016-10-07 09:45:58,729][INFO ][node                     ] [Defensor] initializing ...
[2016-10-07 09:45:59,215][INFO ][plugins                  ] [Defensor] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
[2016-10-07 09:45:59,237][INFO ][env                      ] [Defensor] using [1] data paths, mounts [[/data (/dev/mapper/platform-data)]], net usable_space [2.5tb], net total_space [2.5tb], spins? [possibly], types [xfs]
[2016-10-07 09:45:59,237][INFO ][env                      ] [Defensor] heap size [989.8mb], compressed ordinary object pointers [true]
[2016-10-07 09:45:59,266][WARN ][threadpool               ] [Defensor] requested thread pool size [60] for [index] is too large; setting to maximum [32] instead
[2016-10-07 09:46:00,733][INFO ][node                     ] [Defensor] initialized
[2016-10-07 09:46:00,733][INFO ][node                     ] [Defensor] starting ...
[2016-10-07 09:46:00,833][INFO ][transport                ] [Defensor] publish_address {172.17.0.16:9300}, bound_addresses {[::]:9300}
[2016-10-07 09:46:00,837][INFO ][discovery                ] [Defensor] ccs-elasticsearch/RXALMe9NQVmbCz5gg1CwHA
[2016-10-07 09:46:03,876][WARN ][discovery.zen            ] [Defensor] failed to connect to master [{Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}], retrying...
ConnectTransportException[[Dragon Lord][172.17.0.15:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /172.17.0.15:9300];
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
    at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$4400(ZenDiscovery.java:96)
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1296)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: /172.17.0.15:9300
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    ... 3 more
[2016-10-07 09:46:06,899][WARN ][discovery.zen            ] [Defensor] failed to connect to master [{Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}], retrying...
ConnectTransportException[[Dragon Lord][172.17.0.15:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /172.17.0.15:9300];
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
    at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$4400(ZenDiscovery.java:96)
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1296)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: /172.17.0.15:9300
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    ... 3 more
[2016-10-07 09:46:09,917][WARN ][discovery.zen            ] [Defensor] failed to connect to master [{Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}], retrying...
ConnectTransportException[[Dragon Lord][172.17.0.15:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /172.17.0.15:9300];

Node3:

[2016-10-07 09:45:58,624][WARN ][bootstrap                ] running as ROOT user. this is a bad idea!
[2016-10-07 09:45:58,806][INFO ][node                     ] [Scarlet Beetle] version[2.4.0], pid[1], build[ce9f0c7/2016-08-29T09:14:17Z]
[2016-10-07 09:45:58,806][INFO ][node                     ] [Scarlet Beetle] initializing ...
[2016-10-07 09:45:59,341][INFO ][plugins                  ] [Scarlet Beetle] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
[2016-10-07 09:45:59,363][INFO ][env                      ] [Scarlet Beetle] using [1] data paths, mounts [[/data (/dev/mapper/platform-data)]], net usable_space [2.5tb], net total_space [2.5tb], spins? [possibly], types [xfs]
[2016-10-07 09:45:59,363][INFO ][env                      ] [Scarlet Beetle] heap size [989.8mb], compressed ordinary object pointers [true]
[2016-10-07 09:45:59,390][WARN ][threadpool               ] [Scarlet Beetle] requested thread pool size [60] for [index] is too large; setting to maximum [32] instead
[2016-10-07 09:46:00,795][INFO ][node                     ] [Scarlet Beetle] initialized
[2016-10-07 09:46:00,795][INFO ][node                     ] [Scarlet Beetle] starting ...
[2016-10-07 09:46:00,927][INFO ][transport                ] [Scarlet Beetle] publish_address {172.17.0.16:9300}, bound_addresses {[::]:9300}
[2016-10-07 09:46:00,931][INFO ][discovery                ] [Scarlet Beetle] ccs-elasticsearch/SFWrVwKRSUu--4KiZK4Kfg
[2016-10-07 09:46:03,965][WARN ][discovery.zen            ] [Scarlet Beetle] failed to connect to master [{Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}], retrying...
ConnectTransportException[[Dragon Lord][172.17.0.15:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /172.17.0.15:9300];
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
    at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$4400(ZenDiscovery.java:96)
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1296)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: /172.17.0.15:9300
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    ... 3 more
[2016-10-07 09:46:06,990][WARN ][discovery.zen            ] [Scarlet Beetle] failed to connect to master [{Dragon Lord}{5wNwWJRFRS-2dRY5AGqqGQ}{172.17.0.15}{172.17.0.15:9300}], retrying...
ConnectTransportException[[Dragon Lord][172.17.0.15:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /172.17.0.15:9300];
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:1002)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:937)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:911)
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:260)
    at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:444)
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:396)
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$4400(ZenDiscovery.java:96)
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1296)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

As you can see from logs, Node 2 and 3 are aware of master, Node1, but unable to connect. I have tried most of the configurations about network.host which you can see commented in configuration code and neither of them work. Any leads will be appreciated.

This is the state of ports:

 netstat -nlp | grep 9200
    tcp        0      0 10.240.135.140:9200     0.0.0.0:*               LISTEN      188116/docker-proxy 
    tcp        0      0 10.240.137.112:9200     0.0.0.0:*               LISTEN      187240/haproxy 

netstat -nlp | grep 9300
tcp        0      0 :::9300                 :::*                    LISTEN      188085/docker-proxy 

解决方案

I was able to form cluster with following settings

network.publish_host=CONTAINER_HOST_ADDRESS i.e. address of node where the container is running.

network.bind_host=0.0.0.0
transport.publish_port=9300
transport.publish_host=CONTAINER_HOST_ADDRESS

tranport.publish_host is important when your are running ES behind proxy/ load balancer such nginx or haproxy.

这篇关于Elasticsearch 2.4节点不会与ConnectTransportException形成集群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆