准备在自己的win10系统搞个es集群,发现启动报错,查了下才知道有一项重要的配置有问题,另外简述下我搭建本地集群的坑,给相同入坑经历的兄弟参考下
1.配置如下选项
cluster.name: es6
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-9600
node.master: true
#这个配置限制了单节点上可以开启的ES存储实例的个数,我们需要开多个实例,因此需要把这个配置写到配置文件中,并为这个配置赋值为2或者更高
node.max_local_storage_nodes: 3
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9500", "127.0.0.1:9700"]
2.注意分片分配问题:
es可以根据磁盘使用情况来决定是否继续分配shard。默认设置是开启的,也可以通过api关闭:cluster.routing.allocation.disk.threshold_enabled: false
在开启的情况下,有两个重要的设置:
cluster.routing.allocation.disk.watermark.low:控制磁盘最小使用率。默认85%.说明es在磁盘使用率达到85%的时候将会停止分配新的shard。也可以设置为一个绝对数值,比如500M.表示如果磁盘空间小于500MB不允许分配分片。
cluster.routing.allocation.disk.watermark.high:控制磁盘的最大使用率。默认90%.说明在磁盘使用率达到90%的时候es将会relocate shard去其他的节点。同样也可以设置为一个绝对值。
watermark setting可以通过update-api动态修改,默认es每隔30s会收集各个节点磁盘的使用情况,可以cluster.info.update.interval来设置时间间隔。
3.动态修改分片数量:
我们可以用 update-index-settings
API 动态修改副本数:
PUT/my_temp_index/_settings
{
"number_of_replicas":1
}
4.注意集群部署时复制代码问题
es部署代码一定不要带data数据的复制,其中如果其中带有node节点会导致节点id重复提示添加失败(这是我血的教训)
5.手动命令启动自动分片分配
默认情况下,所有节点上启用分片分配,但您可能在某些时候禁用了分片分配(例如,为了执行滚动重新启动),并且忘记重新启用它,可通过如下命令启动
curl -XPUT 'localhost:9200/_cluster/settings' -d
'{ "transient":
{ "cluster.routing.allocation.enable" : "all"
}
我本机启动了三个节点如下图所示: