0


微服务系统中服务注册与发现Zookeeper的使用

Zookeeper可以认为是一个分布式协调服务指挥官,每个微服务启动的时候把自己的IP、端口注册到Zookeeper服务中心,而其它调用这个服务的业务要调用这个微服务时直接就拿到可以服务的对象列表,然后业务自己根据一定的规则调用服务即可。

Zookeeper的下载地址:Apache ZooKeeper 在linux服务器下直接wget Apache Download Mirrors 解压后修改配置目录conf下的zoo_sample.cfg为zoo.cfg。然后修改几个配置:
#dataDir:数据目录
#如果是在linux服务器上就直接使用这个默认的配置
dataDir=/tmp/zookeeper
#如果是在windows上就需要把这个dataDir改成当前zookeeper所在目录
dataDir=D:\zookeeper3.6.2

# adminPORT。默认是8080,但服务器上8080一般是JAVA端口,不改很可能冲突
admin.serverPort=8081
#端口冲突时报错如下:
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands
        at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:180)
        at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:153)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:112)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:67)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:140)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:90)
Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8080
        at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:346)
        at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307)
        at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
        at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:231)
进入到zookeeper的bin目录如/opt/zookeeper/zookeeper/bin下,有很多执行文件包括.sh, .cmd即zoopkeepr可以很方便地直接在windows和linux上运行。当前我这里是linux,所以用zkServer.sh,--help查看一下,有一些选项。

建议一开始排错的时候使用start-foreground参数方便直接显示出错误,好排查。没有问题后再zkServer.sh start后台运行。成功之后2181端口和8081端口即已经监听运行。
[root@04007 bin]# pwd
/opt/zookeeper/zookeeper/bin
[root@04007 bin]#  ./zkServer.sh --help
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper/bin/../conf/zoo.cfg
Usage: ./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}
#启动zookeeper服务器端:
[root@04007 bin]# ./zkServer.sh start-foreground
...
[root@04007 bin]# netstat -anp | grep 2181
tcp        0      0 0.0.0.0:2181                0.0.0.0:*                   LISTEN      26529/java          
[root@04007 bin]# netstat -anp | grep 8081
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      26529/java
服务启动后,可以在linux服务器上可以运行bin目录下的zkCli.sh连接服务端,在windows下可以使用zkCli.cmd连接,以进行添加节点删除节点等操作。除此之外,Zookeeper有一个方便的数据查看工具ZooInspector。ZooInspector下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 。

不过这个地址我碰到下载下来后不能用的情况(注意看大小,我有时下载下来的只有200来K,正常好像是1500K左右),可以到我的资源里下载。

解压进入目录ZooInspector\build,运行zookeeper-dev-ZooInspector.jar;刚才讲要改admin.serverPort端口值为8081,就是为了这里能使用,ZooInspector就是连接这个端口来呈现服务器端的节点数据,在运行ZooInspector在弹出的窗口中输入上面的ip和端口8081,即可查看当前的服务注册情况。界面如下:


本文转载自: https://blog.csdn.net/weixin_47792780/article/details/137153800
版权归原作者 林戈的IT生涯 所有, 如有侵权,请联系我们删除。

“微服务系统中服务注册与发现Zookeeper的使用”的评论:

还没有评论