准备zk集群所用的机器下载安装包下载好之后上传到linux服务器
rz上传命令进入172.22.40.104机器,解压apache-zookeeper-3.6.3-bin.tar.gz修改文件名在根目录(即zookeeper目录下)创建文件夹 data 和文件夹 logs进入data目录下创建一个myid文件 ,用来存储zookeeper服务的唯一标识在另外两个机器的zookeeper目录里,同样执行以上操作,注意唯一标识要区分开 修改配置zoo.cfg
主要修改的配置为:把172.22.40.104机器上的zoo.cfg配置文件copy到另外两台机器 配置环境变量分别启动这三个zookeeper查看是否有2181端口分别查看三台机器上zk的运行状态zookeeper常用命令
1、zookeeper的启动命令2、zookeeper的停止命令3、查看状态命令4、重启ZK服务5、连接服务器 zookeeper配置文件说明重要配置说明集群测试
启动zookeeper
启动zookeeper服务之后,我们可以使用如下命令连接到zookeeper服务 zk客户端命令
1、ls #查看某个目录包含的所有文件,例如:2、create #创建znode,并设置初始内容,例如:3、get #获取znode的数据,如下:4、set #修改znode内容,例如:5、delete -- 删除znode,例如:6、quit -- 退出客户端7、help -- 帮助命令 zookeeper 图形化的客户端工具:ZooInspector
使用方式
准备zk集群所用的机器172.22.40.104
172.22.40.105
172.22.40.106
到zookeeper官网上下载:https://zookeeper.apache.org/
这里我们使用:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
当然也可以使用wget命令下载:
[root@rabbitmq-1 local]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz下载好之后上传到linux服务器 rz上传命令
如果rz上传失败,可以先传到跳板机然后再scp到目标机器上:scp -r ./apache-zookeeper-3.6.3-bin.tar.gz root@172.22.40.106:/usr/local/
进入172.22.40.104机器,解压apache-zookeeper-3.6.3-bin.tar.gztar -xzvf apache-zookeeper-3.6.3-bin.tar.gz修改文件名
mv apache-zookeeper-3.6.3-bin zookeeper在根目录(即zookeeper目录下)创建文件夹 data 和文件夹 logs
cd zookeeper && mkdir data && mkdir logs进入data目录下创建一个myid文件 ,用来存储zookeeper服务的唯一标识
echo 1 > data/myid在另外两个机器的zookeeper目录里,同样执行以上操作,注意唯一标识要区分开
ssh 172.22.40.105 cd usr/local && tar -xzvf apache-zookeeper-3.6.3-bin.tar.gz mv apache-zookeeper-3.6.3-bin zookeeper cd zookeeper && mkdir data && mkdir logs echo 2 > data/myid
ssh 172.22.40.106 cd usr/local && tar -xzvf apache-zookeeper-3.6.3-bin.tar.gz mv apache-zookeeper-3.6.3-bin zookeeper cd zookeeper && mkdir data && mkdir logs echo 3 > data/myid修改配置zoo.cfg
cd /usr/local/zookeeper/conf && cp zoo_sample.cfg zoo.cfg主要修改的配置为:
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/logs server.1=172.22.40.104:2888:3888 server.2=172.22.40.105:2888:3888 server.3=172.22.40.106:2888:3888 注意:server. 后面跟的数字就是myid文件内存储的唯一标识把172.22.40.104机器上的zoo.cfg配置文件copy到另外两台机器 配置环境变量
vim /etc/profile #在最后加上 export ZK_HOME=/usr/local/zookeeper export PATH=$ZK_HOME/bin:$PATH #强制生效 source /etc/profile分别启动这三个zookeeper
cd /usr/local/zookeeper/bin ./zkServer.sh start查看是否有2181端口
ps -ef | grep zookeeper netstat -nplt | grep 2181分别查看三台机器上zk的运行状态
[root@root-1 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower ------- [root@root-2 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader ------- [root@root-3 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
到这可以看出40.105上zookeeper被投票选举为leader(主机) ,其余两个zookeeper为follower(备机)
zookeeper常用命令 1、zookeeper的启动命令cd /usr/local/zookeeper/bin/ ./zkServer.sh start2、zookeeper的停止命令
./zkServer.sh stop3、查看状态命令
./zkServer.sh status4、重启ZK服务
./zkServer.sh restart5、连接服务器
./zkCli.sh -server 127.0.0.1:2181zookeeper配置文件说明
主要介绍几个常用的配置:
#这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。 #是initLimit和syncLimit超时配置的基本单位:毫秒。 #例如对于initLimit,其配置值为10,说明其超时时间为 2000ms * 10 = 20秒。 tickTime=2000 #这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper 服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。 #zooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。 #当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。 #initLimit配置follower与leader之间建立连接后进行同步的最长时间。 initLimit=10 #这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是5*2000=10秒 #配置follower和leader之间发送消息,请求和应答的最大时间长度。 syncLimit=5 #dataDir指定的路径是快照日志保存路径,当没有指定dataLogDir路径时,事务日志也会保存在该目录下。 dataDir=/usr/local/zookeeper/data #dataLogDir指定的路径是事务日志保存路径。 dataLogDir=/usr/local/zookeeper/logs #这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。 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 ## Metrics Providers # # https://prometheus.io Metrics Exporter #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider #metricsProvider.httpPort=7000 #metricsProvider.exportJvmInfo=true #其中server.后面为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。 #172.22.40.104为集群里的IP地址, #第一个端口是leader和follower之间的通信端口,默认是2888, #第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888。 server.1=172.22.40.104:2888:3888 server.2=172.22.40.105:2888:3888 server.3=172.22.40.106:2888:3888重要配置说明
1. myid文件和server.myid在快照目录下存放的标识本台服务器的文件,他是整个zk集群用来发现彼此的一个重要标识。 2. zoo.cfg 文件是zookeeper配置文件在conf目录里。 3. log4j.properties文件是zk的日志输出文件在conf目录里用java写的程序基本上有个共同点日志都用log4j,来进行管理。 4. zkEnv.sh和zkServer.sh文件 zkServer.sh 主的管理程序文件 zkEnv.sh 是主要配置,zookeeper集群启动时配置环境变量的文件集群测试 启动zookeeper 启动zookeeper服务之后,我们可以使用如下命令连接到zookeeper服务
cd /usr/local/zookeeper/bin ./zkCli.sh -server 172.22.40.104:2181 或 ./zkCli.sh -server 127.0.0.1:2181
zk客户端命令注意,zookeeper不会主动的清除旧的快照和日志文件,这个是操作者的责任。以下为清除文件的实例脚本:
#!/bin/bash
dataDir=/opt/zookeeper/zkdata/version-2
dataLogDir=/opt/zookeeper/zkdatalog/version-2
count=66
count= [ [ [count+1]
ls -t d a t a L o g D i r / l o g . ∗ ∣ t a i l − n + dataLogDir/log.* | tail -n + dataLogDir/log.∗∣tail−n+count | xargs rm -f
ls -t d a t a D i r / s n a p s h o t . ∗ ∣ t a i l − n + dataDir/snapshot.* | tail -n + dataDir/snapshot.∗∣tail−n+count | xargs rm -f
以上这个脚本定义了删除对应两个目录中的文件,保留最新的66个文件,可以将他写到crontab 中,设置为每天凌晨2点执行一次就可以了。
命令行工具的一些常用操作命令如下:
1、ls #查看某个目录包含的所有文件,例如:[zk: 172.22.40.104:2181(CONNECTED) 1] ls / [zookeeper]2、create #创建znode,并设置初始内容,例如:
[zk: 172.22.40.104:2181(CONNECTED) 4] create /test "test" Created /test3、get #获取znode的数据,如下:
[zk: 172.22.40.104:2181(CONNECTED) 5] get /test test4、set #修改znode内容,例如:
[zk: 172.22.40.104:2181(CONNECTED) 6] set /test "testyAz" [zk: 172.22.40.104:2181(CONNECTED) 7] get /test testyAz5、delete – 删除znode,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] delete /test6、quit – 退出客户端 7、help – 帮助命令 zookeeper 图形化的客户端工具:ZooInspector
查看Zookeeper中的数据,我们可以通过ZkCli.sh命令客户端查看,但是不太直观,因为Zookeeper本身数据是以树型结构存储组织的。给大家推荐一个实用的界面操作工具**ZooInspector**。
ZooInspector下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
#1)解压,进入目录:ZooInspector/build #2)运行或mac下双击zookeeper-dev-ZooInspector.jar //执行成功后,会弹出java ui client java -jar zookeeper-dev-ZooInspector.jar #3)点击左上角连接按钮,输入Zookeeper服务地址:ip:2181,点击OK,就可以查看Zookeeper节点信息了。



