zookeeper集群架构示意图:
由于zookeeper的选举策略,zookeeper集群中机器数量为奇数台,且至少为3台
1、下载zookeeper,我这里用的是3.4.6版本
2、在安装zookeeper之前,必须安装jdk并配置好环境变量
3、解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz -C /root/apps/
4、进入conf目录 ,把 zoo_sample.cfg 改名为 zoo.cfg
cd /root/apps/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
5、打开zoo.cfg , 修改 data 属性:dataDir=/root/zkdata 此处按照你data具体目录配置
vi zoo.cfg
6、在zoo.cfg末尾添加
server.1=hdp-01:2888:3888
server.2=hdp-02:2888:3888
server.3=hdp-03:2888:3888
plus:hdp-01、hdp-02、hdp-03为主机名,因为我在电脑中配置了映射,读者可书写ip
2888为zookeeper通信端口,3888为zookeeper选举端口,保存:wq 退出
7、进入 /root/ 目录,创建 zkdata 文件夹
cd /root
mkdir zkdata
8、分别在hdp-01、hdp-02、hdp-03的zkdata目录中创建myid文件
hdp-01中 data/myid 内容为 1
hdp-02中 data/myid 内容为 2
hdp-03中 data/myid 内容为 3
原因是与conf/zoo.cfg中
server.1 = ...
server.2 = ...
server.3 = ...
数字进行对应
9、拷贝zookeeper-3.4.6文件夹到其他两台机器
scp -r /root/apps/zookeeper-3.4.6/ hdp-02:/root/apps/
scp -r /root/apps/zookeeper-3.4.6/ hdp-03:/root/apps/
10、在/root下创建zk脚本方便直接启动集群的所有机器
使用shell脚本启动3个zk脚本命令,创建zkmanager.sh
#!/bin/bash
for host in hdp-01 hdp-02 hdp-03
do
echo "${host}: ${1}......"
ssh $host "source /etc/profile;/root/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done
sleep 2
for host in hdp-01 hdp-02 hdp-03
do
ssh $host "source /etc/profile;/root/apps/zookeeper-3.4.6/bin/zkServer.sh status"
done
11、命令
启动:
./zkmanager.sh start
停止
./zkmanager.sh stop
状态
./zkmanager.sh status