您的位置:首页 > 其它

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

2017-12-12 16:19 471 查看
我们在使用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"]


查看集群的状态:



集群状态为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状态,表名主分片和分片副本都已经分配了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息