- 简介
1. zookeeper 在 dubbo 开发过程中,用作注册中心,进行分布式数据的交互2. 分布式应用正在运行的一组系统称为集群,而在集群中运行的每台机器被称为节点。3. zookeeper 的文件系统跟 linux 一致,根节点是“/”,每一个文件目录都挂在根目录下
- 安装
//1. 下载zookeeper文件wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz//2. 解压移动mv zookeeper-3.4.11.tar.gz /usr/local/tar xzvf zookeeper-3.4.11.tar.gzmv zookeeper-3.4.11.tar.gz zookeeper//3. 进行相应的配置,配置文件相关介绍、配置要求详见文档后面//3.1 创建数据文件夹mkdir /usr/local/zookeeper/data//3.2 创建配置文件cd /usr/local/zookeeper/confcp -r zoo_sample.cfg zoo.cfg//3.3 修改配置文件,如何修改会在后面介绍vim zoo.cfg//4. 运行zkServercd /usr/local/zookeeper/bin./zkServer.sh start//5. 运行zkCli./zkCli.sh
- 1
- 1
1. 简介
6. 其他要说的 1. 推荐搭建伪集群/集群模式 2. 配置文件得进行相应的配置才能进行****
**3. zkServer的相关命令**1. 启动```./zkServer.sh start```2. 关闭```./zkServer.sh stop```3. 重启```./zkServer.sh restart```4. 状态 1. 提示为singletone为单机模式 2. 提示为model xxxx为集群模式 3. 提示为Error contacting service. It is probably not running.也为集群模式,可考虑是否因为集群服务器只开启当前一台服务器,或配置文件有集群相关配置```./zkServer.sh status```****
**4. zkCli的相关命令**1. ZooKeeper命令行界面(CLI)用于与ZooKeeper集合进行交互以进行开发。它有助于调试和解决不同的选项。2. 创建znode```#在path1位置上创建znode,存储数据create /path1 123season#znode有临时节点、持久节点、临时顺序节点、持久顺序节点,默认为持久节点
#持久节点
[zk: localhost:2181(CONNECTED) 0] create /path1 123Created /path1#持久顺序节点(自动在节点后面添加10位顺序)
[zk: localhost:2181(CONNECTED) 1] create -s /path2 123Created /path20000000002#临时节点(生命随着zkCli的关闭而消失)
[zk: localhost:2181(CONNECTED) 4] create -e /path1/ee 123Created /path1/ee#临时顺序节点
[zk: localhost:2181(CONNECTED) 5] create -e -s /path1/es 123Created /path1/es0000000002```3. 获取数据```[zk: localhost:2181(CONNECTED) 2] get /path1123cZxid = 0x100000017ctime = Tue Mar 27 14:07:44 CST 2018mZxid = 0x100000017mtime = Tue Mar 27 14:07:44 CST 2018pZxid = 0x100000017cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x100002554a10007dataLength = 3numChildren = 0```4. 监视znode的变化```#只需要在get命令后加上任意字符,即可执行监视操作#注意监视操作只能执行一次,发生改动,监视完成[zk: localhost:2181(CONNECTED) 1] get /path1 123123cZxid = 0x100000009ctime = Tue Mar 27 14:00:59 CST 2018mZxid = 0x100000009mtime = Tue Mar 27 14:00:59 CST 2018pZxid = 0x100000014cversion = 6dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 3numChildren = 2[zk: localhost:2181(CONNECTED) 2] WATCHER::WatchedEvent state:SyncConnected type:NodeDataChanged path:/path1
```5. 设置数据```[zk: localhost:2181(CONNECTED) 3] set /path1 345cZxid = 0x100000009ctime = Tue Mar 27 14:00:59 CST 2018mZxid = 0x10000001emtime = Tue Mar 27 14:13:11 CST 2018pZxid = 0x100000014cversion = 6dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 3numChildren = 2```6. 创建znode的子节点```#与之前的创建节点一样,只要节点不存在,即可创建成功[zk: localhost:2181(CONNECTED) 4] create -e /path1/ee 123Created /path1/ee```7. 列出znode的子节点```#ls列出子节点[zk: localhost:2181(CONNECTED) 4] ls /path1[e, es]#get获取该节点数据[zk: localhost:2181(CONNECTED) 5] get /path1345```
8. 检查状态```[zk: localhost:2181(CONNECTED) 4] ls /path[001, 002][zk: localhost:2181(CONNECTED) 2] stat /path
cZxid = 0x100000023ctime = Tue Mar 27 14:24:55 CST 2018mZxid = 0x100000023mtime = Tue Mar 27 14:24:55 CST 2018pZxid = 0x100000025cversion = 2dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 3numChildren = 2[zk: localhost:2181(CONNECTED) 5] stat /path/001
cZxid = 0x100000024ctime = Tue Mar 27 14:25:20 CST 2018mZxid = 0x100000024mtime = Tue Mar 27 14:25:20 CST 2018pZxid = 0x100000024cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 3numChildren = 0```9. 移除/删除znode```#若有子节点,一并递归删除[zk: localhost:2181(CONNECTED) 7] rmr /path1/e#只能删除该节点数据,如果有子节点,则不能操作[zk: localhost:2181(CONNECTED) 8] delete /path1Node not empty: /path1``````[zk: localhost:2181(CONNECTED) 12] create /path 000Created /path[zk: localhost:2181(CONNECTED) 13] create /path/001 001Created /path/001[zk: localhost:2181(CONNECTED) 14] create /path/002 002Created /path/002[zk: localhost:2181(CONNECTED) 16] ls /path[001, 002][zk: localhost:2181(CONNECTED) 17] get /path000```****
**5. 配置文件相关解释**```##心跳时间,为毫秒,zookeeper服务器之间进行判断是否live的设定tickTime=2000## 参数设定了允许所有跟随者与领导者进行连接并同步的时间,如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举。如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10
initLimit=10## 参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。
syncLimit=5#数据存放地址
dataDir=/usr/local/zookeeper/zookeeper-01/data#客户端连接Server端口号(监听client连接的端口号)
clientPort=2181#集群之间的配置
#server.No=IP:PortA:PortB#No:是一个数字, 表示这是第几号server#IP:是server所在的IP地址#PortA:服务器与leader进行数据交换的监听端口#PortB:leader选举监听端口server.1=localhost:2287:3387server.2=localhost:2288:3388server.3=localhost:2289:3389``` ******6. 单机模式、伪集群模式、集群模式**1. 单机模式只需要配置tickTime、dataDir、clientPort就行了,如果配置多了,有可能被认为是集群模式2. 伪集群模式跟集群模式只是一个服务器跟多台服务器的区别3. 集群基本配置 1. 配置2个容忍时间 2. 配置集群列表 3. 在dataDir目录下创建 ``` cd /usr/local/zookeeper/zookeeper-01/data vi myid #在文件中写入配置文件中该服务器的No数字 ```4. 伪集群配置 1. 因为ip是同一个,所以3个端口号都不能一样