发现zookeeper3.5.3之后出了许多新特性,就趁此时机安装一下较新版本zookeeper,顺便记录一下安装步骤,方便以后查验。
首先准备zookeeper,在这里我使用的是centos7,java环境是1.8.安装的zookeeper是3.5.8.首先找到对应版本下载。
ZooKeeper单机安装
下载解压zookeeper
我这里直接从github上面下载对应的源码包,rz命令上传
地址:https://zookeeper.apache.org/releases.html
rz/sz安装命令
yum install lrzsz
安装包解压
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /
增加软链接(纯粹为了方便,不影响安装)
ln -s /apache-zookeeper-3.5.8-bin/ /zk
进入zk目录,重命名配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
启动zookeeper
./bin/zkServer.sh start ./conf/zoo.cfg
连接zk服务端
./bin/zkCli.sh -server 127.0.0.1:2181
至此zookeeper安装完毕
ZooKeeper集群安装
为了方便这里我直接安装的是伪集群,集群架构1主2从1观察者,总共4个节点
步骤和上面单机一样,不过我们这里需要4个配置文件,并修改配置
复制4个配置文件
cp conf/zoo.cfg conf/zoo1.cfg
cp conf/zoo.cfg conf/zoo2.cfg
cp conf/zoo.cfg conf/zoo3.cfg
cp conf/zoo.cfg conf/zoo4.cfg
修改配置
tickTime=2000
initLimit=10
syncLimit=5
# dataDir修改配置为/zk/data1,/zk/data2,/zk/data3,/zk/data4
dataDir=/zk/data1
# clientPort修改配置为2181,2182,2183,2184
clientPort=2181
server.1=127.0.0.1:2001:3001
server.2=127.0.0.1:2002:3002
server.3=127.0.0.1:2003:3003
server.4=127.0.0.1:2004:3004:observer
创建4个目录,就是上面的dataDir目录
mkdir data1
mkdir data2
mkdir data3
mkdir data4
创建文件myid,标识服务server id
echo 1 > data1/myid
echo 2 > data2/myid
echo 3 > data3/myid
echo 4 > data4/myid
启动4个实例
./bin/zkServer.sh start conf/zoo1.cfg
./bin/zkServer.sh start conf/zoo2.cfg
./bin/zkServer.sh start conf/zoo3.cfg
./bin/zkServer.sh start conf/zoo4.cfg
可查询状态
./bin/zkServer.sh status conf/zoo1.cfg
./bin/zkServer.sh status conf/zoo2.cfg
./bin/zkServer.sh status conf/zoo3.cfg
./bin/zkServer.sh status conf/zoo4.cfg
# 状态返回依次
ZooKeeper JMX enabled by default
Using config: conf/zoo1.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
#========================
ZooKeeper JMX enabled by default
Using config: conf/zoo2.cfg
Client port found: 2182. Client address: localhost.
Mode: leader
#========================
ZooKeeper JMX enabled by default
Using config: conf/zoo3.cfg
Client port found: 2183. Client address: localhost.
Mode: follower
#========================
ZooKeeper JMX enabled by default
Using config: conf/zoo4.cfg
Client port found: 2184. Client address: localhost.
Mode: observer
#========================
从状态返回很明显1,3节点为follower,2节点为leader,4节点为observer
连接服务端
./bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183,127.0.0.1:2184
启动参数配置
启动参数都是在zkServer.sh里面的ZOOMAIN参数里面配置
ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"
TTL节点
ttl节点默认是禁止的。如果要想使用ttl节点必须在启动参数配置
没有开启的情况
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183,127.0.0.1:2184(CONNECTED) 0] create -t 500 /tsetttl
KeeperErrorCode = Unimplemented for /tsetttl
开启需要在启动配置加 -Dzookeeper.extendedTypesEnabled=true
ACL超级管理员配置
配置参数 -Dzookeeper.skipACL=yes可以跳过权限验证,一般安全就配置为false
获取加密密文
echo -n zk:123456 | openssl dgst -binary -sha1 | openssl base64
# 返回值
N0YquoLgOZWu74hzsd3OJTZZUw0=
启动脚本添加**-Dzookeeper.DigestAuthenticationProvider.superDigest=zk:N0YquoLgOZWu74hzsd3OJTZZUw0=**