1 在线更新license
step1:用新的dolphindb.lic文件替换对应节点所在服务器上老的dolphindb.lic文件
step2:对节点进行全量更新license
a) 普通集群
//普通集群
def connctNode(host, port, name){
conn = xdb(host, port, "admin", "123456")
try {
result = conn(updateLicense())
updateDate = remoteRun(conn, "table( getNodeAlias() as node ,getLicenseExpiration() as date)")
}
catch(ex){
print(ex)
}
return updateDate
}
cfgInfo = exec name , host, port from rpc(getControllerAlias(), getClusterPerf{true}) where mode !=0
pnodeRun(updateLicense)
datanodeDate = select * from pnodeRun(getLicenseExpiration,,false)
updateDate = loop(x ->connctNode(x.host, x.port, x.name), cfgInfo).unionAll(false)
b) 高可用集群
def connctNode(nodeInfo){
print(nodeInfo[3])
conn = xdb(nodeInfo[0], int(nodeInfo[1]), "admin", "123456")
result = conn(updateLicense())
updateDate = remoteRun(conn, "table( getNodeAlias() as node ,getLicenseExpiration() as date)")
return updateDate
}
//更新agent以及返回agent结果
nodeName = rpc(getControllerAlias(), getClusterNodesCfg)
agent = select * from table(nodeName as val) as t where substr(t.val, strpos(t.val, ",")+1) in ["agent"]
nodeInfo = loop(split{,":"},agent[`val])
agentDate = loop(connctNode, nodeInfo).unionAll(false)
//更新controller、datanode以及返回结果
//需要修改controller的别名
pnodeRun(updateLicense,`controller1`controller2`controller3)
datanodeDate = select * from pnodeRun(getLicenseExpiration,`controller1`controller2`controller3)
更新注意点:
(1)license授权的客户名称必须与原来的license相同。
(2)授权的节点个数,内存大小,CPU核个数不能比原来的小。
(3)该函数只在执行该函数的节点生效。因此在集群环境下,需要在所有控制节点,代理节点和数据节点上运行该函数。