名词解释
leader:负责发起投票,更细系统状态,并同步数据
follwer:接受客户端返回结果,参与选举投票
object:扩展系统,转发leader请求
client:向zookeper发起数据读写请求
网上环境因人而异,每个人方式不一样,写下是自己搭建环境的步骤:
1、下载安装包:
mkdir daxian
cd daxian
wget http://mirror.bit.edu.cn/apache/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz
wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
备注:scp -r daxian/ root@192.168.210.11:// 将daxian文件夹发送到11这个环境下,而daxian这个文件jar里有以上安装包,所以自己找自己的安装包名字
2、解压 tar -zxvf ***
例如: tar -zxvf zookeeper-3.4.13.tar.gz
3、配置zookeeper集群
cd /daxian/zookeeper-3.4.13/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
zoo.cfg内容如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/daxian/zookeeper-3.4.13/zkdata
dataLogDir=/daxian/zookeeper-3.4.13/zklogdir
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=daxian10:2888:3888
server.2=daxian11:2888:3888
server.3=daxian12:2888:3888
退出
wq!
4、创建日志,数据目录
mkdir /daxian/zookeeper-3.4.13/zkdata
mkdir /daxian/zookeeper-3.4.13/zklogdir
dataDir=/daxian/zookeeper-3.4.13/zkdata
dataLogDir=/daxian/zookeeper-3.4.13/zklogdir
5、创建myid
除了以上配置外,每个服务器都必须在data dir(zkdata)目录中创建一个myid的文件,文件里要包含服务器ID,这个id要与配置文件里配置的id保持一致,(zoo.cfg 里末尾,server.1 1就是id)
执行命令:echo "3" > /daxian/zookeeper-3.4.13/zkdata/myid
注意: echo "3" 3代替不同的服务器节点。其他配置 1或者2,不可重复
server.1 第一个参数为服务器的ip或者名字,2888位通信tcp端口,3888位tcp选举leader端口,
而上面我的服务器ip写的是daxian10, 那是因为我配置了hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.10 daxian10
192.168.200.11 daxian11
192.168.200.12 daxian12
6、启动,可以配置软连接启动,也可以直接在zookeeper目录下直接启动
cd /daxian/zookeeper-3.4.13/bin
sh zkServer.sh start &
显示:Using config: /daxian/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
7、查看启动是否成功
sh zkServer.sh status
单机显示
ZooKeeper JMX enabled by default
Using config: /daxian/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone
集群显示
ZooKeeper JMX enabled by default
Using config: /daxian/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
上面的leader或者是follwer
8错误排查:
在bin目录下,cat zookeeper.out 查看下错误日志
1、显示connect refused
Cannot open channel to 3 at election address daxian99/172.16.0.99:3888
java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:454)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:435)
at java.lang.Thread.run(Thread.java:748)
解决办法:查看防火墙是否打开和端口,
[root@daxian bin]# firewall-cmd --state
not running
: systemctl stop firewalld.service -关闭防火墙