1

我已经看到了很多关于使用运行 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 容器可以锁定它需要的内存?

4

1 回答 1

0

我将称之为已解决 - 在父级上设置 swapoff,并将该设置保留为容器中的默认设置。不是我在问题中提出的所谓的“正确方式”,但足够好/足够接近。

于 2018-03-27T17:44:17.200 回答