Zookeeper 集群安装配置

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

image

群起 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

image

posted @   白日醒梦  阅读(169)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩