zoukankan      html  css  js  c++  java
  • 记录zookeeper搭建遇到的坑

    我在学习kafka的时候,需要先搭建zookeeper集群,所以就开始搭建zookeeper集群,不出意料的失败,今天忽然看到一片文章介绍zookeeper监听端口,通信端口,选举端口的部分文章,想起来自己问题,然后改了下,虽然自己犯的问题很弱智,但是还是记录以下,希望可以帮助其他人。


     以下是当时的思路和遇到的问题截图:

    我在搭建zookeeper集群的时候,无论怎么重启,更改配置文件,都无法查看集群的状态,首先是第一个zookeeper日志信息
    第二个zookeeper日志信息
    第三个zookeeper日志信息
    大致情况是第一个和第二个报一样的错误,都是eoefexception,following the leader的时候报异常。
    而第三个zookeeper报的缺失bindexception:address already in use bind failed!
    2183 端口提示被占用,但是这个端口我是分配给第三个zookeeper的,也就是说站在我的角度看,第三个zookeeper自己被自己占用了端口。
    先kill2183端口,结果是第三个zookeeper停止了,也就是说这是错误的提示,或者说是误导的提示,看下前两个zookeeper的日志信息。
    第一个:
    第二个
    第二个报了两个错误,第一个错误是端口被占用异常,第二个报的是连接被拒与第三个的。
    至此基本可以明白的事有,1.这三个zookeeper是可以通信的,2.上面出现的三个异常,只有一个异常是成立的,那就是端口占用异常,另外两个异常都是因为第三个端口被占用而出现的附加问题。
    问题分析:
    因为我搭建的是伪集群,所有端口被占用的问题就可能出现在配置文件上,配置文件:
    第一个的:
    第二个的:
    第三个:
    看上去没有任何问题,可能是通信端口和选举端口存在问题,改全部放大10000.kill掉全部进程。然后重新启动。
    继续错误和开篇提到的错误形式一模一样。
    第三个zookeeper的通信端口已经被zookeeper启动了,但是仍提示被人占了。
    ls -al /proc/4170
    注意:
    • cwd符号链接的是进程运行目录;
    • exe符号连接就是执行程序的绝对路径;
    • cmdline就是程序运行时输入的命令行命令;
    • environ记录了进程运行时的环境变量;
    • fd目录下是进程打开或使用的文件的符号连接。
    每个zookeeper启动了三个进程,除了通信和选举进程,另外的进程是做什么的?

     其实只要对zookeeper理解深刻,就知道,zookeeper监听端口,通信端口,选举端口是不同的。
    在zoo.cfg这个文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
    N:代表服务器编号(也就是myid里面的值)
    YYY:服务器地址
    A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
    B:表示 是选举端口(默认是3888)
    clientPort

      客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。

    这个是正确的zoo.cfg 配置文件。现在已经正常了。

  • 相关阅读:
    软件工程实践总结
    Axios使用总结
    个人作业——软件测评
    结对第二次作业-疫情统计可视化实现
    结对第一次——疫情统计可视化(原型)
    软工实践寒假作业(2/2)
    软工实践寒假作业(1/2)
    Springboot后端接口开发
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
  • 原文地址:https://www.cnblogs.com/YsirSun/p/11946332.html
Copyright © 2011-2022 走看看