在 docker 中安装 MarkLogic 的 2 节点集群



我想在docker中安装MarkLogic并形成一个集群,即在同一台机器上运行两个或多个ML节点实例。如何实现呢?

在构建 MarkLogic Docker容器博客条目中,它描述了如何创建和初始化运行 MarkLogic 的 Docker 映像。

在本文底部附近,它介绍了如何使用--link开关和docker-compose链接多个容器,以帮助管理 Docker 容器集群:

链接容器

您是告诉 Docker 容器应该如何通信的人!使用 docker run 命令时,还可以传入--link标志。

请考虑以下示例:

docker run -d --name=marklogic1 --hostname=marklogic1.local -p 8000-8002:8000-8002 marklogic:8.05-preinitialized
docker run -d --name=marklogic2 --hostname=marklogic2.local --link marklogic1:marklogic1 -p 18000-18002:8000-8002 marklogic:8.05-preinitialized

上面创建了两个 MarkLogic 容器。第二个有--link标志。Docker 网络设置环境变量和/etc/hosts文件,其中包含每个被链接的容器以及链接容器。这为 Docker 容器设置了通过内部 Docker 网络进行通信的能力。--hostname标志用于与 MarkLogic 保持一致,后者在联系群集中的其他 MarkLogic 服务器时使用完整的域名。因此,我们只需将.local域添加到容器的名称中即可。

最后,请注意,第二个容器上的 -p 标志将 MarkLogic 的端口公开为 8000 到 8002 的主机端口 18000 到 18002。为什么不使用主机的 8000 到 8002 端口?因为第一个容器已经在使用它们。请记住,Docker 与主机共享网络!但是,当然,您可以在主机上选择任何范围的开放端口来映射容器的 MarkLogic 端口。

现在,只需将浏览器指向第一个容器 (marklogic1( 中的端口 8001,然后完成安装后步骤。跳过加入集群。完成后,将浏览器指向第二个容器 (marklogic2( 的端口 18001,然后完成安装后步骤。当系统要求加入集群时,只需使用 localhost 的主机名并将端口号保留为 8001。第二个容器中的 MarkLogic 将与第一个容器中的 MarkLogic 联系。配置将更新,以便 marklogic2 使用 marklogic1 加入集群。创建并添加第三个 MarkLogic 容器,并将其链接到 marklogic1:marklogic1 和 marklogic2:marklogic2,您很快就会拥有一个合适的 3 节点 MarkLogic 集群!

使用 docker-compose

Docker创建了另一个工具来帮助管理Docker容器集群。docker-compose具有创建多个容器并将它们联网在一起的命令。然后,您可以使用docker-compose命令创建、启动和停止它们。Docker 使用一个名为Dockerfile的文件来构建容器。docker-compose使用名为docker-compose.yml的文件来构建容器网络。

docker-compose可单独下载。

最新更新