Я установил Elastic Search 1.7.4 на CentOS 7.2 следующим образом:
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.4.noarch.rpm
sudo rpm -ivh elasticsearch-1.7.4.noarch.rpm
Служба запущена и ES работает (проверено с помощью curl), однако он слушает только IPv6 с конфигурацией по умолчанию. netstat -na дает мне следующее:
tcp6 0 0 :::9200 :::* LISTEN
tcp6 0 0 :::9300 :::* LISTEN
Используя nmap с других серверов, я вижу, что порты 9200 и 9300 отфильтрованы, брандмауэр отключен.
Редактирование /etc/elasticsearch/elasticsearch.yml и установка:
network.bind_host: 0.0.0.0
ничего не меняют. Установка этого на внешний IPv4-адрес сервера добавляет две дополнительные записи в вывод netstat -na, но мне нужно, чтобы ES был доступен для моей локальной сети, поэтому это бесполезно, и netstat по-прежнему регистрирует это как tcp6.
tcp6 0 0 192.168.0.54:9200 :::* LISTEN
tcp6 0 0 192.168.0.54:9300 :::* LISTEN
настройка:
network.bind_host: _eth0:ipv4_
Заставляет ES привязаться к локальному IPv4, и тогда он, конечно, доступен только с локального сервера. Отсутствие части «ipv4» приводит к привязке ES к IPv6-адресу сетевой карты.
Как включить привязку ES к IPv4? У меня нет альтернативы, моя сеть работает только с IPv4, и я должен использовать эту старую версию ES, потому что я запускаю некоторые приложения, для которых требуется эта версия.
From unix exchange.
This is happening because by default, AF_INET6 sockets will actually work for both IPv4 and IPv6. See section 3.7 - Compatibility with IPv4 Nodes of RFC 3493 - Basic Socket Interface Extensions for IPv6
But as you've figured out, firewalld is enabled out of the box.
create this file to your /etc/firewalld/services/elasticsearch.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Elasticsearch</short>
<description>Elasticsearch is a distributed, open source search and analytics engine, designed for horizontal scalability, reliability, and easy management.</description>
<port protocol="tcp" port="9300"/>
<port protocol="tcp" port="9200"/>
</service>
Update permissions
chmod 0400 /etc/firewalld/services/elasticsearch.xml
chown root: /etc/firewalld/services/elasticsearch.xml
Run these commands
firewall-cmd --zone=public --add-service=elasticsearch --permanent
firewall-cmd --reload
Это обычная ошибка ES,потому что необходимо установить два сетевых параметра: network.bind_host
И network.publish_host
. Из-за этого разработчики ES добавили этот ярлык:
network.host: 0.0.0.0
У меня были некоторые другие проблемы с ES, когда IPv6 был включен, но не настроен, поэтому вы можете отредактировать sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
И выполните sysctl -p
.
Центосоор дүүргэсэн галт ханыг идэвхгүйжүүлээд үзээрэй
systemctl disable firewalld
systemctl stop firewalld
https://bytefreaks.net/gnulinux/how-to-startstop-or-enabledisable-firewalld-on-centos-7
Би машины урд тусгай зориулалтын тоног төхөөрөмжийн галт хана хийхийг зөвлөж байна. Би таны ашиглаж буй машин дээрх програм хангамжийн галт хананд найдахГҮЙ. Хэрэв халдагч машиныг цохиж байгаа бол аль хэдийн оройтсон байна.