欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下zookeeper集群环境搭建

程序员文章站 2022-05-27 16:38:50
...

首先准备搭建环境所需要的安装包,我选择的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环境安装成功
Linux下zookeeper集群环境搭建
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]:[email protected]] - 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


相关标签: zookeeper