docker 容器中的 marklogic;准备生产了吗?
marklogic in docker container; Ready for production?
我看到一些关于 运行 MarkLogic 集群在 Docker 容器中的文档,但不确定生产环境中是否有人 运行 MarkLogic docker 容器。
有人在 docker 生产服务容器中使用 MarkLogic 吗?
如果您问是否有人在 Docker 生产中使用 MarkLogic,是的,我知道有人成功地这样做了。
如果您问它是 'ready for production'(标题)还是 MarkLogic 'supported' 或在 Docker 中测试或认证,那将是您的销售或支持代表的问题。通常这种开放式问题有类似的开放式答案。例如,有许多 Linux OS 分布既没有 'supported' 也没有 'certified' 也没有经过测试但实际上可以工作,你 可能 发现支持可以帮助您解决问题或修复您报告的错误。同样,根据配置和用例的不同,有 'supported' 个操作系统运行不佳或需要比通常的定制量更多的定制。
docker 中需要注意的事项 -- 这也类似于 VM 中的问题(并非所有这些都受支持,但在生产站点中使用)。
其中许多问题都可以解决。
内存调整 - 许多 Docker 容器 'see' 主机(或 VM)的内存配置。 MarkLogic 在此基础上做出了几个初始的内部配置选择。因此,例如,如果您有一个巨大的主机(比如 512 GB RAM)但是一个小 docker 容器(比如 1GB)——ML 可以 配置内存使用调整为 运行 在 512 GB 中。这可能会导致像启动时崩溃这样极端的问题。
Core/Processor使用。与内存使用类似,docker 容器可能 'see' 主机的总核心数 server/os/vm 和 over-subscribe.
IO 性能。与所有 ML 安装一样,您可以有效地配置 IO 资源。 docker 通常比主机更难。
联网。 Docker 发展非常迅速。网络层非常复杂,并且跨实现和跨配置的单一实现是可变的。 MarkLogic 的要求很简单——最相关的是它在 ML 服务器中设置的主机名可以在集群中的所有其他 ML 服务器中解析到同一主机。由您配置 docker 以管理此要求。与云中的 运行 类似,ML 默认将 ML 服务器的生命周期与其数据的生命周期相关联 (/var/opt/MarkLogic)。如果您停止并启动 docker 个实例,不仅主机名可能会更改,而且数据量也可能会更改。由你来配置东西,这样他们就不会。
还有很多其他的考虑。一般来说,它们在本质上与 VM 或云环境中的 运行 服务器非常相似。有一些关于主机系统行为的基本假设通常适用于 'bare metal' know-OS 安装,但在 VM 和其他更多 software-defined 平台中不容易确定并且具有更高的可变性——因此更难测试甚至讨论。
参考资料:在 MarkLogic World 2017 上讨论
https://www.marklogic.com/resources/chicago-lightning-talks/
开发者网站:
https://developer.marklogic.com/code/docker
我个人最喜欢的:
https://github.com/DALDEI/ml-docker
我看到一些关于 运行 MarkLogic 集群在 Docker 容器中的文档,但不确定生产环境中是否有人 运行 MarkLogic docker 容器。
有人在 docker 生产服务容器中使用 MarkLogic 吗?
如果您问是否有人在 Docker 生产中使用 MarkLogic,是的,我知道有人成功地这样做了。 如果您问它是 'ready for production'(标题)还是 MarkLogic 'supported' 或在 Docker 中测试或认证,那将是您的销售或支持代表的问题。通常这种开放式问题有类似的开放式答案。例如,有许多 Linux OS 分布既没有 'supported' 也没有 'certified' 也没有经过测试但实际上可以工作,你 可能 发现支持可以帮助您解决问题或修复您报告的错误。同样,根据配置和用例的不同,有 'supported' 个操作系统运行不佳或需要比通常的定制量更多的定制。
docker 中需要注意的事项 -- 这也类似于 VM 中的问题(并非所有这些都受支持,但在生产站点中使用)。 其中许多问题都可以解决。
内存调整 - 许多 Docker 容器 'see' 主机(或 VM)的内存配置。 MarkLogic 在此基础上做出了几个初始的内部配置选择。因此,例如,如果您有一个巨大的主机(比如 512 GB RAM)但是一个小 docker 容器(比如 1GB)——ML 可以 配置内存使用调整为 运行 在 512 GB 中。这可能会导致像启动时崩溃这样极端的问题。
Core/Processor使用。与内存使用类似,docker 容器可能 'see' 主机的总核心数 server/os/vm 和 over-subscribe.
IO 性能。与所有 ML 安装一样,您可以有效地配置 IO 资源。 docker 通常比主机更难。
联网。 Docker 发展非常迅速。网络层非常复杂,并且跨实现和跨配置的单一实现是可变的。 MarkLogic 的要求很简单——最相关的是它在 ML 服务器中设置的主机名可以在集群中的所有其他 ML 服务器中解析到同一主机。由您配置 docker 以管理此要求。与云中的 运行 类似,ML 默认将 ML 服务器的生命周期与其数据的生命周期相关联 (/var/opt/MarkLogic)。如果您停止并启动 docker 个实例,不仅主机名可能会更改,而且数据量也可能会更改。由你来配置东西,这样他们就不会。
还有很多其他的考虑。一般来说,它们在本质上与 VM 或云环境中的 运行 服务器非常相似。有一些关于主机系统行为的基本假设通常适用于 'bare metal' know-OS 安装,但在 VM 和其他更多 software-defined 平台中不容易确定并且具有更高的可变性——因此更难测试甚至讨论。
参考资料:在 MarkLogic World 2017 上讨论 https://www.marklogic.com/resources/chicago-lightning-talks/
开发者网站: https://developer.marklogic.com/code/docker
我个人最喜欢的: https://github.com/DALDEI/ml-docker