MarkLogic:为什么删除应用服务器会导致集群重启?

MarkLogic: why does deleting an appserver cause a cluster to restart?

为什么删除应用服务器会导致集群重启?是否有可以删除多个应用程序服务器而不触发多次重启的脚本选项?例如,我可以:打开事务,获取配置,运行 多次 admin:appserver-delete() 调用,保存新配置,然后提交事务并只触发一次重启吗?

MarkLogic= 8.0-3.2 & 8.0-4.2,Linux= RedHat

最重要的是需要重新启动以断开侦听该特定应用服务器端口的 HTTP 端口侦听器。该应用程序服务器的配置(如所有配置详细信息)在整个集群中共享,并且分配给定义了应用程序服务器的组的所有主机在同一端口上都有侦听器。因此,删除应用服务器至少需要重启同一组中的所有主机。不过,在集群范围内重新启动同样快速。

是的,可以有一个 xquery 语句,例如,一次删除多个应用程序服务器,将主机重新分配到不同的组,也可能删除它们所属的原始组,然后完成只需重新启动一次。 admin functions allow you to make multiple updates to the admin config, and end with just a single admin:save-configuration 保存您的更改。

小例子:

let $config := admin:get-configuration()
let $config := admin:appserver-delete($config,
  admin:appserver-get-id($config, xdmp:group(), "app-serv1")
)
let $config := admin:appserver-delete($config,
  admin:appserver-get-id($config, xdmp:group(), "app-serv2")
)
let $config := admin:appserver-delete($config,
  admin:appserver-get-id($config, xdmp:group(), "app-serv3")
)
return admin:save-configuration($config)

实际上,admin:appserver-delete 采用一系列应用服务器 ID,因此您可以在这种情况下压缩代码。但是,您可以像这样以相同的方式组合各种管理函数调用。请注意执行它们的顺序,这可能是相关的。在应用设置之前创建数据库,在删除工件之前取消链接工件等。

HTH!