欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

elasticsearch-2.1.0集群搭建 及其出现的一些问题

程序员文章站 2022-03-26 11:25:14
...

我们在使用es时,如果只有一个节点,那么索引的主分片都分布在一台机器上,分片副本没有分配,这个时候集群的状态是yellow状态。

我这里开始搭建一个elasticsearch-2.1.0集群,记录一下遇到的一些问题。

这里的搭建环境如下:

(1)"10.4.30.151","10.4.30.81"两台虚拟机

(2)操作系统CentOS release 5.11 (Final)

(3)es版本elasticsearch-2.1.0

(4)jdk版本jdk1.7.0_80


当然这个集群我之前通过执行如下命令,创建2个索引,并索引了一些文档数据

megacorp索引是默认配置生成,分片为5个,副本为一份

curl -XPUT 'http://10.4.30.151:9200/megacorp/employee/4' -d '{
    "first_name" : "John4",
    "last_name" :  "Smith4",
    "age" :        35,
    "about" :      "I love to go rock climbing3",
    "interests": [ "sports4" ]
}'


创建索引blogs 分片是3个,副本是一份

curl -XPUT 'http://10.4.30.151:9200/blogs' -d '{
 "settings" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 1
   }
}'

这样总共主分片8个,分片副本8个,总共16个分片。

(一)首先按照elasticsearch-2.1.0 及其插件head的安装 创建新用户es并启动一个节点10.4.30.151

这里把10.4.30.151节点es使用的配置文件贴出,注意配置项的开头一个空格,不然会报错:

 cluster.name: yujie-es-30-151

 node.name: yujie-30-151

 path.data: /data/yujie_elasticsearch/es_data

 path.logs: /data/yujie_elasticsearch/es_logs

 network.host: 10.4.30.151

 http.port: 9200
# Elasticsearch nodes will find each other via unicast, by default.
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#2.0版本之后的es 默认是通过单播的方式发现集群,所以这里一定要配置好集群的ip列表
 discovery.zen.ping.unicast.hosts: ["127.0.0.1", "10.4.30.151","10.4.30.81"]

查看集群的状态:
elasticsearch-2.1.0集群搭建 及其出现的一些问题



集群状态为yellow,**的主分片active_primary_shards:8,且分片副本都没有分布unassigned_shards:8。

(二)启动另一个节点10.4.30.81

起初我的配置文件内容如下:

 cluster.name: yujie-es-30-151

 node.name: yujie-30-81

 path.data: /data/yujie_elasticsearch/es_data

 path.logs: /data/yujie_elasticsearch/es_logs

 http.port: 9200

# Elasticsearch nodes will find each other via unicast, by default.
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#2.0版本之后的es 默认是通过单播的方式发现集群,所以这里一定要配置好集群的ip列表
 discovery.zen.ping.unicast.hosts: ["127.0.0.1","10.4.30.151","10.4.30.81"]

但是在启动的过程中报出如下异常错误:

[INFO ][discovery.zen            ] [yujie-30-81] failed to send join request to master [{Chloe Tran}{51xPkx60Th2t6rZVOS2EDA}{10.4.30.151}{10.4.30.151:9300}], reason [RemoteTransportException[[Chloe Tran][10.4.30.151:9300][internal:discovery/zen/join]]; nested: ConnectTransportException[[yujie-30-81][127.0.0.1:9300] connect_timeout[30s]]; nested: NotSerializableExceptionWrapper[Connection refused: /127.0.0.1:9300]; ]

新启动的节点不能加入到集群中,后来我添加了如下配置:

#network.host: 10.4.30.81
 network.publish_host: 10.4.30.81
 network.bind_host: 10.4.30.81
单独配置network.host 或者同时配置network.publish_host,network.bind_host。这样正常启动81节点。

network.publish_host是发布的与其它es节点进行通信的ip地址,network.bind_host是绑定ip与这台主机;而network.host可以同时设置这两个值。

如果单独设置network.publish_host,network.bind_host其中任意一个 启动也还是报错。


再次检查机器健康状态,看到集群已经是green状态,表名主分片和分片副本都已经分配了:
elasticsearch-2.1.0集群搭建 及其出现的一些问题