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

在docker中安装MarkLogic的2节点群集,docker,marklogic,Docker,Marklogic,我想在docker中安装MarkLogic并形成一个集群,即在同一台机器上运行两个或多个ML节点实例。如何实现这一点?在博客条目中,它描述了如何创建和初始化运行MarkLogic的Docker映像 在文章底部,它描述了如何使用--link开关和docker compose链接多个容器,以帮助管理docker容器集群: 链接容器 你是告诉Docker容器应该如何通信的人!使用docker run命令时,还可以传入--link标志 考虑以下示例: 上面创建了两个MarkLogic容器。第二个具有--

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

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

在文章底部,它描述了如何使用
--link
开关和
docker compose
链接多个容器,以帮助管理docker容器集群:

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

考虑以下示例:

上面创建了两个MarkLogic容器。第二个具有
--link
标志。Docker networking在每个被链接的容器中以及链接容器中设置环境变量和/etc/hosts文件。这设置了Docker容器通过内部Docker网络进行通信的能力。
--hostname
标志用于与MarkLogic保持一致,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编写 Docker创建了另一个工具来帮助管理Docker容器集群
docker compose
具有创建多个容器并将它们连接在一起的命令。然后,您可以使用
docker compose
命令创建、启动和停止它们。Docker使用名为
Dockerfile
的文件来构建容器
docker compose
使用名为
docker compose.yml的文件构建容器网络


docker compose
是一款可用的软件。

如果您还没有注册,也可以免费访问和注册(docker Hub和MarkLogic Developer图像)。它使您可以访问开发人员映像,但也提供了说明和一个示例群集docker compose文件。请记住,如果一个群集不可用,则两个节点的群集可能会影响群集形成仲裁的能力。@MichaelGardner ok谢谢。然后是一个3节点的集群。
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