首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置Elasticsearch 7集群

配置Elasticsearch 7集群
EN

Stack Overflow用户
提问于 2019-05-25 04:50:47
回答 2查看 2.1K关注 0票数 2

我有三台服务器,我已经在所有服务器上安装了elasticsearch。

在elasticsearch.yml中,我有以下配置:

第一服务器: 172.31.1.1

代码语言:javascript
复制
# /etc/elasticsearch/elasticsearch.yml
cluster.name: es-cluster
node.name: es-1
network.host: 172.31.1.1
http.port: 9200
network.host:
discovery.seed_hosts: ["172.31.1.1", "172.31.1.2", "172.31.1.3"]
cluster.initial_master_nodes:["es-1", "es-2", "es-3"]

gateway.recover_after_nodes: 2
gateway.expected_nodes: 3
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# some more default values

第二服务器: 172.31.1.2

代码语言:javascript
复制
node.name: es-2
network.host: 172.31.1.2
# everything else same as first server

第二服务器: 172.31.1.3

代码语言:javascript
复制
node.name: es-3
network.host: 172.31.1.3
# everything else same as first server

现在当我运行: curl cluster/stats

我注意到集群大小是1。如果我在不同的服务器上运行相同的curl命令,那么集群大小也是1,cluster_name是相同的,但是cluster_uuid是不同的.

似乎节点之间无法连接.

我正在使用Ubuntu服务器,对于节点名,我编辑了/etc/hostname,并将主机名更改为es-1,并在elasticsearch.yml中使用了相同的名称.但似乎集群节点无法相互通信.

更新1

代码语言:javascript
复制
curl http://es-1:9200/_cat/health
prod-es-cluster red 1 1 0 0 0 0 0 0 - NaN%

curl http://es-1/:9200/_cat/nodes
172.31.1.1 8 38 1 0.03 0.03 0.00 mdi * ip-172-31-1-1

我只要查一下日志就会觉得奇怪..。

代码语言:javascript
复制
sudo cat /var/log/elasticsearch/elasticsearch.log
[INFO ][o.e.n.Node               ] [es-1] stopping ...
[INFO ][o.e.x.w.WatcherService   ] [es-1] stopping watch service, reason [shutdown initiated]
[INFO ][o.e.x.m.p.l.CppLogMessageHandler] [es-1] [controller/19159] [Main.cc@148] Ml controller exiting
[INFO ][o.e.x.m.p.NativeController] [es-1] Native controller process has stopped - no new native processes can be started
[INFO ][o.e.n.Node               ] [es-1] stopped
[INFO ][o.e.n.Node               ] [es-1] closing ...
[INFO ][o.e.n.Node               ] [es-1] closed

都写入日志文件..。在重新启动Elasticsearch之后,没有任何新的内容被添加到日志文件中。感觉好像我读错了日志文件,或者我把配置放在了错误的.yml文件中。

更新2

我就是这样开始这项服务的:

代码语言:javascript
复制
sudo /bin/systemctl enable elasticsearch.service

更新3

正如@hamidbayat所指出的,我认为存在许可问题。只有超级用户拥有/var/lib/elasticsearch的权限

如果我试图作为我的ubuntu用户运行弹性搜索,我将得到以下错误:

代码语言:javascript
复制
ubuntu@my-ip:~$ /usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-env: line 73: 
/etc/default/elasticsearch: Permission denied

如果我尝试以root方式运行它,我将得到以下错误:

代码语言:javascript
复制
ubuntu@myip:~$ sudo /usr/share/elasticsearch/bin/elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[data][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [es-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.1.0.jar:7.1.0]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.1.0.jar:7.1.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:102) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:169) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:325) ~[elasticsearch-7.1.0.jar:7.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.1.0.jar:7.1.0]
        ... 6 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-26 09:22:21

我就是这样解决这个问题的:

  1. 我当时正在读elasticsearch.log,认为日志文件中没有任何内容,但意识到日志正在被写入cluster-name.log (在我的例子中是es-cluster.log)。
  2. 我在elasticsearch.yml中注释掉了elasticsearch.yml,我相信elasticsearch默认使用9300。
  3. 我从discovery.seed_hosts:中删除了节点自己的IP,因此只有其他节点被添加到这个列表中,例如对于第一个服务器: discovery.seed_hosts: ["172.31.1.2", "172.31.1.3"]
  4. 我意识到每个节点都形成了自己的集群,这就是它们不加入同一个集群的原因。所以我不得不合并这些集群。由于集群中没有数据,所以可以选择删除数据路径。因此,我让节点1运行并停止节点2& 3上的elasticsearch,然后删除节点2和3上的数据路径(在我的例子中,数据路径是/var/lib/elasticsearch/)。然后启动节点2和3,它们加入了集群。
票数 3
EN

Stack Overflow用户

发布于 2019-05-27 11:05:51

您需要配置引导检查,在6.x中它会引发警告

对于7.x版本,引导配置必须是

bootstrap.system_call_filter: false添加此尝试启动

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56301803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档