ZooKeeper状态以及状态的转换
-
一个会话从
NOT_CONNECTED
状态开始,当客户端初始化后转换成CONNECTTING
状态(箭头1
)。 -
当客服端与服务器断开连接,状态转换成
CONNECTED
状态(箭头2
)。 -
当客服端与服务器断开连接或者无法接收到服务器的响应时,就会转换回
CONNECTING
状态(箭头3
)并尝试发现其他服务器。 -
如果发现了另外一个服务器或者重连到原来的服务器,当服务器确认会话有效之后,状态回转换回
CONNECTED
状态。否则,转换成CLOSED
状态。应用也可以显示地关闭会话(箭头4
和5
)。
Clinet连接、断开Server
可以通过zkCli
简单的对ZooKeeper
进行访问,数据创建,数据修改等操作。连接服务器命令行如下:
zkCli.sh -server 127.0.0.1:2181
说明:127.0.0.1
是本地的IP,2181
是访问端口,可以在配置文件中修改端口号。连接后会显示连接的详细信息,并进入可以操作的ZooKeeper命令终端(如下图所示)。
如果在ZooKeeper服务器运行在standalone
模式下,可以直接使用以下命令连接Server
(不建议使用):
zkCli.sh
上述命令使用的端口号为2181
,如果ZooKeeper端口号配置不是2181
(此时clientPort=2182
),将会拒绝连接,如下图所示:
断开Client
与Server
连接,直接使用quit
退出ZooKeeper命令行界面即可。
编程要求
本关任务是使用命令行,进行以下操作:
-
修改ZooKeeper配置(安装目录为
/opt/zookeeper-3.4.12
),将端口改为2182
。 -
添加
preAllocSize
配置项,值为300
。
vi /opt/zookeeper-3.4.12/conf/zoo.cfg
clientPort=2182
preAllocSize=300
-
日志输出路径修改为
/opt/zookeeper-3.4.12
(修改zkEnv.sh
)。
vi /opt/zookeeper-3.4.12/bin/zkEnv.sh
<!--修改ZOO_LOG_DIR-->
ZOO_LOG_DIR="/opt/zookeeper-3.4.12"
-
启动服务器,并通过
zkCli.sh
建立与Server
的连接(启动服务器之前确保服务器处于关闭状态,可通过status
查看服务器状态)。
zkServer.sh start
zkCli.sh -server 127.0.0.1:2182