最近在学习elasticsearch,准备在三台云服务器上搭建elasticsearch集群,可是三台云服务器之间连接总是连接不通
org.elasticsearch.transport.ConnectTransportException: [node-1][172.21.0.8:9300] connect_timeout[30s]
at org.elasticsearch.transport.TcpChannel.awaitConnected(TcpChannel.java:163) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:615) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.transport.TcpTransport.connectToNode(TcpTransport.java:513) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:327) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:314) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:515) [elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:483) [elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.discovery.zen.ZenDiscovery.access$2500(ZenDiscovery.java:90) [elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1253) [elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:568) [elasticsearch-6.1.1.jar:6.1.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_102]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_102]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
可以看到从节点连接主节点时用的是内网IP,要是能改为外网IP应该就好了,可我在网上怎么也找不到如何配置。
后来查找elasticsearch配置文档终于找到了解决方法。
之前配置ip时使用的是
network.host: 192.168.1.102
这样设置不会区分机器连接自己和同其他节点交互的IP地址
改为使用
network.bind_host: 192.168.1.111 #设置绑定的ip地址,这里使用内网ip
network.publish_host: 131.132.157.121 #设置其它节点和该节点交互的ip地址,把他设置为外网IP
完整配置方法:
- 主节点:修改配置文件/opt/module/elasticsearch-5.2.2/config/elasticsearch.yml
[itstar@bigdata101 config]$ pwd
/opt/module/elasticsearch-5.6.1/config
[itstar@bigdata101 config]$ vi elasticsearch.yml
# ---------------------------------- Cluster -------------------------------------
#集群名称,可以随便起,但需要集群中所有机器的集群名称相同
cluster.name: my-application
# ------------------------------------ Node --------------------------------------
#节点别名,用于在日志中区分机器,也可以随便起,只要和集群这其他节点名字不同即可
node.name: node-102
node.master: true
node.data: true
# ----------------------------------- Paths ---------------------------------------
#数据存储目录
path.data: /opt/module/elasticsearch-5.6.1/data
#日志存储目录
path.logs: /opt/module/elasticsearch-5.6.1/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# ---------------------------------- Network ------------------------------------
#设置绑定的ip地址,**这里使用****内网ip******
network.bind_host: 192.168.1.111
#设置其它节点和该节点交互的ip地址,**把他设置为外网IP**
network.publish_host: 131.132.157.121
# --------------------------------- Discovery ------------------------------------
#定义集群去哪里找
discovery.zen.ping.unicast.hosts: ["bigdata101"]
(1)cluster.name
如果要配置集群需要两个节点上的elasticsearch配置的cluster.name相同,都启动可以自动组成集群,这里如果不改cluster.name则默认是cluster.name=my-application,
(2)nodename随意取但是集群内的各节点不能相同
(3)修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格
- 配置linux系统环境
(1)编辑limits.conf 添加类似如下内容 [itstar@hadoop102 elasticsearch-5.6.1]$ sudo vi /etc/security/limits.conf 添加如下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096 (2)进入limits.d目录下修改配置文件。 [itstar@hadoop102 elasticsearch-5.6.1]$ sudo vi /etc/security/limits.d/90-nproc.conf 修改如下内容: * soft nproc 1024 #修改为 * soft nproc 4096 (3)修改配置sysctl.conf [itstar@hadoop102 elasticsearch-5.6.1]$ sudo vi /etc/sysctl.conf 添加下面配置: vm.max_map_count=655360 并执行命令: [itstar@hadoop102 elasticsearch-5.6.1]$ sudo sysctl -p 然后,重新启动elasticsearch,即可启动成功。(注意:不能在root用户下启动!!)
-
其他机器
将主节点配置好的elasticsearch通过scp复制到其他节点
(1)修改Elasticsearch配置信息
修改几个配置:
node.name: node-102
node.master: false
node.data: truenetwork.bind_host: 192.168.1.112
network.publish_host: 131.132.157.191
(2)修改Linux相关配置信息(同主节点)
使用$ curl http://bigdata102:9200 命令查看启动是否成功