请问如何在线更新license

目前集群是高可用集群

集群节点别名`controller1`controller2`controller3`agent1`agent2`agent3`NODE1`NODE2`NODE3

如何快速更新所有license

请先 登录 后评论

1 个回答

Jax Wu

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)该函数只在执行该函数的节点生效。因此在集群环境下,需要在所有控制节点,代理节点和数据节点上运行该函数。



请先 登录 后评论