Установка Elasticsearch
Рекомендуемый способ установки Elasticsearch на CentOS 7 — установка пакета rpm из официального репозитория Elasticsearch
Чтобы установить OpenJDK 8 в вашей системе CentOS, введите:
yum install java
или
sudo yum install java-1.8.0-openjdk-devel
Проверьте установку Java, распечатав версию Java:
java -version
Результат должен выглядеть примерно так:
openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09) OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
Теперь, когда Java установлена, следующим шагом будет добавление репозитория Elasticsearch.
Импортируйте GPG-ключ репозитория с помощью следующей команды:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Откройте текстовый редактор и создайте следующий файл repo:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Вставьте в файл следующее содержимое:
/etc/yum.repos.d/elasticsearch.repo
[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
Сохраните файл и закройте текстовый редактор.
Если вы хотите установить предыдущую версию Elasticsearch, замените 6.x в приведенной выше команде на нужную вам версию.
Теперь вы можете установить пакет Elasticsearch, набрав:
sudo yum install elasticsearch
После завершения установки Elasticsearch откройте его основной файл конфигурации elasticsearch.ymlв редакторе:
sudo nano /etc/elasticsearch/elasticsearch.yml
Elasticsearch прослушивает трафик со всех портов 9200. Вам нужно ограничить доступ извне к вашему экземпляру Elasticsearch, чтобы посторонние не могли прочитать ваши данные или закрыть ваш кластер Elasticsearch через REST API. Найдите строку, в которой указано network.host, раскоментируйте ее и замените ее значение на localhost , чтобы она выглядела так:
. . .
network.host: localhost
. . .
После завершения процесса установки запустите и включите службу, запустив:
sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
или
/bin/systemctl daemon-reload /bin/systemctl enable elasticsearch.service /bin/systemctl start elasticsearch.service /bin/systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-09-18 23:08:36 CDT; 5s ago Docs: http://www.elastic.co Main PID: 20514 (java) CGroup: /system.slice/elasticsearch.service ├─20514 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=... └─20578 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller └─20578 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
И, наконец, чтобы подтвердить успешную установку, вы можете запустить любую из этих команд:
Version: 6.8.12, Build: default/rpm/7a15d2a/2020-08-12T07:27:20.804867Z, JVM: 1.8.0_262
или
Вы можете проверить, что Elasticsearch запущен, отправив HTTP-запрос на порт 9200 на локальном хосте с помощью следующей команды curl :
curl -X GET "localhost:9200/"
Результат будет выглядеть примерно так:
{
"name" : "fLVNqN_",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6zKcQppYREaRH0tyfJ9j7Q",
"version" : {
"number" : "6.7.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "8453f77",
"build_date" : "2019-03-21T15:32:29.844721Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"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
Данные Elasticsearch хранятся в каталоге /var/lib/elasticsearch , файлы конфигурации находятся в /etc/elasticsearch .
По умолчанию Elasticsearch настроен на прослушивание только на локальном хосте. Если клиент, подключающийся к базе данных, также работает на том же хосте, и вы настраиваете кластер с одним узлом, вам не нужно изменять файл конфигурации по умолчанию.
Удаленный доступ
По умолчанию Elasticsearch не реализует аутентификацию, поэтому к нему может получить доступ любой, кто имеет доступ к HTTP API. Если вы хотите разрешить удаленный доступ к серверу Elasticsearch, вам нужно будет настроить брандмауэр и разрешить доступ к порту 9200 Elasticsearch только для доверенных клиентов.
Начиная с CentOS 7, FirewallD заменяет iptables в качестве инструмента управления брандмауэром по умолчанию.
Выполните следующую команду, чтобы разрешить оценку с удаленного доверенного IP-адреса на порту 9200 :
sudo firewall-cmd --new-zone=elasticsearch --permanent sudo firewall-cmd --reload sudo firewall-cmd --zone=elasticsearch --add-source=192.168.121.80/32 --permanent sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent sudo firewall-cmd --reload
Не забудьте изменить 192.168.121.80 на свой удаленный IP-адрес.
Позже, если вы захотите разрешить доступ с другого IP-адреса, используйте:
sudo firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent sudo firewall-cmd --reload
После настройки брандмауэра следующим шагом будет изменение конфигурации Elasticsearch и разрешение Elasticsearch прослушивать внешние подключения.
Для этого откройте файл конфигурации elasticsearch.yml :
sudo nano /etc/elasticsearch/elasticsearch.yml
Найдите строку, содержащую network.host , раскомментируйте ее и измените значение на 0.0.0.0 :
/etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
Если у вас есть несколько сетевых интерфейсов на вашем компьютере, вы можете указать IP-адрес интерфейса, который заставит Elasticsearch прослушивать только указанный интерфейс.
Перезапустите сервис Elasticsearch, чтобы изменения вступили в силу:
sudo systemctl restart elasticsearch
Вот и все. Теперь вы можете подключиться к серверу Elasticsearch из своего удаленного местоположения.