11

4 zookeeper集群和基本命令 - look-word

 2 years ago
source link: https://www.cnblogs.com/look-word/p/16484649.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

4 zookeeper集群和基本命令

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

1 安装zookeeper

我们的zookeeper是安装在/opt目录下


2 配置服务器编号

  • 在/opt/zookeeper/zkData创建myid文件
vim myid
  • 在文件中添加与server对应的编号:1
  • 其余两台服务器分别对应2和3

3 配置zoo.cfg文件

  • 打开zoo.cfg文件,增加如下配置
    img
#######################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,而这个端口就是用来执行选举时服务器相互通信的端口。

4 配置其余两台服务器

找到虚拟机安装的位置进入

img
  1. 在虚拟机数据目录vms下,创建zk02

    img
  2. 将本台服务器数据目录下的.vmx文件和所有的.vmdk文件分别拷贝zk02下

    img
  3. 虚拟机->文件->打开 (选择zk02下的.vmx文件)

    img
  4. 开启此虚拟机,弹出对话框,选择“我已复制该虚拟机”

  5. 进入系统后,查看ip,修改/opt/zookeeper/zkData/myid中的数值为2

还需要注意目录中集群的ip哦是否一致

img

第三台服务器zk03,重复上面的步骤


5 集群操作

  1. 每台服务器的防火墙必须关闭

    systemctl stop firewalld.service # 关闭集群
    systemctl status firewalld.service #查看状态
    
  2. 启动第1台

需要进入到zookeeper的bin 目录

[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. 当启动第2台服务器时
    • 查看第1台的状态:Mode: follower
    • 查看第2台的状态:Mode: leader

6 客户端命令行操作

启动客户端

[root@localhost bin]# ./zkCli.sh

显示所有操作命令

help

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

ls /

查看当前节点详细数据

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:子节点数

分别创建2个普通节点

  • 在根目录下,创建中国和美国两个节点
create /china
create /usa
  • 在根目录下,创建俄罗斯节点,并保存“普京”数据到节点上
create /ru "pujing"
  • 多级创建节点
    • 在日本下,创建东京 “热”
    • japan必须提前创建好,否则报错 “节点不存在”
create /japan/Tokyo "hot"

获得节点的值

get /japan/Tokyo

创建短暂节点:

创建成功之后,quit退出客户端,重新连接,短暂的节点消失

create -e /uk
ls /
quit
ls /

创建带序号的节点

  • 在俄罗斯ru下,创建3个city
create -s /ru/city # 执行三次
ls /ru
[city0000000000, city0000000001, city0000000002]
  • 如果原来没有序号节点,序号从0开始递增。
  • 如果原节点下已有2个节点,则再排序时从2开始,以此类推

修改节点数据值

set /japan/Tokyo "too hot"
  • 监听 节点的值变化 或 子节点变化(路径变化)

    1. 在server3主机上注册监听/usa节点的数据变化
    addWatch /usa
    
    1. 在Server1主机上修改/usa的数据
    set /usa "telangpu"
    
    1. Server3会立刻响应
      WatchedEvent state:SyncConnected type:NodeDataChanged path:/usa
    2. 如果在Server1的/usa下面创建子节点NewYork
    create /usa/NewYork
    
    1. Server3会立刻响应
      WatchedEvent state:SyncConnected type:NodeCreatedpath:/usa/NewYork
delete /usa/NewYork

递归删除节点 (非空节点,节点下有子节点)

不仅删除/ru,而且/ru下的所有子节点也随之删除

deleteall /ru

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK