1. Návrh a hranice
Tento průvodce vytvoří jednouzlovou službu Elasticsearch pro lokální aplikace. Není to návod na cluster o více uzlech a Elasticsearch nezveřejňuje na internetu.
Zabezpečení Elasticsearch zůstává zapnuté. Balíček vygeneruje TLS materiál pro HTTP i transport; nevypínejte ho jen proto, aby se aplikace připojila snáz.
2. Příprava serveru
Elasticsearch používá soubory mapované do paměti. Zkontrolujte limit mapování v jádře a podle potřeby nastavte aktuálně doporučené minimum.
sysctl vm.max_map_count
printf 'vm.max_map_count=1048576\n' > /etc/sysctl.d/99-elasticsearch.conf
sysctl --system
sysctl vm.max_map_count
Než přidělíte haldu Elasticsearch, vyhraďte RAM pro operační systém, Apache/PHP-FPM, MariaDB a Redis. Pro trvalou produkční zátěž swap vypněte nebo minimalizujte.
3. Instalace z podepsaného APT repozitáře Elastic
apt -y install ca-certificates wget gnupg apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" > /etc/apt/sources.list.d/elastic-9.x.list
apt update
apt -y install elasticsearch
Balíček pro Debian obsahuje podporovaný OpenJDK. Druhé běhové prostředí Javy kvůli Elasticsearch neinstalujte, pokud k tomu není zdokumentovaný důvod kompatibility.
4. Ponechte zabezpečení zapnuté a naslouchejte lokálně
Při prvním startu automatická konfigurace zabezpečení vytvoří certifikáty TLS. Instalace z balíčku pro Debian heslo uživatele elastic automaticky nezobrazí; resetujte ho interaktivně a uložte do správce hesel.
systemctl enable --now elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
ls -l /etc/elasticsearch/certs/http_ca.crt
Než změníte síťová nastavení, udělejte zálohu konfigurace s časovým razítkem. Pro toto jednouzlové řešení změňte aktivní položky http.host a transport.host na adresy lokální smyčky; položky TLS a zabezpečení, které Elasticsearch vygeneroval, ponechte.
cp -a /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.before-local-bind
sed -i -E 's|^[[:space:]]*http.host:.*|http.host: ["127.0.0.1", "::1"]|' /etc/elasticsearch/elasticsearch.yml
sed -i -E 's|^[[:space:]]*transport.host:.*|transport.host: ["127.0.0.1", "::1"]|' /etc/elasticsearch/elasticsearch.yml
systemctl restart elasticsearch
ss -lntp | grep -E ':(9200|9300)'
127.0.0.1 nebo ::1. Pokud se objeví veřejná adresa, zastavte se a konfiguraci opravte dřív, než připojíte aplikaci.5. Nastavte omezenou haldu JVM
Pro sdílené VPS použijte malou, výslovně zadanou haldu a po sledování reálné zátěže ji upravte. Neupravujte kořenový jvm.options Elasticsearch; balíčky pro Debian načítají vlastní soubory .options z /etc/elasticsearch/jvm.options.d.
printf '%s\n' '-Xms1g' '-Xmx1g' > /etc/elasticsearch/jvm.options.d/heap.options
systemctl restart elasticsearch
systemctl --no-pager status elasticsearch
Halda se musí vejít vedle databáze a workerů PHP. Větší halda automaticky neznamená vyšší rychlost; Elasticsearch spoléhá i na cache souborového systému.
6. Ověření přes HTTPS a vygenerovanou CA
Heslo exportujte jen pro aktuální relaci shellu. Nevkládejte ho do historie příkazů.
read -rsp 'Elasticsearch password: ' ELASTIC_PASSWORD; echo
export ELASTIC_PASSWORD
curl --fail --cacert /etc/elasticsearch/certs/http_ca.crt \
-u "elastic:$ELASTIC_PASSWORD" https://127.0.0.1:9200/
curl --fail --cacert /etc/elasticsearch/certs/http_ca.crt \
-u "elastic:$ELASTIC_PASSWORD" https://127.0.0.1:9200/_cluster/health?pretty
unset ELASTIC_PASSWORD
První odpověď identifikuje uzel a verzi; kontrola stavu má vrátit stav jednoho uzlu. Odpověď 401 bez přihlašovacích údajů dokazuje, že HTTPS je dostupné, ale autentizace se vynucuje.
7. Provoz, zálohy a aktualizace
systemctl is-active elasticsearch
journalctl -u elasticsearch -n 100 --no-pager
df -h /var/lib/elasticsearch
curl --cacert /etc/elasticsearch/certs/http_ca.crt -I https://127.0.0.1:9200/
- Sledujte haldu JVM, místo na souborovém systému, stav shardů, odmítnuté požadavky a restarty služby.
- K obnově indexů používejte snapshoty Elasticsearch; zálohy databáze nebo souborového systému samy o sobě nenahradí strategii snapshotů aktivního indexu.
- Před hlavními aktualizacemi si přečtěte změny specifické pro danou verzi, které porušují zpětnou kompatibilitu.
- Definici repozitáře držte jen jednou; duplicitní záznamy Elastic v APT způsobují varování a zmatek.
Výsledek: uzel Elasticsearch chráněný TLS a autentizací, dostupný jen z lokálního VPS.