Linux下zookeeper集群环境搭建

首先准备搭建环境所需要的安装包,我选择的jdk7.65和zookeeper 3.4.8的版本

jdk-7u65-linux-x64.tar.gz (下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html )  
zookeeper-3.4.8.tar.gz (下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.8/)
1.JDK安装
一般Linux的发行版本有预装openjdk,这里安装标准sun公司的jdk。
1.1查看当前机器安装的jdk
     rpm -qa | grep jdk
     出现如下结果表示是openjdk
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64  
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64  

这种情况先卸载openjdk, 执行如下命令:

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64  
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64 
1.2安装标准jdk
     将jdk的jar包复制到 /usr/local/java 目录下并执行如下命令解压:
      tar -zxvf jdk-7u65-linux-x64.tar.gz
1.3 配置Java环境变量 
     打开 /etc/profile 文件 :vim /etc/profile
     在文件末尾追加如下内容:
JAVA_HOME=/usr/local/java/jdk1.7.0_65  
JRE_HOME=/usr/local/java/jdk1.7.0_65/jre  
PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH  
CLASSPATH=.:$JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH  
export JAVA_HOME JRE_HOME PATH CLASSPATH  
执行如下命令使配置生效: source /etc/profile
1.4检查jdk是否安装成功
     执行如下命令: java -version
     出现如下结果表示Java环境安装成功

2.Zookeeper安装
2.1 zookeeper配置
     解压zookeeper的安装包zookeeper-3.4.8.tar.gz,进入主目录。将conf目录下的zoo_sample.cfg文件复制一份并命名为zoo.cfg,操作命令如下: cp conf/zoo_sample.cfg conf/zoo.cfg
     新建一个数据存储目录 data:mkdir data
     打开zookeeper的配置文件conf/zoo.cfg并配置如下:
tickTime=2000  
initLimit=10  
syncLimit=5  
dataDir=/home/sfapp/zookeeper-3.4.8/data  
clientPort=2181  
server.1=10.118.70.165:2888:3888  
server.2=10.118.70.166:2888:3888  
server.3=10.118.70.167:2888:3888 
以同样的配置将zookeeper安装到其他两台机器上。
    在dataDir目录下(即上面配置的目录/home/sfapp/zookeeper-3.4.8/data)创建一个 myid 文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中的X即为这个数字标识。
     在10.118.70.165机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 1;
     在10.118.70.166机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 2;
     在10.118.70.167机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 3;
2.2 启动zookeeper
     建好后分别在每台机器上启动zookeeper,启动命令如下: bin/zkServer.sh start
     查看zookeeper的日志文件,主目录下的zookeeper.out文件,发现前面两台机器的启动日志里有如下异常:
2017-11-09 19:34:48,084 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 3 at election address /10.202.7.165: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:381)  
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)  
at org.apache.zookeeper.server.quorum.FastLeaderElectionMessengerMessengerWorkerSender.process(FastLeaderElection.java:452)  
at org.apache.zookeeper.server.quorum.FastLeaderElectionMessengerMessengerWorkerSender.run(FastLeaderElection.java:433)  
at java.lang.Thread.run(Thread.java:745)  

因为启动第一台机器时,它会去连接其它的两台机器,由于启动顺序的先后,导致连接不成功,所以当所有机器上的zookeeper全部起来后就不会出现该类日志。

2.3 验证zookeeper
     在各个zookeeper节点上执行如下命令,查看当前zookeeper的状态 :  bin/zkServer.sh status
     一般 Mode有两种值,为leader表示该台机器被选举为leader,follower为附从 机器,如下:
该台机器为leader
ZooKeeper JMX enabled by default  
Using config: /home/sfapp/zookeeper-3.4.8/bin/../conf/zoo.cfg  
Mode: leader 

该台机器为follower

ZooKeeper JMX enabled by default  
Using config: /home/sfapp/zookeeper-3.4.8/bin/../conf/zoo.cfg  
Mode: follower
此时表明zookeeper集群配置成功。
    检查三台机器是否均已启动,可通过jps查看,有QuorumPeerMain进程代表当前机器zookeeper已经启动(但启动成功与否无法判断)
执行如下连接命令即可连接到该zookeeper集群: bin/zkCli.sh -server 10.118.70.165:2181,10.118.70.166:2181,10.118.70.167:2181



原文链接:https://blog.csdn.net/lpy1239064101/article/details/79168106


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值