Elasticsearch und OpenVZ

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…