微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Zookeeper实战

文章目录

分布式安装部署

思路:先搞定一台服务器,再克隆出两台,形成集群。

安装Zookeeper

点我传送

配置服务器编号

  1. /opt/zookeeper/zkData目录下新建一个myid文件
  2. 文件添加与server对应的编号:1(整个文件内容就是1)
  3. 其余两台服务器分别对应2和3

配置zoo.cfg文件

打开zoo.cfg文件增加以下配置:

####################### cluster #######################
server.1=192.168.204.141:2888:3888 
server.2=192.168.204.142:2888:3888
server.3=192.168.204.143:2888:3888

配置参数解读:server.A=B:C:D

  • A:一个数字,表示第几号服务器,集群模式下配置的/opt/zookeeper/zkData/myid文件里面的数据就是A的值。
  • B:服务器的ip地址。
  • C:与集群中leader服务器交换信息的端口。
  • D:选举时的专用端口,万一集群中的leader服务器挂了,需要一个端口来重新进行选举,选出一个新的leader,而这个端口就是用来执行选举时服务器相互通信的端口。

配置其余两台服务器

  1. 复制虚拟机:点我传送
  2. 进入系统后,修改linux中的ip地址,修改/opt/zookeeper/zkData/myid中的数值为2

集群操作

# 关闭防火墙
[root@localhost bin] systemctl stop firewalld.service

# 启动第一台
[root@localhost bin] ./zkServer.sh start

# 查看状态
[root@localhost bin] ./zkServer.sh status
	ZooKeeper JMX enabled by default
	Using config: /opt/zookeeper/bin/../conf/zoo.cfg 
	Client port found: 2181. Client address: localhost. 
	Error contacting service. It is probably not running.
# 因为没有超过半数以上的服务器,所以集群失败(防火墙没有关闭也会导致失败)

# 当启动第二台服务器时
# 查看第1台的状态:
Mode: follower
# 查看第2台的状态:
Mode: leader

客户端命令行操作

# 启动客户端(在zookeeper的bin目录下执行)
[root@localhost bin] ./zkCli.sh

# 帮助手册
help

# 查看当前znode中所包含的内容
ls /

# 查看当前节点的详细数据(Zookeeper老版本使用 ls2 / )
ls -s /
	cZxid			# 创建节点的事务
	                    # 每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID
	                    # 事务ID是ZooKeeper中所有修改总的次序
	                    # 每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生
    ctime			# 被创建的毫秒数(从1970年开始)
    mZxid			# 最后更新的事务zxid
    mtime			# 最后修改的毫秒数(从1970年开始)
    pZxid			# 最后更新的子节点zxid
    cversion		# 创建版本号,子节点修改次数
    dataVersion		# 数据变化版本号
    aclVersion		# 权限版本号
    ephemeralOwner	# 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0
    dataLength		# 数据长度
    numChildren		# 子节点数
    
# 创建节点
create /节点名
create /父节点/子节点	# 父节点必须提前创建好(逐级创建)
create -e /节点名 		# 创建短暂节点:创建成功后,quit退出客户端,重新连接,短暂的节点消失
create -s /节点名		# 如果原来没有节点,则序号从0开始递增;如果原节点下已有2个节点,则排序时从2开始,以此类推

# 创建节点并保存数据
create /节点名 "数据内容"

# 获取节点数据
get /节点名

# 修改节点数据
set /节点名 "数据内容"

# 监听节点(监听节点的数据是否发生变化及子节点的路径是否发生变化)
addWatch /节点名

# 删除节点
delete /节点名
deleteall /节点名	# 删除节点及节点下的所有内容(递归删除

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐