搭建zookeeper环境
2024-08-30 11:44:06
zookeeper
是一个强一致的分布式数据库,由多个节点共同组成一个分布式集群,挂掉任意一个节点,数据库仍然可以正常工作。
独立模式
下载zookeeper
打包文件,并进行解压
➜ ~ tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
进入zookeeper
的解压目录,重命名conf
目录下的配置文件
➜ apache-zookeeper-3.5.6-bin mv conf/zoo_sample.cfg conf/zoo.cfg
启动zookeeper
,使用start-foreground
启动到前台,方便查看服务的输出信息
➜ apache-zookeeper-3.5.6-bin bin/zkServer.sh start-foreground
仲裁模式
在zoo.cfg
的基础上进行编辑,创建zoo_1.cfg
、zoo_2.cfg
及zoo_3.cfg
需要额外追加的配置信息。冒号分割的第二部分和第三部分为TCP
端口号,分别用于仲裁通讯和群首选举。
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
当启动一个服务器时,我们需要知道启动的是哪个服务器。zookeeper
通过读取dataDir
下的名为myid
的文件来获取服务器ID
信息。
➜ zookeeper echo 1 > zoo_1/data/myid
➜ zookeeper echo 2 > zoo_2/data/myid
➜ zookeeper echo 3 > zoo_3/data/myid
启动服务,从zoo_1
开始
➜ zoo_1 ~/apache-zookeeper-3.5.6-bin/bin/zkServer.sh start-foreground ./zoo_1.cfg
因为我们只启动了三个zookeeper
中的一个,所以整个服务器还无法运行。
2020-01-01 12:08:37,016 [myid:1] - INFO [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumPeer@1193] - LOOKING
2020-01-01 12:08:37,016 [myid:1] - INFO [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):FastLeaderElection@885] - New election. My id = 1, proposed zxid=0x0
2020-01-01 12:08:37,021 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@679] www.xinyueylzc.cn- Cannot open channel to 2 at election address /127.0.0.1:3334
java.net.ConnectException: Connection refused (Connection refused)
...
2020-01-01 12:08:37,031 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@679] - Cannot open channel to 3 at election address /127.0.0.1:4445
java.net.ConnectException: Connection refused (Connection refused)
...
启动第二个服务器,这样可以构成仲裁的法定人数
➜ zoo_2 ~/apache-zookeeper-3.5.6-bin/bin/zkServer.sh start-foreground ./zoo_2.cfg
服务器二被选择为群首
2020-01-01 12:10:40,802 [myid:2] - INFO [QuorumPeer[myid=2](plain=/0:0:0:0:0:0:0:0:2182)(secure=disabled):Leader@464] - LEADING - LEADER ELECTION TOOK - 54 MS
2020-01-01 12:10:40,804 [myid:2] - INFO [QuorumPeer[myid=2](www.lafei6d.cn plain=/0:0:0:0:0:0:0:0:2182)(secure=disabled):FileTxnSnapLog@384] - Snapshotting: 0x0 to /tmp/zookeeper/zoo_2/data/version-2/snapshot.0
2020-01-01 12:10:40,812 [myid:2] - INFO [LearnerHandler-www.huizhonggjpt.cn /127.0.0.1:62308:LearnerHandler@406] - Follower sid: 1 : info : 127.0.0.1:2222:2223:participant
2020-01-01 12:10:40,816 [myid:2] - INFO [LearnerHandler-www.shentuylzc.cn /127.0.0.1:62308:ZKDatabase@295] - On disk txn sync enabled with snapshotSizeFactor 0.33
访问集群
➜ bin ./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
发布与订阅的例子
启动一个zk_0
,创建一个临时的znode
节点:
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(CONNECTED) 9] create www.feishenbo.cn-e /master "this is master"
Created /master
启动另一个zk_1
, 给znode
设置一个监视点:
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(CONNECTED) 3] ls /master true
'ls path [watch]' has been deprecated. Please use 'ls [-w] path' instead.
[]
再启动另一个zk_2
,给znode
设置一个监视点:
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(CONNECTED) 1] ls /master true
'ls path [watch]' has been deprecated.www.jujinyule.com Please use 'ls [-w] path' instead.
[]
在zk_0
中删除掉master
,zk_1
和zk_2
同时收到删除的通知消息
zk_0:
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(www.letianhuanchao.cn CONNECTED) 10] delete /master
zk_1/zk_2:
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(CONNECTED) 2]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDeleted path:/master
最新文章
- 附录E 安装Kafka
- php同步mysql两个数据库中表的数据
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境
- mysqlbinglog基于即时点还原
- C++ transform
- 对于HIVE架构的理解
- WebService中实现上传下载文件
- tmux的使用方法和个性化配置
- [html][转]常用返回顶部代码
- [转载]Div和Table的区别
- @font-face扒站的步骤
- 逻辑(if)、关系、数字、条件运算符
- wpf 如何设置滚动条在超出范围的时候才显示?(转)
- c++中一个类所占用的空间
- jquery按钮倒计时
- Hibernate的继承映射
- js委托事件和代理事件
- 每天一个小程序—0000题(python图像处理)
- Python网络编程之socket应用
- JQuery 获得元素的方法
热门文章
- spring boot项目mybatis配置注解+配置文件
- 一百一十一、SAP的OO-ALV之五,显示ALV表格
- 四十一、在SAP中添加多条件选择框
- ES6 之 Proxy
- Android Studio模拟器无法访问网络
- Git提交出现error: src refspec master does not match any的问题
- Bean 注解(Annotation)配置(1)- 通过注解加载Bean
- mysql第五篇 : MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
- 设置此div的子元素居中显示
- spring学习第7天(PCD以及切点表达式)