我已经看到了很多关于使用运行 ES 的 unpriv 容器的 docker 设置等。基本上,我不想建立一个简单的“产品集群”。一共有两个节点,一个物理(用于数据),一个用于 Injest/Master(LXD Container)。
我遇到的问题是bootstrap.memory_lock: true
用作配置选项来锁定我的容器主/注入节点上的内存(避免交换)。
[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 用户无法调整主机上的 ulimit,这是有道理的。鉴于我对此有足够的了解是危险的,如果主机上没有 ES 用户,有没有办法/如何确保我的 unpriv 容器可以锁定它需要的内存?