1

我看到一些关于在 Docker 容器中运行 MarkLogic 集群的文档,但不确定是否有人在生产中运行 MarkLogic docker 容器。

有人在 docker 容器中使用 MarkLogic 来提供生产服务吗?

4

1 回答 1

5

如果你问是否有人在生产环境中使用 Docker 中的 MarkLogic,是的,我知道有人成功地这样做了。如果您要问的是它“准备好生产”(标题)还是 MarkLogic 是否“支持”或在 Docker 中经过测试或认证,这将是您的销售或支持代表的问题。通常这种开放式问题有一个类似的开放式答案。例如,有许多 Linux 操作系统发行版既没有“支持”,也没有“认证”,也没有经过测试,但实际上可以工作,您可能会发现支持可以帮助您解决它们或修复您报告的错误。同样,根据配置和用例,有些“受支持的”操作系统不能很好地工作,或者需要比通常的定制量更多的量。

在 docker 中需要注意的事情——这也类似于 VM 中的问题(并非所有这些都受支持,但在生产站点中使用)。其中许多都可以解决。

  • 内存调整 - 许多 Docker 容器“看到”主机(或 VM)的内存配置。MarkLogic 在此基础上做出了几个初始内部配置选择。因此,例如,如果您有一个巨大的主机(比如 512 GB RAM)但有一个小型 docker 容器(比如 1GB)——ML可能会配置内存使用调整为在 512 GB 中运行。这可能会导致像启动时崩溃一样极端的问题。

  • 核心/处理器使用。与内存使用类似,docker 容器可能会“看到”主机服务器/os/vm 的总核心数并超额订阅。

  • IO 性能。与所有 ML 安装一样,您可以有效地配置 IO 资源。对于 docker 来说,这样做通常比对主机来说更难。

  • 联网。Docker 的发展非常迅速。网络层是高度复杂的,并且在不同的实现中是可变的,并且在配置中只有一个实现。MarkLogic 有简单的要求——最相关的是它在 ML 服务器中设置的主机名可以在集群中的所有其他 ML 服务器中解析为同一主机。由您来配置 docker 以便管理此要求。与在云中运行类似,ML 默认将 ML 服务器的生命周期与其数据的生命周期(/var/opt/MarkLogic)相关联。如果您停止并启动 docker 实例,不仅主机名可能会发生变化,而且数据量也可能会发生变化。由您来配置事物,因此它们不会。

还有很多其他的考虑。一般来说,它们在本质上与在 VM 或云环境中运行的服务器非常相似。关于主机系统如何运行的一些基本假设通常适用于“裸机”know-OS 安装,但在 VM 和其他更多软件定义的平台中并不容易确定并且具有更高的可变性 - 所以更难测试甚至讨论。

参考:在 MarkLogic World 2017 讨论 https://www.marklogic.com/resources/chicago-lightning-talks/

开发者网站: https ://developer.marklogic.com/code/docker

我个人的最爱: https ://github.com/DALDEI/ml-docker

于 2018-03-06T01:35:41.807 回答