Настройка кластера Elasticsearch 7 - PullRequest
1 голос
/ 25 мая 2019

У меня есть три сервера, и я установил на всех из нихasticsearch.

В файлеластикомласте.yml у меня есть следующий конфиг:

первый сервер: 172.31.1.1

# /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

node.name: es-2
network.host: 172.31.1.2
# everything else same as first server

второй сервер: 172.31.1.3

node.name: es-3
network.host: 172.31.1.3
# everything else same as first server

Теперь, когда я запускаю: curl http://es -1: 9200 / _cluster / stats

Я замечаю, что размер кластера равен 1. Если я запускаю ту же команду curl надругой сервер, опять размер кластера равен 1, а имя кластера такое же, но имя кластера другое ...

Кажется, что узлы не могут соединяться друг с другом ...


Я использую сервер Ubuntu, для имени узла я отредактировал / etc / hostname и изменил имя хоста на es-1 и использовал то же имя вasticsearch.yml ... но кажется, что узлы кластера не могут общатьсядруг с другом ...


Обновление 1

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

Я просто проверяю журнал, и это странно ...

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

Вот как я запускаю службу:

sudo /bin/systemctl enable elasticsearch.service

Обновление 3

Как указал @hamidbayat, ядумаю есть разрешение проблем.Только суперпользователь имеет разрешение на / var / lib /asticsearch

Если я попытаюсь запустить эластичный поиск как мой пользователь Ubuntu, я получу эту ошибку:

ubuntu@my-ip:~$ /usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-env: line 73: 
/etc/default/elasticsearch: Permission denied

Если я попытаюсь запустить егокак root, я получу эту ошибку:

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вам необходимо настроить проверку начальной загрузки, в 6.x выдается предупреждение

Для версии 7.x необходима настройка начальной загрузки

bootstrap.system_call_filter: false добавить эту попытку, начиная с

0 голосов
/ 26 мая 2019

Вот как я решил проблему:

  1. Я читал elasticsearch.log и думал, что ничего не получаю в файле журнала, но понял, что журналы записываются вcluster-name.log (es-cluster.log в моем случае)

  2. Я прокомментировал http.port: 9200 в elasticsearch.yml Я считаю, чтоasticsearch использует 9300 по умолчанию.

  3. Я удалил собственный ip узла из discovery.seed_hosts:, поэтому в этот список добавляются только другие узлы, например, для первого сервера:

    discovery.seed_hosts: ["172.31.1.2", "172.31.1.3"]

  4. Я понял, что каждый узел сформировал свой собственный кластер, и поэтому они не присоединялись к одному кластеру.Поэтому мне пришлось объединить кластеры.Поскольку у меня не было данных в кластере, у меня была возможность удалить путь к данным.Поэтому я оставил работающий узел 1 и остановил поиск на узлах 2 и 3. Затем удалил путь к данным на узлах 2 и 3 (в моем случае путь к данным был /var/lib/elasticsearch/).Затем запустили узлы 2 и 3, и они присоединились к кластеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...