我看到一些关于在 Docker 容器中运行 MarkLogic 集群的文档,但不确定是否有人在生产中运行 MarkLogic docker 容器。
有人在 docker 容器中使用 MarkLogic 来提供生产服务吗?
我看到一些关于在 Docker 容器中运行 MarkLogic 集群的文档,但不确定是否有人在生产中运行 MarkLogic docker 容器。
有人在 docker 容器中使用 MarkLogic 来提供生产服务吗?
如果你问是否有人在生产环境中使用 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/