zhmg23

我们是如此的不同

codis启动dashboard报[PANIC] create zk node failed解决办法

今天早上启动 ./bin/codis-config  dashboard,发现无法启动,报错:

 ./bin/codis-config  dashboard

2016/03/10 09:39:14 dashboard.go:160: [INFO] dashboard listening on addr: :18087

2016/03/10 09:39:15 dashboard.go:234: [PANIC] create zk node failed

[error]: dashboard already exists: {"addr": "192.168.8.44:18087", "pid": 21121}

[stack]: 

    3   /usr/local/codis/src/github.com/CodisLabs/codis/cmd/cconfig/dashboard.go:234

            main.runDashboard

    2   /usr/local/codis/src/github.com/CodisLabs/codis/cmd/cconfig/dashboard.go:54

            main.cmdDashboard

    1   /usr/local/codis/src/github.com/CodisLabs/codis/cmd/cconfig/main.go:85

            main.runCommand

    0   /usr/local/codis/src/github.com/CodisLabs/codis/cmd/cconfig/main.go:152

            main.main

        ... ...

然后查了一下官网的FAQ, 是因为使用kill -9 pid关闭过服务导致,官方这样解析:无论是proxy还是dashboard,都会在zk上注册自己的节点,同时在程序正常退出的时候会删掉对应的节点,但如果异常退出或试用kill -9 {pid}就会导致zk的节点无法删除,在下一次启动的时候会报“zk: node already exists”的错误。

因此关闭服务的时候直接用kill {pid}不要-9,同时如果无法启动并且确认没有其他运行中的进程占用zk上的节点,可以在zk上手动删除/zk/codis/db_test/dashboard 或/zk/codis/db_test/fence/{host:port}.


具体解决办法:


# ./zkCli.sh  -server 127.0.0.1:2181

[zk: 127.0.0.1:2181(CONNECTED) 0] ls /zk/codis/db_test     

[migrate_tasks, actions, LOCK, ActionResponse, slots, fence, proxy, servers, dashboard]

[zk: 127.0.0.1:2181(CONNECTED) 1]  rmr /zk/codis/db_test/dashboard 删除

[zk: 127.0.0.1:2181(CONNECTED) 4] quit   退出


另外补充一下,zk常用的一些其他命令


ls(查看当前节点数据),

ls2(查看当前节点数据并能看到更新次数等数据) ,

create(创建一个节点) ,

get(得到一个节点,包含数据和更新次数等数据),

set(修改节点)

delete(删除一个节点)

评论