一文简单了解并部署 Zookeeper 集群
#头条创作挑战赛#一文简单了解并部署 Zookeeper 集群
Zookeeper 概述
简单来说,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。
Zookeeper功能包括
- 配置维护
- 域名服务
- 分布式同步
- 组服务等。
Zookeeper 架构图
从设计模式角度来说,Zookeeper是一个基于观察者模式设计的分布式服务管理框架。
zookeeper中的数据是存储在内存当中的,因此它的效率十分高效。
它的内存数据结果如下图:
zookeeper提供的主要功能包括:
- 配置管理
- 分布式锁
- 集群管理
ZooKeeper的好处
- 简单的分布式协调过程
- 同步
- 有序的消息
- 序列化
- 可靠性
- 原子性
部署 Zookeeper 集群
Zookeeper下载地址
https://zookeeper.apache.org/releases.html#download
Zookeeper安装步骤
前置条件:服务器必须安装jdk,可以采用yum方式进行安装:
[root@localhost ~]# yum install -y java-1.8.2-jdk.x86_64
1、进入 /usr/local/ 目录
[root@localhost ~]# cd /usr/local/
2、下载好的 “zookeeper-3.4.5.tar.gz” 文件传入服务器目录,并解压:
[root@localhost localhost]# tar zxvf zookeeper-3.5.5.tar.gz
3、修改解压后的文件名为 “zookeeper”:
[root@localhost localhost]# mv zookeeper-3.5.5 zookeeper
4、修改zookeeper环境变量:
[root@localhost local]# vi /etc/profile
#在上方添加以下内容
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
5、使用source重新编译 “/etc/profile”,并生效
[root@localhost zookeeper]# source /etc/profile
6、切换到conf 目录下
[root@localhost zookeeper]# cd conf/
7、将 “zoo_sample.cfg” 拷贝生成 “zoo.cfg” 文件作为 zookeeper 的配置文件:
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
8、修改 “zoo.cfg” 文件:
配置文件中主要配置数据存放路径和日志路径。
注意:zookeeper 默认的数据存放路径:"dataDir=/tmp/zookeeper",这个文件夹会过期,因为它是一个临时文件。
# 将配置文件中的dataDir替换为此路径
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
安装过程中,也可以指定数据存放的路径,存放在 自定义的路径下,也可以根据需要建立单独路径进行存放。
# ip三台机器
server.1=172.158.1.111:2888:3888
server.2=172.158.1.112:2888:3888
server.3=172.158.1.113:2888:3888
9、切换到”zookeeper“目录下,为创建配置文件赋予权限:
[root@localhost conf]# cd ..
[root@localhost zookeeper]# mkdir -m 755 data
[root@localhost zookeeper]# mkdir -m 755 log
10、切换到 “data/” 路径下
[root@localhost zookeeper]# cd data/
创建 myid 文件,并给相应值 1:
[root@localhost data]# vi myid
[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.12:/usr/local/
[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.13:/usr/local/
11、修改 myid 值为 2 和 3 后,集群部署好了。
12、到 01 机器的 zookeeper 目录下,使用bin/zkServer.sh start启动 zookeeper:
[root@localhost zookeeper]# bin/zkServer.sh start
[root@localhost zookeeper]# bin/zkServer.sh status
Error contacting service. It is probably not running.
#此时zookeper集群没有启动,因为目前只有一个节点开启
13、在第二台启动以后,集群节点超过一半,第二台机器就会成为 leader
[root@localhost zookeeper]# bin/zkServer.sh start
[root@localhost zookeeper]# bin/zkServer.sh status
14、那第一台就变成 follower
[root@localhost zookeeper]# bin/zkServer.sh status
15、第三台zookeeper启动后,第二台机器已经是 leader 了,除非机器宕机会触发重新分配
16、关于 zookeeper 的操作可以通过启动启动客户端:
[root@localhost zookeeper]# bin/zkCli.sh
更多 zookeeper 操作可以参照 zookeeper 官方文档。
Zookeeper的设计目标
1、简单的数据模型
2、可构建集群
3、顺序访问
4、高性能
Zookeeper是高性能的,在读多于写的应用程序中尤其的高性能,因为写会导致所有服务器同步状态。