zokeeper集群安装

下载

  • 下载地址
    https://archive.apache.org/dist/zookeeper/从这里选择适合自己的版本,由于我这里使用的是cdh版本的,所以我这里的下载地址是http://archive.cloudera.com/cdh5/cdh/5/从这里选择对应的cdh版本,然后使用wget 选择的版本的下载地址命令加上下载地址进行下载。注意:这里虽然两个版本不一样,但是在集群安装的方式是没有什么大区别的!

安装

  • 安装包解压
    tar -zxvf zookeeper-3.4.5-cdh5.10.0.tar.gz -C /opt/modules/

配置

  • 复制配置文件
    进入到解压目录,我这里的解压目录是/opt/modules/zookeeper-3.4.5-cdh5.10.0/,然后进入到conf目录下,执行 cp zoo_sample.cfg ./zoo.cfg复制好配置文件
  • 新建目录。用于存放数据的目录。默认在/tmp目录下,/tmp目录对数据具有不安全性。所以我这里为了方便测试,直接把数据目录放在了/opt/modules/zookeeper-3.4.5-cdh5.10.0/这目录下,使用mkdir -p zkData/tmp建立两层目录,这里的目录名称,层级可以随意,
  • 配置conf/zoo.cfg文件
    vim /conf/zoo.cfg打开文件。修改下dataDir=/tmp/zookeeper这个目录文件的地址为刚创建文件的地址dataDir=/opt/modules/zookeeper-3.4.5-cdh5.10.0/zkData/tmp,增加目录多台机器的地址和端口
server.1=bigdata1.com:2888:3888
server.2=bigdata2.com:2888:3888
server.3=bigdata3.com:2888:3888

这里简单说明下server.x:server.x其实是列举的集群中zookeeper服务器的地址。当启动服务是时。会去对应的server中的dataDir目录下寻找myid文件。,每台机器的myid文件中其实就是配置我们xbigdata.com这里可以写对应机器的ip地址,我这里是在每台机器的hosts文件中配置了对应关联的。
具体的的说明可以参考官方文档下给出的Wiki

  • 在机器中的dataDir目录下新建一个名为myid的文件,内容填写x,这里的x对应的server.x
  • 把这台机器的文件分别同步到其他两台机器中去,可以使用scp命令进行同步 .ex:scp ./zookeeper-3.4.5-cdh5.10.0.tar.gz xxx@bigdata2.com:/opt/softwares/
  • 修改其他两台机器上的myid文件,为对应的x
  • 启动 从这三台机器中随机启动一台,/opt/modules/zookeeper-3.4.5-cdh5.10.0/bin/zkServer.sh start . 使用/opt/modules/zookeeper-3.4.5-cdh5.10.0/bin/zkServer.sh status查看状态信息,会发现
JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.5-cdh5.10.0/sbin/../conf/zoo.cfg
Error contacting service. It is probably not running.

在当前目录下出现的zookeeper.out文件,使用less zookeeper.out查看日志信息,
发现如下错误

2019-05-25 13:47:00,495 [myid:1] - INFO  [main:QuorumPeer@444] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
2019-05-25 13:47:00,511 [myid:1] - INFO  [Thread-1:QuorumCnxManager$Listener@486] - My election bind port: 0.0.0.0/0.0.0.0:3888
2019-05-25 13:47:00,532 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer@670] - LOOKING
2019-05-25 13:47:00,534 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@740] - New election. My id =  1, proposed zxid=0x0
2019-05-25 13:47:00,537 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 1 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)
2019-05-25 13:47:00,542 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot open channel to 2 at election address bigdata2.com/192.168.31.252:3888
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365)
        at java.lang.Thread.run(Thread.java:745)
2019-05-25 13:47:00,544 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot open channel to 3 at election address bigdata3.com/192.168.31.253:3888
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365)
        at java.lang.Thread.run(Thread.java:745)
2019-05-25 13:47:00,745 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@368] - Cannot open channel to 2 at election address bigdata2.com/192.168.31.252:3888
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:388)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:765)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)

大概意思是,不能连接到其他的两天服务器,为啥不能呢?相比原因不用多说。。其他服务器没有启动。在用同样的方式启动另外两台服务器/opt/modules/zookeeper-3.4.5-cdh5.10.0/bin/zkServer.sh start 然后使用less zookeeper.out查看日志信息。会发现出现如下:

2019-05-25 13:49:05,196 [myid:1] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@197] - Accepted socket connection from /127.0.0.1:58191
2019-05-25 13:49:05,198 [myid:1] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@821] - Processing srvr command from /127.0.0.1:58191
2019-05-25 13:49:05,200 [myid:1] - INFO  [Thread-3:NIOServerCnxn@1001] - Closed socket connection for client /127.0.0.1:58191 (no session established for client)
2019-05-25 13:49:16,835 [myid:1] - INFO  [bigdata1.com/192.168.31.251:3888:QuorumCnxManager$Listener@493] - Received connection request /192.168.31.2
52:37842
2019-05-25 13:49:16,839 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEPoch), FOLLOWING (my state)
2019-05-25 13:49:16,847 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEPoch), FOLLOWING (my state)

会发现已经没有错误了。而且也会看到主和从的机器状态。

验证

  • 查看每台机器的主从状态。 /opt/modules/zookeeper-3.4.5-cdh5.10.0/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.5-cdh5.10.0/sbin/../conf/zoo.cfg
Mode: follower

会看到只有一台机器的Mode: leader ,其他的都是Mode: follower
至此,zookeeper集群搭建完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值