highly reliable distributed coordination,用来作高可靠的分布式协调者,可用来:git
[root@c7bit1 conf]# cat zk2181.conf dataDir=/data/zookeeper/data2181 clientPort=2181 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2182.conf dataDir=/data/zookeeper/data2182 clientPort=2182 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2183.conf dataDir=/data/zookeeper/data2183 clientPort=2183 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840
5.配置参数介绍github
dataDir:Zookeeper 保存数据的目录,默认状况下,Zookeeper 将写数据的日志文件也保存在这个目录里shell
clientPort:这个端口就是客户端链接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。json
tickTime: Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每一个 tickTime 时间就会发送一个心跳。bash
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户链接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中链接到 Leader 的 Follower 服务器)初始化链接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器尚未收到客户端的返回信息,那么代表这个客户端链接失败。总的时间长度就是 5*2000=10 秒服务器
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒分布式
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,须要一个端口来从新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通讯的端口。若是是伪集群的配置方式,因为 B 都是同样,因此不一样的 Zookeeper 实例通讯端口号不能同样,因此要给它们分配不一样的端口号。ui
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断究竟是那个 server。debug
6.启动zk日志
[root@c7bit1 bin]# cd /usr/local/zookeeper/bin/ [root@c7bit1 bin]# ./zkServer.sh start /data/zookeeper/conf/zk2181.conf ZooKeeper JMX enabled by default Using config: /data/zookeeper/conf/zk2181.conf Starting zookeeper ... STARTED 同理启动另外两个节点: ./zkServer.sh start /data/zookeeper/conf/zk2182.conf ./zkServer.sh start /data/zookeeper/conf/zk2183.conf
7.基本命令使用
ZooKeeper -server host:port cmd args 如: ./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 ls / 固然也能够只联接单个server,如: ./zkCli.sh -server 127.0.0.1:2181 后面若是不加命令,则进入交互模式。 [zk: 127.0.0.1:2181(CONNECTED) 0] help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port 建立一个新节点 [zk: 127.0.0.1:2181(CONNECTED) 20] create /name "abc" Created /name 列出节点 [zk: 127.0.0.1:2181(CONNECTED) 23] ls / [name, zookeeper] 获取一个节点的值 [zk: 127.0.0.1:2181(CONNECTED) 21] get /name abc cZxid = 0x60000001c ctime = Thu Nov 29 21:33:31 CST 2018 mZxid = 0x60000001c mtime = Thu Nov 29 21:33:31 CST 2018 pZxid = 0x60000001c cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 设置节点的值 [zk: 127.0.0.1:2181(CONNECTED) 24] set /name '123' cZxid = 0x60000001c ctime = Thu Nov 29 21:33:31 CST 2018 mZxid = 0x60000001d mtime = Thu Nov 29 21:34:51 CST 2018 pZxid = 0x60000001c cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 删除节点 [zk: 127.0.0.1:2181(CONNECTED) 26] delete /name [zk: 127.0.0.1:2181(CONNECTED) 27] ls / [zookeeper]
若是是远程shell操做,能够下载zookeepercli-1.0.10-1.x86_64.rpm
下载地址:https://github.com/outbrain/zookeepercli
使用和上面的基本一致
[root@c7bit1 conf]# rpm -ivh zookeepercli-1.0.10-1.x86_64.rpm [root@c7bit1 conf]# zookeepercli --help Usage of zookeepercli: -acls="31": optional, csv list [1|,2|,4|,8|,16|,31] -auth_pwd="": optional, digest scheme, pwd -auth_usr="": optional, digest scheme, user -c="": command, required (exists|get|ls|lsr|create|creater|set|delete|rm|deleter|rmr|getacl|setacl) -debug=false: debug mode (very verbose) -force=false: force operation -format="txt": output format (txt|json) -servers="": srv1[:port1][,srv2[:port2]...] -stack=false: add stack trace upon error -verbose=false: verbose [root@c7bit1 bin]# zookeepercli -servers 127.0.0.1:2181 -c ls / zookeeper