我在一台机器上有一个双节点集群,一个配置文件(elasticsearch.yml)。是否可以创建另一个.yml-config文件并使用不同的配置文件启动每个实例?例如,我希望同时在两个端口(localhost:9200和localhost:9201)上运行集群。
我找不到用于启动弹性集群的命令行API(config-file作为参数?)。
答案 0 :(得分:7)
您应该可以使用命令行中的-Epath.conf
设置启动第二个ES实例,并指向另一个您拥有第二个elasticsearch.yml
配置文件的文件夹
./bin/elasticsearch -Epath.conf=/path/to/my/second/config/
答案 1 :(得分:2)
从ES 6发行版开始的用于基于同一ES安装启动多个实例的更新方法是在启动执行之前具有多个配置文件夹并声明路径变量
ES_PATH_CONF=/apps/my-es/conf/node-1 ./elasticsearch
ES_PATH_CONF=/apps/my-es/conf/node-2 ./elasticsearch
要作为守护程序启动,请使用-d
和-p <pidName>
来定义pid名称
ES_PATH_CONF=/apps/my-es/conf/node-1 ./elasticsearch -d -p es_node1_pid
ES_PATH_CONF=/apps/my-es/conf/node-2 ./elasticsearch -d -p es_node2_pid
这是ES文档的参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html
答案 2 :(得分:0)
它必须不仅仅是命令行。你应该看一下安装两个配置为在两个不同端口监听的elasticsearch服务实例。
如果您使用的是ubuntu操作系统 - 你可以为两个实例安装两个init.d脚本 1)在init.d脚本中设置运行服务的进程的名称,例如两个集群elasticsearch_node_1和elasticsearch_node_2 2)在同一文件中,将日志,数据和配置文件的路径配置为两个init文件的单独位置。 直到这里你将在同一台机器上运行两个服务
也许您不希望将实例作为OS服务运行,然后我建议您检查此链接
$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.1.yml
$ bin/elasticsearch -Des.config=$ES_HOME/config/elasticsearch.2.yml
3)现在修改init脚本指向的每个实例的elasticsearch.yml文件。 将http.port更改为您要在其上运行实例的任何端口。 对于发现host1和host2将是相同的,只需要为每个实例将端口更改为另一个节点,并相应地为每个实例设置path.data和path.logs
http.port: 9200
discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
path.data: /path/to/data
path.logs: /path/to/logs