Ich hatte gestern einige Probleme damit, Elasticsearch in einem OpenVZ-Container zum Laufen zu bringen.
Der OpenVZ-Container läuft klassisch mit dem Debian 7 x64 minimal-Template und hat, natürlich, genügend Ressourcen, um Elasticsearch zu betreiben.
Es kann vorkommen, dass Elasticsearch beim Start via init-Script eine Fehlermeldung ausgibt und nicht startet
permission denied on key 'vm.max_map_count'
Das liegt an der Struktur von OpenVZ – ein Container darf keine sysctl-Konfigurationen des Hosts ändern. Man kann einfach das init-Script bearbeiten
vim /etc/init.d/elasticsearch
und Zeile 160, 161 und 162 (je nach Version, bitte vergleichen!) auskommentieren.
# if [ -n "$MAX_MAP_COUNT" ]; then # sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT # fi
Laut einigen Kommentaren im Internet kann es durch diese Änderung lediglich zu Performance-Problemen mit Elasticsearch kommen – ob dies zutrifft, muss man individuell prüfen; bei mir ist alles ausreichend performant.
Sollte nun Elasticsearch noch immer nicht starten, gibt es ziemlich sicher ein Problem mit der Container-Konfiguration – auch dieses Problem lässt sich schnell beheben!
Man öffnet einfach die Konfigurationsdatei des OpenVZ-Containers (z.B. /etc/vz/conf/CTID.conf), kommentiert (falls vorhanden) die „CPUS“-Zeile aus und fügt folgendes ein:
CPULIMIT="100"
Das Limit sollte natürlich jeder für sich anpassen. Der Parameter ist hier näher erläutert.
Nun einfach den Container neustarten
vzctl restart CTID
und freuen, dass Elasticsearch nun läuft…