0%

ZooKeeper搭建

介绍

ZooKeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。其目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
那么Zookeeper能做什么事情呢?举个简单的例子:假设我们有20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在生成索引。这20个搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以提供搜索服务了。使用Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器

环境配置

解压zookeeper

1
tar -zxvf zookeeper-3.4.10.tar.gz -C /app/servers/

配置zookeeper环境变量

1
2
3
4
5
6
[root@master software]# vi /etc/profile
#Zookeeper Env
export ZOOKEEPER_HOME=/app/servers/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 刷新让配置文件生效
[root@master software]# source /etc/profile

配置zoo.cfg文件

1
2
3
4
5
6
7
8
9
[root@master zookeeper-3.4.10]# cd conf
[root@master conf]# cp zoo_sample.cfg zoo.cfg
# 把 dataDir 那一行修改成自己的地址,在文件最后再加上三行server的配置
[root@master conf]# vi zoo.cfg
dataDir=/app/servers/zookeeper-3.4.10/data

server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

配置myid文件

1
2
3
4
5
6
7
[root@master conf]# cd ..
[root@master zookeeper-3.4.10]# mkdir data
[root@master zookeeper-3.4.10]# cd data
[root@master data]# touch myid
[root@master data]# echo 0 << myid
[root@master data]# cat myid
0

配置另外两个节点

1
2
3
4
5
6
7
8
9
10
11
12
[root@master data]# cd ../../
[root@master servers]# scp -r zookeeper-3.4.10/ slave1:/app/servers/
[root@master servers]# scp -r zookeeper-3.4.10/ slave2:/app/servers/

# 注意在两个子节点上把myid文件里面的 0 给分别替换成 12
# 配置文件也传
[root@master servers]# scp -r /etc/profile slave2:/etc/profile
profile 100% 2207 1.2MB/s 00:00
[root@master servers]# scp -r /etc/profile slave1:/etc/profile
profile 100% 2207 1.2MB/s 00:00
[root@master servers]#

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 在三个节点上分别执行命令,启动服务: zkServer.sh start
[root@slave1 zookeeper-3.4.10]# bin/zkServer.sh start

# 在三个节点上分别执行命令,查看状态: zkServer.sh status
# 正确结果应该是:三个节点中其中一个是leader,另外两个是follower
[root@master bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/servers/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[root@slave1 zookeeper-3.4.10]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/servers/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[root@slave2 zookeeper-3.4.10]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/servers/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

# 在三个节点上分别执行命令: jps
# 检查三个节点是否都有QuromPeerMain进

image-20240321162010172
image-20240321162021254
image-20240321162028628
到此zookeeper配置结束