Введение
Elasticsearch — это распределенная система полнотекстового поиска и анализа с открытым исходным кодом. Он поддерживает операции RESTful и позволяет хранить, искать и анализировать большие объемы данных в режиме реального времени. Elasticsearch — одна из самых популярных поисковых систем, которая поддерживает приложения со сложными требованиями к поиску, такие как крупные интернет-магазины и аналитические приложения.
В этом руководстве рассматривается установка Elasticsearch на CentOS 8.
Если вы хотите установить Elasticsearch на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить Java
Elasticsearch — это Java-приложение, поэтому первым шагом будет установка Java.
Запустите команду от имени пользователя root или пользователя с помощью команды sudo, чтобы установить пакет OpenJDK:
sudo dnf install java-11-openjdk-devel
Проверьте установку Java, распечатав версию Java:
java -version
Вывод должен выглядеть так:
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)
Установить эластичный поиск
Elasticsearch недоступен в стандартных репозиториях CentOS 8. Мы установим его из RPM-репозитория Elasticsearch.
Импортируйте GPG репозитория с помощью команды rpm
:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Откройте текстовый редактор и создайте файл репозитория в каталоге /etc/yum.repos.d/
:
sudo vi /etc/yum.repos.d/elasticsearch.repo
Вставьте в файл следующее содержимое:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Сохраните файл и закройте текстовый редактор.
На момент написания этой статьи последняя версия Elasticsearch — 7.6
. Если вы хотите установить более старую версию Elasticsearch, измените 7.x
на нужную вам версию.
Теперь, когда репозиторий включен, установите пакет Elasticsearch, набрав:
sudo dnf install elasticsearch
После завершения процесса установки запустите и включите службу:
sudo systemctl enable elasticsearch.service --now
Чтобы убедиться, что Elasticsearch запущен, используйте curl
для отправки HTTP-запроса на порт 9200 на локальном хосте:
curl -X GET "localhost:9200/"
Вывод будет выглядеть следующим образом:
{
"name": "TEST-SERVER-1",
"cluster_name": "elasticsearch",
"cluster_uuid": "PT16lhJVQiaMPxKMYoXrDg",
"version": {
"number": "7.6.0",
"build_flavor": "default",
"build_type": "rpm",
"build_hash": "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date": "2020-02-06T00:09:00.449973Z",
"build_snapshot": false,
"lucene_version": "8.4.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
Запуск службы может занять 5-10 секунд. Если вы видите curl: (7) Failed to connect to localhost port 9200: Connection refused
, подождите несколько секунд и повторите попытку.
Чтобы просмотреть сообщения, зарегистрированные службой Elasticsearch, используйте следующую команду:
sudo journalctl -u elasticsearch
На данный момент вы установили Elasticsearch на свой сервер CentOS.
Настройка эластичного поиска
Данные Elasticsearch хранятся в каталоге /var/lib/elasticsearch
, файлы конфигурации находятся в /etc/elasticsearch
.
По умолчанию Elasticsearch настроен на прослушивание только на локальном хосте. Если клиент, подключающийся к базе данных, работает на том же хосте, и вы настраиваете кластер с одним узлом, вам не нужно изменять файл конфигурации по умолчанию.
Удаленный доступ
Elasticsearch не реализует аутентификацию по умолчанию, поэтому любой, у кого есть доступ к HTTP API, может получить к нему доступ. Если вы хотите разрешить удаленный доступ к серверу Elasticsearch, вам необходимо настроить брандмауэр и разрешить доступ к порту 9200 Elasticsearch только доверенным клиентам.
Например, чтобы разрешить подключения только с 192.168.222.222
, введите следующие команды.
Выполните следующую команду, чтобы разрешить оценку с удаленного доверенного IP-адреса через порт 9200
:
sudo firewall-cmd --new-zone=elasticsearch --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=elasticsearch --add-source=192.168.222.222/32 --permanent
sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent
sudo firewall-cmd --reload
Не забудьте изменить 192.168.222.222
на ваш удаленный IP-адрес.
Далее, если вы хотите разрешить доступ с другого IP-адреса, используйте:
sudo firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent
После настройки брандмауэра следующим шагом будет изменение конфигурации Elasticsearch и разрешение Elasticsearch прослушивать внешние подключения.
Для этого откройте файл конфигурации elasticsearch.yml
:
sudo nano /etc/elasticsearch/elasticsearch.yml
Найдите строку, содержащую network.host
, раскомментируйте ее и измените значение на 0.0.0.0
:
network.host: 0.0.0.0
Затем найдите строку, содержащую discovery.seed_hosts: ['host1',..]
, раскомментируйте ее и измените значение следующим образом:
discovery.seed_hosts: []
Сохраните и закройте файл.
Если на вашем компьютере есть несколько сетевых интерфейсов, укажите IP-адрес интерфейса, чтобы заставить Elasticsearch прослушивать только предоставленный интерфейс.
Перезапустите службу Elasticsearch, чтобы изменения вступили в силу:
sudo systemctl restart elasticsearch
Это все. Теперь вы можете подключиться к серверу Elasticsearch удаленно.
Вывод
Мы показали вам, как установить Elasticsearch на CentOS 8.
Для получения дополнительной информации об Elasticsearch посетите страницу официальной документации.