elasticsearch坑爹二三事之——程序启动时的配置文件位置 篇

elasticsearch坑爹二三事之——程序启动时的配置文件位置 篇

因为要实现安装自动化,所以在安装某个大型系统的elasticsearch 组件的时候用到了如下安装脚本:


但是安装完成之后无论怎么查询,cluster.name都是奇怪的:


讲道理我已经用sed命令将配置文件中的cluster.name字段替换了,但是为什么程序起来之后还是会使用XXX_ES_CLUSTER_NAME这个默认名称呢?

后来才发现,问题出在了倒数第二句 /usr/local/elasticsearch/bin/elasticsearch -d这句话,这句话在执行的时候,当前的路径下是存在了一个elasticsearch.yml的,所以es不再使用位于/usr/local/elasticsearch/config下面的配置文件,而是使用了当前目录下的配置文件,所以启动之后cluster.name一直显示不对。

解决方法就是启动之前,将当前目录下的配置文件删掉就好了:

修改后的安装脚本是:

#!/bin/shecho "begin start elasticsearch ..."cur_dir=$(pwd)# unzip unzip $cur_dir/elasticsearch-1.4.4.zip# copy yml from current dir to configecho "y"|cp -f elasticsearch.yml $cur_dir/elasticsearch-1.4.4/config# reset cluster name to config filesed -i "s/XXX_ES_CLUSTER_NAME/es$RANDOM$RANDOM/g" $cur_dir/elasticsearch-1.4.4/config/elasticsearch.yml# move to usr /localmv $cur_dir/elasticsearch-1.4.4 /usr/local/elasticsearchcat /usr/local/elasticsearch/config/elasticsearch.ymlsleep 10s# delete the yml file in current dirrm -f elasticsearch.yml/usr/local/elasticsearch/bin/elasticsearch -decho "elasticsearch start success!"


elasticsearch.yml中存在:

其中的XXX_ES_CLUSTER_NAME是为了替换占位用的,替换成了类似于随机字符的东西,防止多台局域网内的ES形成集群(有特殊需求)。


关键词:

elasticsearch随机指定cluster.name

elasticsearch局域网内防止形成集群

elasticsearch执行备份时提示文件无法共享

elasticsearch配置文件设置无效

推荐阅读