zookeeper是什么
ZooKeeper是一个分布式的, 开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是 Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
基本配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
chkconfig firewalld off
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
单体安装zookeeper
一、下载安装包,并解压
#下载zookeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
#解压
tar -xzvf apache-zookeeper-3.9.2-bin.tar.gz
二、zookeeper配置启动
1、zookeeper配置
#复制配置文件 zoo_sample.cfg
cp /install/zookeeper/apache-zookeeper-3.9.2-bin/conf/zoo_sample.cfg zoo.cfg
#修改zoocfg配置zookeeper的端口号和数据存放地址
#############zoo.cfg#################
tickTime=2000 #每个刻度的毫秒数
initLimit=10 #初始的刻度数
syncLimit=5 #传递的刻度数
dataDir=/data/zookeeper #数据存放地址
clientPort=2181 #端口号
#######################################
2、zookeeper 启动、关闭、状态查看
启动zookeeper
/install/zookeeper/apache-zookeeper-3.9.2-bin/bin/zkServer.sh start
查看zookeeper状态
/install/zookeeper/apache-zookeeper-3.9.2-bin/bin/zkServer.sh status
关闭zookeeper
/install/zookeeper/apache-zookeeper-3.9.2-bin/bin/zkServer.sh stop
以上为单体zookeeper安装及启动过程,以下为zookeeper集群的搭建方式:
与单体的搭建方式类似,只需要重复类似单体的部署模式,集群最少使用3台,以下大概介绍相应的部署方式:
集群安装zookeeper
一、创建集群目录
#创建zookeeper集群文件存放目录
mkdir -p /install/zookeeper/zookeeper_colony
#下载zookeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
#解压
tar -xzvf apache-zookeeper-3.9.2-bin.tar.gz
#修改文件名,并复制出来另外两个zookeeper插件
mv apache-zookeeper-3.9.2-bin zookeeper-3.9.2-1
cp -z zookeeper-3.9.2-1 zookeeper-3.9.2-2
cp -z zookeeper-3.9.2-1 zookeeper-3.9.2-3
#创建zookeeper集群数据存放目录
mkdir -p /data/zookeeper_colony/{zookeeper_1,zookeeper_2,zookeeper_3}
二、修改每个zookeeper的配置文件
修改端口和数据存放地址
在每个插件的数据存放目录下面添加myid并且写入值 myid的值不能和其他zk插件重复
echo 1 >> /data/zookeeper_colony/zookeeper_1/myid
echo 2 >> /data/zookeeper_colony/zookeeper_2/myid
echo 3 >> /data/zookeeper_colony/zookeeper_3/myid
在每个插件的zoo.cfg配置尾部添加数据
#2881为组成zookeeper服务器之间的通信端口,3881为用来选举leader的端口
#server后面的数字与后面的myid相对应
server.1=192.168.90.243:2881:3881
server.2=192.168.90.243:2882:3882
server.3=192.168.90.243:2883:3883
三、启动每个zookeeper插件
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-1/bin/zkServer.sh start
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-2/bin/zkServer.sh start
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-3/bin/zkServer.sh start
四、测试链接情况
zkCli.sh脚本可以连接集群测试是否启动成功
#能进入说明配置成功
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-1/bin/zkCli.sh -server 192.168.90.243:2181
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-1/bin/zkCli.sh -server 192.168.90.243:2182
/install/zookeeper/zookeeper_colony/zookeeper-3.9.2-1/bin/zkCli.sh -server 192.168.90.243:2183