Apache Zookeeper 3.7.1 集群部署

后知后觉 暂无评论

ZooKeeper 是一个分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务。

ZooKeeper 的翻译其实也是「动物园管理员」,最初由雅虎研究院开发,是 Google Chubby 的开源版实现,后来托管到 Apache 基金会。

分布式应用程序可以基于 ZooKeeper 实现数据发布与订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Leader选举、分布式锁、分布式队列等功能。

ZooKeeper

在部署 HBase 数据库前需要先部署 ZooKeeper,需要注意的是,因为 ZooKeeper 本身也是选举机制,因此部署 ZooKeeper 的节点数量应该为单数。

规划

hostnameIP
hadoop110.10.10.11
hadoop210.10.10.12
hadoop310.10.10.13

下载

从官方下载二进制包

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

解压到安装目录

sudo tar xf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/

授权

sudo chown -R $USER:$USER /opt/apache-zookeeper-3.7.1-bin/

配置

先行配置

## 创建数据存储目录
mkdir /opt/apache-zookeeper-3.7.1-bin/data

配置文件

## 修改主配置
vim /opt/apache-zookeeper-3.7.1-bin/conf/zoo.cfg
## 写入以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/apache-zookeeper-3.7.1-bin/data
clientPort=2181
4lw.commands.whitelist=stat, ruok, conf, isro, mntr
server.1=hadoop1:2188:2888
server.2=hadoop2:2188:2888
server.3=hadoop3:2188:2888

分发至所有节点

sudo rsync -av /opt/apache-zookeeper-3.7.1-bin/ root@hadoop2:/opt/apache-zookeeper-3.7.1-bin/
sudo rsync -av /opt/apache-zookeeper-3.7.1-bin/ root@hadoop3:/opt/apache-zookeeper-3.7.1-bin/

配置集群 ID(在三个节点分别进行操作)

## 节点 1(hadoop1)
echo "1" > /opt/apache-zookeeper-3.7.1-bin/data/myid
## 节点 2(hadoop2)
echo "2" > /opt/apache-zookeeper-3.7.1-bin/data/myid
## 节点 3(hadoop3)
echo "3" > /opt/apache-zookeeper-3.7.1-bin/data/myid

编写集群管理脚本

sudo vim /usr/local/bin/zk
## 写入以下内容
#!/bin/bash
ZK_PATH="/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh"
case $1 in
"start"){
    for i in hadoop1 hadoop2 hadoop3
    do
        echo ---------- $i Zookeeper Cluster Push Starting ----------
        ssh $i "$ZK_PATH start"
    done
}
;;
"stop"){
    for i in hadoop1 hadoop2 hadoop3
    do
        echo ---------- $i Zookeeper Cluster Push Stoping ----------
        ssh $i "$ZK_PATH stop"
    done
}
;;
"status"){
    for i in hadoop1 hadoop2 hadoop3
    do
        echo ---------- $i Zookeeper Cluster Push Stating ----------
        ssh $i "$ZK_PATH status"
    done
}
;;
esac
## 授权
sudo chmod +x /usr/local/bin/zk

服务

启动集群

zk start

检查状态

zk status

可以看到其中两个状态为 follower 另一个为 leader 。

测试

可以使用命令行客户端测试 deleteall 命令慎用,仅供参考。

zkCli.sh
## 查询存储
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, zookeeper]
## 删除存储
[zk: localhost:2181(CONNECTED) 1] deleteall /hbase

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复 / 查看「历史评论
回答47+46=