Блокировка памяти 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 и оставьте этот параметр по умолчанию в контейнере. Не то, что я бы назвал "правильным путем", как это было задано в моем вопросе, но достаточно хорошо / близко.

Другие вопросы по тегам