目录
一.zookeeper简介
二.zookeeper部署
三.zookeeper启动
四.zookeeper关闭
Leader是ZooKeeper集群的核心,每个ZooKeeper集群中只能有一个Leader,它主要用于处理客户端发送的事务请求,并将事务请求广播到所有Follower,保证处理事务请求的顺序一致性。
Follower可以看作是Leader的跟随着,每个ZooKeeper集群中可以包含多个Follower,作用主要有以下4点: 处理客户端发送的非事务请求。 将客户端发送的事务请求转发给Leader。 参与事务请求投票。 参与Leader选举投票
Observer可以看作是Leader的观察者,每个ZooKeeper集群中可以包含多个Observer,主要负责同步Leader的数据,处理客户端发送的非事务请求,并将事务请求转发给Leader。通常用于在不影响集群事务处理能力的前提下,提升集群的非事务处理能力。
伪分布式模式是指在单台服务器中部署 ZooKeeper 集群,ZooKeeper 集群中的多个 ZooKeeper 服务运行在单台服务器的不同进程中。接下来我们搭建基于centos03为服务器搭建zookeeper集群。(centos03是我的一台服务器主机名,你也可以任意选择一台主机)
结点 | myid | 备注 |
zookeeper-3.7.1-001 | 1 | follower |
zookeeper-3.7.1-002 | 2 | Leader |
zookeeper-3.7.1-003 | 3 | observer |
1.下载安装包
链接:https://pan.baidu.com/s/1H1b-Xsi0vug529UaMnjDVQ?pwd=9629
提取码:9629
上面是zookeeper3.7.1版本的,需要的自己提。
通过xshell或者其他方式将安装包传到 /opt/software/zookeeper目录下,该目录可以自定义,用于存放压缩包。
2.创建zookeeper安装包目录
通过命令创建zookeeper目录,用户存放zookeeper
mkdir -p /opt/modules/zookeeper
该目录是用于存放zookeeper安装包的,可以自定义。
将zookeeper解压到该目录下
tar -zxvf /opt/software/apache-zookeeper-3.7.1-bin.tar.gz -C /opt/modules/zookeeper
将文件重命名
mv /opt/modules/zookeeper/apache-zookeeper-3.7.0-bin /opt/modules/zookeeper/zookeeper-3.7.0-001
通过复制安装其他两个节点,并分别重命名为002 003
cp -r /opt/modules/zookeeper/zookeeper-3.7.0-001 /opt/modules/zookeeper/zookeeper-3.7.0-002
cp -r /opt/modules/zookeeper/zookeeper-3.7.0-001 /opt/modules/zookeeper/zookeeper-3.7.0-003
3.修改配置文件
ZooKeeper安装目录的conf目录下存放了ZooKeeper配置文件的模板文件zoo_sample.cfg,该文件包含了ZooKeeper的默认配置信息,如果需要修改ZooKeeper的默认配置,需要将模板文件zoo_sample.cfg重命名为zoo.cfg,并对zoo.cfg文件的内容进行修改。
cp zoo_sample.cfg zoo.cfg //进入到conf目录下
由于3个ZooKeeper服务运行在同一台虚拟机中,为了避免不同ZooKeeper服务使用的数据持久化目录和端口号产生冲突,这里分别修改3个ZooKeeper安装目录的配置文件。
在zookeeper001 结点下 在/opt/modules/zookeeper/zookeeper-3.7.1-001/conf目录,执行“vi zoo.cfg”命令编辑文件zoo.cfg修改其内容。
cd /opt/modules/zookeeper/zookeeper-3.7.1-001/conf
vi zoo.cfg
添加以下内容:
# tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
tickTime=2000
# follower与leader的初始连接心跳数
initLimit=10
# follower与leader请求和应答的最大心跳数
syncLimit=5
# 快照数据保存目录
dataDir=/opt/modules/zookeeper/data/zkdata001
# 客户端连接端口
clientPort=2181
# 服务器节点配置,格式为:
# server.${myid}=${host}:${leader和follower通信端口}:${选举端口}(observer节点最后加上:observer )
server.1=centos03:2888:3888
server.2=centos03:2889:3889
server.3=centos03:2890:3890
其中centos03为我的主机名,在配置时,要修改为自己的主机名
在zookeeper002 结点下 在/opt/modules/zookeeper/zookeeper-3.7.1-002/conf目录,执行“vi zoo.cfg”命令编辑文件zoo.cfg修改其内容。
cd /opt/modules/zookeeper/zookeeper-3.7.1-002/conf
vi zoo.cfg
添加以下内容:
# tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
tickTime=2000
# follower与leader的初始连接心跳数
initLimit=10
# follower与leader请求和应答的最大心跳数
syncLimit=5
# 快照数据保存目录
dataDir=/opt/modules/zookeeper/data/zkdata002
# 客户端连接端口
clientPort=2182
# 服务器节点配置,格式为:
# server.${myid}=${host}:${leader和follower通信端口}:${选举端口}(observer节点最后加上:observer )
server.1=centos03:2888:3888
server.2=centos03:2889:3889
server.3=centos03:2890:3890
在zookeeper003 结点下 在/opt/modules/zookeeper/zookeeper-3.7.1-003/conf目录,执行“vi zoo.cfg”命令编辑文件zoo.cfg修改其内容。
cd /opt/modules/zookeeper/zookeeper-3.7.1-003/conf
vi zoo.cfg
添加以下内容:
# tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
tickTime=2000
# follower与leader的初始连接心跳数
initLimit=10
# follower与leader请求和应答的最大心跳数
syncLimit=5
# 快照数据保存目录
dataDir=/opt/modules/zookeeper/data/zkdata003
# 客户端连接端口
clientPort=2183
# 服务器节点配置,格式为:
# server.${myid}=${host}:${leader和follower通信端口}:${选举端口}(observer节点最后加上:observer )
server.1=centos03:2888:3888
server.2=centos03:2889:3889
server.3=centos03:2890:3890:observer
根据3个文件zoo.cfg中参数dataDir指定的值,在虚拟机Hadoop3创建对应的数据持久化目录。
zookeeper001
mkdir -p /opt/modules/zookeeper/data/zkdata001
在数据持久化目录/opt/modules/zookeeper/data/zkdata001创建myid文件并写入值1
echo 1 > /opt/modules/zookeeper/data/zkdata001/myid
zookeeper002
mkdir -p /opt/modules/zookeeper/data/zkdata002
在数据持久化目录/opt/modules/zookeeper/data/zkdata002创建myid文件并写入值2
echo 2 > /opt/modules/zookeeper/data/zkdata002/myid
zookeeper003
mkdir -p /opt/modules/zookeeper/data/zkdata003
在数据持久化目录/opt/modules/zookeeper/data/zkdata003创建myid文件并写入值3
echo 3 > /opt/modules/zookeeper/data/zkdata003/myid
myid可以称之为服务器ID,它是用户在部署ZooKeeper集群时,为每台服务器运行的ZooKeeper服务指定的编号,编号的值越大,则ZooKeeper服务被选举为Leader的权重越高。需要注意的是,用户为每个ZooKeeper服务指定的编号不能重复。
在选举主节点时还会考虑到zxid,详细的选举机制请自行查阅资料。
分别在三个节点的安装目录下执行
zookeeper001
cd /opt/modules/zookeeper/zookeeper-3.7.1-001
bin/zkServer.sh start
如图,则说明启动成功
zookeeper002
cd /opt/modules/zookeeper/zookeeper-3.7.1-002
bin/zkServer.sh start
zookeeper003
cd /opt/modules/zookeeper/zookeeper-3.7.1-003
bin/zkServer.sh start
查看集群状态
分别在三个结点安装目录下执行
bin/zkServer status
到此,部署完成,可以进行集群下的操作了。
分别在三个节点安装目录下执行
bin/zkServer.sh stop
完结~~~~