Zookeeper 是什么?
Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题,例如怎样避免同时操作同一数据造
成脏读的问题。
- ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。
- ZooKeeper提供给客户端监控存储在zk内部数据的功能,从而可以达到基于数据的集群管理。诸如:统一命名服务(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息队列(sub/pub)、分布式锁、分布式协调等功能。
Zookeeper 环境搭建
Zookeeper的搭建方式
Zookeeper 安装方式有三种,单机模式和集群模式以及伪集群模式。
- 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;
- 伪集群模式:就是在一台服务器上运行多个 Zookeeper 实例;
- 集群模式:Zookeeper 运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”
Zookeeper集群搭建
下载安装
Master 节点中
下载并解压
首先我们下载稳定版本的zookeeper http://zookeeper.apache.org/releases.html
wget http://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz -P /opt/software
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/servers
cd /opt/servers
mv apache-zookeeper-3.7.0-bin zookeeper-3.7.0
修改配置并创建 data 和 log 目录
# 创建 data 和 log 目录
mkdir -p /opt/servers/zookeeper-3.7.0/data/log
# 进入配置目录
cd /opt/servers/zookeeper-3.7.0/conf
# 复制一份配置模版并重命名
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改
dataDir=/opt/servers/zookeeper-3.7.0/data
# 新增
dataLogDir=/opt/servers/zookeeper-3.7.0/data/log
# 打开注释
#ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时
autopurge.purgeInterval=1
# 新增集群配置
# server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
添加myid配置
1.在zookeeper的data目录下创建一个myid文件,内容为1,这个文件就是记录每个服务器的ID
cd /opt/servers/zookeeper-3.7.0/data
echo 1 > myid
将Zookeeper分发到其他节点
cd /opt/servers
rsync-script zookeeper-3.7.0/
修改slave1和slave2的myid
# slave1 节点
echo 2 > /opt/servers/zookeeper-3.7.0/data/myid
# slave2 节点
echo 3 > /opt/servers/zookeeper-3.7.0/data/myid
启动 Zk 实例
三个节点都要执行
/opt/servers/zookeeper-3.7.0/bin/zkServer.sh start
查看Zk启动情况
/opt/servers/zookeeper-3.7.0/bin/zkServer.sh status
群起 Zk 脚本
因为每次都要在三台机子上执行启动命令,所以自己我们就自己写一个启动脚本
cd ~
mkdir shells
cd shells
vim zk.sh
**将以下文件写如到 zk.sh 中
#!/bin/sh
echo "$1 zookeeper server..."
if(($#==0));then
echo "no param";
exit;
fi
# 此处写上你的三台
hosts="master slave1 slave2"
for host in $hosts
do
echo "$host server ${1}ing..."
ssh $host "source /etc/profile;/opt/servers/zookeeper-3.7.0/bin/zkServer.sh $1"
done
赋予执行权限
chmod 777 zk.sh
启动 / 停止 zookeeper 集群
# 启动
~/shells/zk.sh start
# 停止
~/shells/zk.sh stop
# 查看服务状态
~/shells/zk.sh status
启动成功后所有机器上都有这个服务
jps