Блокировка памяти ES / JVM в Unpriv. Контейнер Linux (LXD/LXC)
Я видел много хорошего о настройках докеров и тому подобном с использованием непривилегированных контейнеров, работающих под управлением ES. По сути, я не хочу настраивать простой "кластер продуктов". Всего имеется два узла, один физический (для данных) и один для Injest/Master (LXD Container).
Проблема, с которой я столкнулся, заключается в использовании bootstrap.memory_lock: true
в качестве опции конфигурации, чтобы заблокировать память (избежать перестановки) на моем узле master/injest контейнера.
[2018-02-07T23:28:51,623][WARN ][o.e.b.JNANatives ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
[2018-02-07T23:28:51,624][WARN ][o.e.b.JNANatives ] This can result in part of the JVM being swapped out.
[2018-02-07T23:28:51,625][WARN ][o.e.b.JNANatives ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536
[2018-02-07T23:28:51,625][WARN ][o.e.b.JNANatives ] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
...
[1]: memory locking requested for elasticsearch process but memory is not locked
Теперь это имеет смысл, учитывая, что пользователь ES не может настроить ограничения на хосте. Учитывая, что я знаю об этом достаточно, чтобы быть опасным, есть ли способ / как я могу гарантировать, что мой unpriv контейнер может заблокировать необходимую ему память, учитывая, что на хосте нет пользователя ES?
1 ответ
Я просто назову это решенным - установите swapoff на parent и оставьте этот параметр по умолчанию в контейнере. Не то, что я бы назвал "правильным путем", как это было задано в моем вопросе, но достаточно хорошо / близко.