2.1.2 部署ZooKeeper的Standalone模式
将在kafka101的虚拟机上进行部署,使用的ZooKeeper的版本是zookeeper-3.4.10.tar.gz。
将安装包解压至/root/training目录。
设置ZooKeeper环境变量,编辑文件~/.bash_profile。
生成ZooKeeper环境变量。
生成zoo.cfg文件。
编辑zoo.cfg文件,修改后的文件内容如下。
这里主要做了两个修改,一个是dataDir;另一个是设置了server.1。参数dataDir的含义在前面的内容中已经提到,这个参数用于指定ZooKeeper数据存储的路径,在生产环境中需要重新设置。这里我们将其修改为/root/training/zookeeper-3.4.10/tmp。
server.1用于指定ZooKeeper集群中的server节点。由于现在部署的是一个Standalone的模式,在这种模式下的集群中只存在一个ZooKeeper Server。因此,这里只设置了一个server地址,即kafka101:2888:3888。kafka101是我们在前面部署的其中一台CentOS虚拟机;端口2888表示集群内Server节点通信的端口,Leader将监听此端口;端口3888用于选举Leader使用。当ZooKeeper集群的Leader宕机后,ZooKeeper集群会通过此端口选举一个新的Leader。
进入参数dataDir指定的目录,即/root/training/zookeeper-3.4.10/tmp。创建myid文件,并在myid文件中输入1。注意,这个1用来表示server.1的ZooKeeper节点在集群中的哪个主机上。
执行命令zkServer.sh start,启动ZooKeeper Server。
执行命令zkServer.sh status,查看ZooKeeper Server的状态。
也可以通过执行jps命令查看Java的后台进程信息。
这里的QuorumPeerMain进程对应的就是ZooKeeper Server进程。至此,ZooKeeper Standalone模式就部署完成了。
可以使用ZooKeeper提供的CLI命令行工具操作ZooKeeper。通过下面的命令直接启动ZooKeeper的客户端,默认将其连接到本机的2181端口上。
也可以通过-server参数指定连接的主机和端口。
登录ZooKeeper客户端后,可以执行help命令查看所有可用的操作命令,如下所示。通过具体的示例来演示如何使用ZooKeeper的操作命令。
可以通过以下命令来创建ZooKeeper的节点。
在ZooKeeper的根节点下,创建了node1节点,node1节点上的数据是helloworld。当ZooKeeper的节点创建完成后,通过以下命令查看当前节点列表。
使用state命令可以查看节点状态。
其中,
• cZxid和ctime表示创建时的事务id和时间。
• mZxid和mtime表示最后一次更新时的事务id和时间。
• pZxid表示当前节点的子节点列表最后一次被修改时的事务id。引起子节点列表变化的两种情况是删除子节点和新增子节点。
由于ZooKeeper是通过节点来保存数据的,所以可直接通过get命令查看节点数据内容,如下所示。
最后,可以使用quit命令退出ZooKeeper客户端。