zookeeper集群搭建

it2022-05-05  169

zookeeper集群搭建

zookeeper简介安装zookeeper使用mvn打包运行zk集群开启会话结束会话创建节点持久节点有序节点普通节点 临时节点。ls命令修改节点值获取节点值删除节点 欢迎查看Eetal的第二十三篇博客–zookeeper集群搭建

zookeeper简介

zookeeper大多用于做分布式环境下的注册中心或者监控中心 一开始是用于分布式系统下资源的同步访问 在分布式事务场景下也多作为 协调者 是一个中心化管理的分布式同步技术 zk上的数据和redis类似,存在于内存,保存快照、数据日志等文件

安装zookeeper

需要安装jdk环境——jdk1.8的u211以上版本 下载zookeeper压缩包并解压——3.5.5

复制zoo.cfg.sample为zoo1.cfg作为第一台的配置文件 复制多个配置文件作为多台zk启动的不同配置 编辑不同配置文件,使用不同客户端连接端口、数据同步端口和选举端口 server.1=127.0.0.1:2881:3881——第一个端口代表数据同步端口,第二个代表选举端口 dataDir配置到不同目录,不同服务器存放数据的快照文件到不同文件夹,还要存放不同的myid文件 myid文件中只保存一个数字代表当前服务器的id dataLogDir配置到不同目录,使得数据的日志分开存储(不包括运行时的日志,运行时日志在log4j配置文件里配置)

dataDir=/tmp/zookeeper01 clientPort=2181 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883

使用mvn打包

3.5.5版本的zookeeper需要最少jdk1.8 u211版本,并且默认是没有编译class文件的 需要进入zookeeper-server目录,使用maven命令 mvn package -Dmaventestskip=true 跳过测试程序并打包编译

运行zk集群

我们配置有三台zk,假设第一个的配置文件为conf目录下的zoo1.cfg,依次类推 运行过程为 使用zk的bin下的zkServer.sh命令运行

./zkServer.sh start conf/zoo1.cfg

启动成功后,这时使用命令查看状态

./zkServer.sh start conf/zoo1.cfg

应该是提示有错误,可能没有运行成功的 那是因为集群里只有一台机器无法选举(因为zk是中心化的,必须有一个协调者),不用管继续启动剩下的机器

./zkServer.sh start conf/zoo2.cfg

这时查看状态会发现两台机器都启动成功了 并且一台成为了follower一台成为leader zookeeper集群下的机器有三种角色,leader、follower和observer leader负责事务请求(增删改),任意节点都可处理查询请求,follower参与选举,observer不参与选举只做数据同步 接着启动最后一台

./zkServer.sh start conf/zoo3.cfg

开启会话

使用zkCli命令

sh bin/zkCli.sh -server host:port

host为zkServer的ip或者域名,port为配置的client端口

结束会话

quit

创建节点

持久节点

有序节点

创建时添加参数 -s 指定,所有有序节点会在节点,排序从0开始,每次创建有序节点会使序号加一 有序节点会在输入名称后加上序号作为节点名称创建节点

create -s sortNode aaa

普通节点

create node bbb

没有指定为临时节点的节点默认都是持久节点

临时节点。

临时节点在会话结束时就会被删除,通过创建时添加参数 -e 指定

create -e tmpNode tmp

临时节点也可以是有序节点

create -s -e sortTmpNode sortTmp

ls命令

ls命令与linux类似,展示给定路径的所有子节点 根路径为/

ls / ls -w /

-w参数代表开启该路径的一次watch,下一次且仅一次该路径下的子节点的增删事件会被监听到

修改节点值

absPath—节点的绝对路径值,root为/

set [absPath] value [version]

version值可不传,用于并发控制,代表要求的为dataversion,即该节点被修改过几次,如果不符合,本次修改失败

获取节点值

absPath—节点的绝对路径值,root为/

get -w [absPath] get -s [absPath]

-w参数代表开启一次watch,下一次且仅一次对该节点的set事件将会被监听到 -s参数代表获取节点值并展示包括版本号、子节点个数等信息 -s输出格式如下

cZxid = 0x10000001d //create node时分配的id ctime = Tue Jul 16 07:22:54 PDT 2019// 创建时间 mZxid = 0x10000001f //set修改过以后变更的id mtime = Wed Jul 17 08:43:33 PDT 2019 //最后一次修改时间 pZxid = 0x10000001d //一开始为cZxid,子节点修改时变更 cversion = 0 //子节点版本号,一开始为0,子节点修改时变更 dataVersion = 2 //数据版本号,一开始为0,每修改一次+1 aclVersion = 0 //acl权限版本号,一开始为0[create,read,write,delete,admin] ephemeralOwner = 0x0 //临时节点才会有,持有者会话id dataLength = 1 //数据的字符串长度 numChildren = 0 //子节点个数

删除节点

absPath—节点的绝对路径值,root为/

delete [absPath]

更多文章,请搜索公众号歪歪梯Club


最新回复(0)