X

Ubuntu: Как установить Elasticsearch 7 для Magento 2.4

Решил установить и посмотреть на новинки в Magento 2.4.2-p1. Для инсталяции Мадженто нужен Elasticsearch, поэтому пришлось его устанавливать, об этом и пойдет речь..

Устанавливаем JDK если еще не установлен

sudo apt install openjdk-8-jdk

Добавляем GPG ключ репозитория эластика

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Теперь добавляем нужную версию репозитория, в моем случае это 7.x

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Обновляем репу, проверяем версию и устанавливаем

sudo apt update

dpkg -s elasticsearch | grep Version
Version: 7.13.2

sudo apt install elasticsearch

Далее, я перенес папку данных с системного раздела на рабочий, тк там быстрее диск

sudo cp -r /var/lib/elasticsearch /work/progr/elastic/
sudo chown -R elasticsearch:elasticsearch /work/progr/elastic/elasticsearch
sudo rm -rf /var/lib/elasticsearch

и поменял ее в конфиге /etc/elasticsearch/elasticsearch.yml

path.data: /work/progr/elastic/elasticsearch

Далее я запустил elastic и добавил его в автозагрузку

sudo systemctl start elasticsearch.service
sudo systemctl enable elasticsearch.service

Если вдруг у вас сразу не заведется, ошибки можно посмотреть так

journalctl -xe

cat /var/log/elasticsearch/elasticsearch.log

Далее, я обнвружил что Elastic съел всю свободную память

systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-07-01 13:34:17 EEST; 18min ago
       Docs: https://www.elastic.co
   Main PID: 38992 (java)
      Tasks: 66 (limit: 38276)
     Memory: 16.3G   <<<<<<<<<<<<<<<<<<

Чтобы умерить его аппетиты, создаем конфиг и указываем в нем разрешенный объем памяти, я выделил 2Гб.
Файл: /etc/elasticsearch/jvm.options.d/custom.options

-Xms2g
-Xmx2g

Теперь перезагружаем и видим что потребление снизилось

systemctl restart elasticsearch

systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-07-01 14:12:15 EEST; 8min ago
       Docs: https://www.elastic.co
   Main PID: 36990 (java)
      Tasks: 66 (limit: 38276)
     Memory: 2.3G    <<<<<<<<<<<<<<<<<

так же это можно глянуть в логе

sudo cat /var/log/elasticsearch/elasticsearch.log | grep "heap size"
[2021-07-01T14:09:00,378][INFO ][o.e.e.NodeEnvironment    ] [homenet100] heap size [15.6gb], compressed ordinary object pointers [true]
[2021-07-01T14:12:27,479][INFO ][o.e.e.NodeEnvironment    ] [homenet100] heap size [2gb], compressed ordinary object pointers [true]

Проверяем, что все работает

$ curl -X GET "localhost:9200/"
{
  "name" : "homenet100",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "N1uD5f0yRSCsbkHGRYQCTg",
  "version" : {
    "number" : "7.13.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "4d960a0733be83dd2543ca018aa4ddc42e956800",
    "build_date" : "2021-06-10T21:01:55.251515791Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Вот и все готово 🙂

Во время установки случился один прикол, а именно, версия Elastic-а в ответе от него была не 7.x, а 5.x. Я довольно долго не мог сообразить, как такое может быть пока не начал смотреть процессы и увидел, что от каких-то прошлых активностей у меня остался висеть докер, в котором был проброшен порт на машину. Это в итоге приводило к ситуации, что я стучался не в установленный эластик, а в эластик внутри докера.

$ curl -X GET "localhost:9200/"                           
{
  "name" : "Ue_iidi",
  "cluster_name" : "pim",
  "cluster_uuid" : "ltKanCrAScGQwXJnPUKW1g",
  "version" : {
    "number" : "5.6.2",
    "build_hash" : "57e20f3",
    "build_date" : "2017-09-23T13:16:45.703Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

$ systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-07-01 08:07:26 EEST; 9h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 2754 (dockerd)
      Tasks: 77
     Memory: 69.3M
     CGroup: /system.slice/docker.service
             ├─2754 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ├─3295 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9999 -container-ip 172.18.0.2 -container-port 9000
             ├─3313 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9300 -container-ip 172.18.0.3 -container-port 9300
             ├─3327 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9200 -container-ip 172.18.0.3 -container-port 9200

В итоге, просто стопнул докер, убрал его из загрузки и перезагрузил локальный elastic.

systemctl disable docker
systemctl stop docker
systemctl restart elasticsearch

Всего скорее это вам не пригодится, но пусть лучше будет здесь, может быть кого-то "заработавшегося" натолкнет на правильные мысли.

Тэги: elasticsearch

Комментарии (0)