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环境安装成功
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
上一篇: Linux下zookeeper集群搭建
下一篇: 云大数据:大数据的社会生态化