一、ZooKeeper简介
-
ZooKeeper:动物管理员
Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调。
-
什么是ZooKeeper?
ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这 些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避 免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们 在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序 时导致管理复杂性。
-
功能
(1)存储数据
(2)监听
- 工作机制
基于观察者模式设计的分布式服务管理框架
- zookeeper存储结构
目录树结构
- zookeeper应用场景
(1)集群统一配置管理
(2)集群统一命名服务
(3)集群统一管理
(4)服务器的动态上下线感知
(5)负载均衡
- 安装zookeeper集群
(1)下载安装包
(2)上传安装包到Linux alt+p
(3)解压 tar -zxvf .tar
(4)修改配置文件 vi zoo.cfg dataDir=…/zkData
(5)启动zk
bin/zkServer.sh start
(6)查看状态 bin/zkServer.sh status
(7)启动客户端 bin/zkCli.sh
-
伪分布式:略
-
完全分布式安装
(1)下载安装包
(2)上传安装包到Linux alt+p
(3)解压 tar -zxvf .tar
(4)修改配置文件
vi zoo.cfg
dataDir=…/zkData
###############cluster###############
server.1=hd09-01:2888:3888
server.2=hd09-02:2888:3888
server.3=hd09-03:2888:3888
(5)添加文件myid
$cd zookeeper-3.4.10/zkData $touch myid
(6)添加内容在myid为1
$ vi myid 1
(7)发送zookeeper文件到其它机器
$ scp -r zookeeper-3.4.10 hd09-02:$PWD
(8)修改myid依次为2 3
(9)修改环境变量
vi /etc/profile
export ZOOKEEPER_HOME=/root/hd/zookeeper3.4.10
export PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin
(10)生效环境变量
source /etc/profile
(11)启动zookeeper
zkServer.sh start
(12)查看状态 zkServer.sh status
(13)关闭zookeeper zkServer.sh stop
zookeeper最主要的应用场景是集群,只要集群上的大多数zookeeper服务启动了,那么总的zookeeper服务便是可用的。另外,最好使用奇数台服务器。比如拥有5台zookeeper服务器,那么在最多2台服务器出现故障后,整个服务还可以正常使用。
关于zoo.cfg配置文件,参考如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/...../data
dataLogDir=/...../dataLog
clientPort=2181
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
maxClientCnxns=60
在这个配置文件中,新出现的语句的含义:
initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。
当超过设置倍数的tickTime时间,则连接失败。
syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,
默认follower服务器与leader服务器之间断开链接。
maxClientCnxns : 限制连接到zookeeper服务器客户端的数量
server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台
服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务
器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指
定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识
中是唯一的,且大小在1~255之间。这一样配置中,ip1代表第一台服务器的IP地址。第一个端口号
(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,
在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。