1. 简介
ZooKeeper(官网)是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
2. 特征/保障
ZooKeeper非常快而且非常简单。然而,由于它的目标是成为构建更复杂的服务(例如同步)的基础,因此它提供了一组保障:
- 顺序一致性:来自客户端的更新将按照发送的顺序应用。
- 原子性:更新要么成功,要么失败,没有部分结果。
- 统一视图:无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。即,即使客户端故障转移到具有相同会话的不同服务器,客户端也永远不会看到系统的旧视图。
- 可靠性:一单应用更新,它将从那时起持续存在,直到客户端覆盖更新。
- 及时性:保证系统的客户视图在一定的时间范围内是最新的。
3. 安装/验证/使用/集群配置
ZooKeeper在Linux虚拟机中安装的详细步骤如下:
安装笔记:
准备 node01~node04 4台Linux虚拟机
1, 安装jdk,并设置javahome(最好不要yum安装jdk!它不是Hotspot的JVM,而是OpenJDK,后期几乎不维护了!)
*, node01:
2, 下载zookeeper # 官网:zookeeper.apache.org
3, tar xf zookeeper.*.tar.gz # 解压
4, mkdir /opt/mxf # 创建用于存放zk解压后的文件的目录
5, mv zookeeper /opt/mxf
6, vi /etc/profile # 配置环境变量
export ZOOKEEPER_HOME=/opt/mxf/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 使配置生效
source /etc/profile
或者 . /etc/profile 都可以
之后,可以复制到其他虚拟机下:
scp /etc/profile node02:/etc
7, cd zookeeper/conf
8, cp zoo.sam*.cfg zoo.cfg # 复制后的 zoo.cfg 是zk启动默认加载的配置文件
9, vi zoo.cfg
dataDir=/var/mxf/zk # 放日志、快照、myid等数据文件
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
# 这里如果这样配置的node01·node04必须要有配置映射,或者node01修改了/etc/hosts
# 否则需要改成节点主机的IP,下文有说明
注:zk集群和redis sentinel(有发布订阅机制)不同:
1、它必须要把集群都有谁写进来,靠人来规划集群
2、而且它们的 【行数/2 + 1】 就是过半数
3、node01~node04 表示4个节点
4、端口号 3888 表示首次启动没有leader时,各节点通信投票选出一个leader
5、端口号 2888 表示,上步选出