ZKEssentials读书笔记(一) - 18965050/ZookeeperEssentials GitHub Wiki
一个分布式系统应该具有的几个特性:
- 资源共享
- 扩展性
- 并发操作
- 性能和可测性
- 容灾
- 接口抽象
Apache ZooKeeper is an effort to develop a highly scalable, reliable, and robust centralized service to implement coordination in distributed systems that developers can straightaway use in their applications through a very simple interface to a centralized coordination service.
Apache Zookeeper是一个高可扩展的,可靠的,健壮的分布式协调处理器.开发者可直接使用简单的接口来使用这些应用
- 配置管理(Configuration Management)
- 名称服务(Name Service)
- 分布式同步,比如锁(Lock),屏障(Barrier)
- 集群成员操作.比如节点存活检测/成员节点加入
- 由于zookeeper由Java开发,运行JVM. 确认JDK安装,并配置$JAVA_HOME环境变量
- 下载zookeeper 运行包(目前我使用的是zookeeper-3.4.5.tar.gz), 并解压
- 配置$ZK_HOME环境变量, 并将$ZK_HOME/bin 目录添加到$PATH环境变量中
- 进入$ZK_HOME/conf 目录下, 创建zoo.cfg配置文件(可重命名zoo_sample.cfg为zoo.cfg),并修改如下配置项:
- tickTime: 用于client端心跳检测的会话超时.单位:ms. 最小的会话超时是tickTime的2倍
- dataDir: 数据存储目录.包括数据库快照(snapshot)和数据库更新的事务(transaction)日志.注意: 如果目录不存在, 需要预先创建
- clientPort: client连接端口号
- 运行
$ZK_HOME/bin/zkServer.sh start
, 启动zookeeper server - 执行
$ZK_HOME/bin/zkServer.sh status
, 查看状态 - 运行
$ZK_HOME/bin/zkServer.sh stop
, 停止zookeeper server - 执行
$ZK_HOME/bin/zkServer.sh status
, 查看状态
- 通过
${ZK_HOME}/bin/zkCli.sh –server zk_server:port
连接zk server(也可以直接运行${ZK_HOME}/bin/zkCli.sh
连接默认配置) - 命令运行
-
前面配置同Standalone的配置
-
zoo.cfg添加如下配置:
- syncLimit:follower同步leader的超时时长. 单位: tickTime个数
- server.[x]=[hostname]:[syncPort]:[electPort]: x表示server对应的编号.要求在dataDir 目录下创建一个myid文件, 里面放置对应的x编号. hostname为对应的域名, 需要在hosts文件中配置. 第一个端口(syncPort)为follower节点和leader节点通信的端口,第二个端口(electPort)为leader选举时用的端口
-
dataDir 目录下创建myid文件, 里面填入配置的[x]的数字
-
/etc/hosts中添加相应的域名配置:
-
启动不同节点的server, 可看到如下不同的信息:
-
client运行
zkCli.sh -server server21:2181,server25:2181,server26:2181