在Linux搭建Zookeeper集群
前言
本文讲述在多台 Linux 服务器搭建 ZooKeeper 集群的具体步骤,共 4 个节点(1 主 2 从 1 观察者)。
ZooKeeper使用的端口:【2181】对 client 提供服务;【3888】选举 leader;【2888】集群内通讯。
准备工作
ZooKeeper需要1.7及以上版本的JDK,可以参考在 Linux安装JDK。
给系统配置hosts简化后续配置,实际IP根据自己情况修改。
echo "追加hosts配置" > /dev/null
echo '
192.168.252.131 node1
192.168.252.132 node2
192.168.252.133 node3
192.168.252.134 node4' >> /etc/hosts
echo "使 hosts 配置生效" > /dev/null
/etc/init.d/network restart
部署步骤
除了在 myid 文件中需要指定不同的 ID 外,其他配置在每个服务器都是一样的。
下载、解压
echo "下载" > /dev/null
wget -P ~/soft/zookeeper https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
echo "解压到/opt/soft目录下" > /dev/null
tar -xf ~/soft/zookeeper/apache-zookeeper-3.7.0-bin.tar.gz -C /opt/soft
echo "改个短名" > /dev/null
mv /opt/soft/apache-zookeeper-3.7.0-bin /opt/soft/zk3.7
配置环境变量
这样在任意位置可以使用ZK命令。
echo "追加ZOOKEEPER_HOME环境变量" > /dev/null
echo '
export ZOOKEEPER_HOME=/opt/soft/zk3.7
export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
echo "使环境变量生效" > /dev/null
source /etc/profile
配置 ZK
echo "创建数据存储目录" > /dev/null
mkdir /var/lib/zk3.7
echo "复制配置模板" > /dev/null
cp /opt/soft/zk3.7/conf/zoo_sample.cfg /opt/soft/zk3.7/conf/zoo.cfg
echo "编辑配置" > /dev/null
vim /opt/soft/zk3.7/conf/zoo.cfg
修改如下配置
# 指定数据目录
dataDir=/var/lib/zk3.7
# 追加集群节点配置 server.[id]=host:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888:observer
创建 myid 文件并指定每个 zookeeper 服务 ID,这个ID对应上面server.[id]
echo 1 > /var/lib/zk3.7/myid
命令说明
zkServer.sh 是 ZK 服务端命令行脚本
# 查看帮助信息
zkServer.sh help
# 前台启动
zkServer.sh start-foreground
# 后台启动
zkServer.sh start
# 查看服务状态
zkServer.sh status
zkCli.sh 是客户端命令行脚本
# 查看帮助信息
zkCli.sh help
# 连接当前服务器 ZK 服务
zkCli.sh
# 连接指定
zkCli.sh -server node1:2181
测试
# 连接当前服务器 ZK 服务
zkCli.sh
# 创建 test 目录,设置值为 123
create /test "123"
# 获取 test 目录对应值
get /test
# 修改数据
set /test "abc"
# 删除数据
delete /test