Все действия описные ниже, выполняются от пользователя root, не забывайте использовать sudo
На сайте Elasticsearch указано:
Elasticsearch requires Java 8 or later.
Тут 3 варианта развития событий:
1 — у вас нет Java, вы ее устанавливаете с нуля;
2 — у вас есть старая версия, которую вы удаляете и устанавливаете свежую;
3 — вы устанавливаете свежую версия, не удаляя старую, просто указав новую версию по умолчанию
Проверим установленную версию Java:
java -version
Если Java установлена, то результате должно выдать похожий ответ:
java version "1.7.0_181" OpenJDK Runtime Environment (amzn-2.6.14.8.80.amzn1-x86_64 u181-b00) OpenJDK 64-Bit Server VM (build 24.181-b00, mixed mode)
Если у вас не установлена Java или установлена старая версия и вы не хотите ее удалять, переходите сразу к установке.
Удаление Java (если вы выбрали путь с удалением старой версии).
Посмотрим, название установленного пакета:
rpm -qa | grep openjdk
Удаляем старую версию:
yum autoremove java-1.7.0-openjdk.x86_64
Или же так:
yum autoremove $(rpm -qa | grep openjdk)
Установка Java.
Смотрим более свежие версии:
yum search openjdk
Устанавливаем:
yum install -y java-1.8.0-openjdk.x86_64
Если нужна еще свежея версия, чем в репозиториях, то скачайте RPM файл с сайта разработчика и установите.
Замена версии Java по умолчанию (если у вас была старая версия Java и вы ее не удалили).
alternatives --config java
Указываем номер по списку нужной версии и нажимаем Enter.
Установка Elasticsearch.
Теперь добавим репозиторий Elasticsearch. На момент написания, актуальная версия была 6.Х
Импортируем ключ репозитория:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Затем добавим репозиторий:
cat > /etc/yum.repos.d/elasticsearch.repo << EOF [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Посмотрим список репозиториев:
yum repolist
Ну теперь можно приступить к установке:
yum install -y elasticsearch
Добавим в автозапуск:
Если у вас CentOS 7:
systemctl enable elasticsearch
Если вы делали это на AWS, на амазоновском образе на основе CentOS'а без systemd (Amazon Linux AMI 2018.03), то по старинке через chkconfig:
chkconfig elasticsearch on
Проверим:
chkconfig | grep elasticsearch elasticsearch 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Запустим Elasticsearch:
systemd:
systemctl start elasticsearch
SysV:
service elasticsearch start
Я запускал Elasticsearch на AWS, и взял для этого инстанс t2.micro, у которого 1 Gb RAM, поэтому при запуске Elasticsearch, я увидел следующее:
Starting elasticsearch: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory. # An error report file with more information is saved as: # /var/log/elasticsearch/hs_err_pid23835.log
Решение данной проблемы в следующем, открываем файл настроек Java Elasticsearch:
vim /etc/elasticsearch/jvm.options
Смотрим нужное нам описание:
################################################################ ## IMPORTANT: JVM heap size ################################################################ ## ## You should always set the min and max JVM heap ## size to the same value. For example, to set ## the heap to 4 GB, set: ## ## -Xms4g ## -Xmx4g ## ## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html ## for more information ## ################################################################ # Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space
И смотрим, что же указано у нас:
-Xms1g -Xmx1g
Меняем на:
-Xms512m -Xmx512m
И пробуем запустить еще раз.
512 мегабайт для Elasticserach очень мало, но для ознакомления хватит.
Так же Elasticsearch может не запуститься, если значение разрешенных запущенных процессов слишком низкое, и так же открытых файлы, чтобы этого избежать, достаточно выполнить:
ulimit -u 4096 ulimit -n 65536
Текущие значения можно посмотреть так:
ulimit -a
Для теста достаточно, а на постоянную основу нужно вносить изменения в "/etc/security/limits.conf"
Если вы настраиваете на Ubuntu, обратите внимание, что она может игнорировать этот файл, тогда необходимо отрыть файл "/etc/pam.d/su" и раскомментировать следующую строку:
# session required pam_limits.so
После этого достаточно перелогинится.
По умолчанию Elasticsearch слушает localhost на порту 9200 TCP, поэтому проверить его работоспособность можно так:
curl localhost:9200
Вы должны получить что-то вроде:
{ "name" : "hg20ils", "cluster_name" : "elasticsearch", "cluster_uuid" : "ErZwY7nKQG6rEoF-stKsiA", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
На этом статья о установке Elasticsearch заканчивается, в следующей мы 2 существующих инстанса с установленным Elasticsearch объединим в кластер.