记zk设置密码后,MC启动异常,提示noauth原创
金蝶云社区-吴辉宇
吴辉宇
1人赞赏了该文章 1398次浏览 未经作者许可,禁止转载编辑于2022年11月03日 10:34:47

需求描述:接到需求,zookeeper需要配置密码。配置好密码后,发现mc服务启动失败。


zk配置密码操作步骤:

  1. 找到zk服务的目录,执行./zkCli.sh登录本地zk服务。然后执行如下命令:

    addauth digest username:password

    create /path

    setAcl /path auth:username:password:cdrwa

    getAcl /path

    image.png


  2. 修改mc服务的参数configUrl地址为:IP地址:端口/路径?user=用户名&password=密码。例如127.0.0.1:2181/why?user=cosmic&password=password

    image.png


  3. 重启MC服务,一直报错,MC访问报503错误。


原因分析:

1. MC启动注册服务时,服务报错,根据报错信息,找到代码点如下:

image.png


2. 报错是initServiceConfig()方法,但实际出错是这个方法传递的参数config不对。我们在断点调试的时候,发现registryConfigs的地址只有地址,没有用户名和密码。


3. zk配置了密码,但registryCoonfigs没有密码信息,在这段代码中搜registryConfigs,看下这个参数是如何初始化的。如下图:

image.png

image.png

image.png


4. 如上图,获取zk的地址,先从dubbo.registry.address获取,若获取为空,再从configUrl获取。我们找一个正常的环境,切换公共参数服务,搜下dubbo.registry.address,发现这个值默认是IP:port

image.png



5. 那么我们设置dubbo.registry.address,不读取configUrl这样就可以解决问题了


解决方案:在mc服务/bin/setappenv.sh,添加属性-Ddubbo.registry.address=zkIP:port。如图:

image.png


赞 1