【zookeeper】集群配置

zookeeper

数据结构

  • zookeeper数据模型结构,就和Linux的文件系统类型,看起来是一颗树,每个节点称为一个znode.
  • 每一个Znode默认的存储1MB的数据,每个Znode都有唯一标识,可以通过命令显示节点的信息
  • 每当节点有数据变化,节点的版本号都会累加
  • 删除或者修改过时的节点,版本号不匹配的话就会报错
  • 每个zk存储的数量不易过大,一般为几KB
  • 每一个znode可以设置acl,进行用户权限的访问,不同的节点数据

特点

  • 暂时的\临时(Ephemera):当客户端和服务端断开连接后,所创建的Znode(节点)会自动删除
  • 持久(Persistent):当客户端和服务端断开连接的时候,所创建的Znode不会自动删除

zookeeper和Redis一样,也是c/s结构(分成客户端和服务端)

监听器

在上面我们知道了zookeeper的数据结构了,但是zookeeper才能做那么多的事情

常见的监听场景有以下两项:

  • 简历Znode节点的数据变化
  • 监听子节点的增减变化/app1节点以及子节点是否增减

安装zookeeper集群

环境准备
IP地址 主机名 myid
192.168.116.136 master 1
192.168.116.137 node1 2
192.168.116.138 node2 3
  1. 更改主机名
shell 复制代码
# 在第一个虚拟机
hostnamectl set-hostname master
# 在第二个虚拟机
hostnamectl set-hostname node1
# 在第三个虚拟机
hostnamectl set-hostname node2
  1. 映射
shell 复制代码
vi /etc/hosts

192.168.116.136 master
192.168.116.137 node1
192.168.116.138 node2
  1. 修改网络配置(对每一个机器都进行修改,避免IP地址变化)
shell 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO="static"

IPADDR=192.168.116.136
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=8.8.8.8
DNS2=114.114.114.114

1.安装jdk

上传jdk 的安装包到系统中

  1. 解压jdk安装包

    tar -zxvf jdk-8u202-Linuxx64.tar.gz

  2. 更改解压后的文件名

shell 复制代码
mv jdk1.8.0_202 jdk
  1. 更改环境变量
shell 复制代码
vi /etc/profile

# 在文件的最后加入
export JAVA_HOME=/software/jdk
export PATH=$PATH:$JAVA_HOME/bin
  1. 重新加载环境变量
shell 复制代码
source /etc/proflie
  1. jdk是否配置成功
shell 复制代码
java -version

配置zookeeper

  1. 安转包上传到服务器
  2. 解压安装包
shell 复制代码
tar -xvf apache-zookeeper-3.5.6-bin.tar.gz 
  1. 创建文件夹,用于存储zk数据
shell 复制代码
cd /software/zookeeper/
mkdir zkdata
  1. 创建myid文件
shell 复制代码
cd zkdata
echo '1' > myid
  1. 修改配置文件
shell 复制代码
vim software/zookeeper/conf/zoo.cfg

dataDir=/software/zookeeper/zkdata/

server.1=192.168.116.136:2888:3888
server.2=192.168.116.137:2888:3888
server.3=192.168.116.138:2888:3888
  1. 配置环境变量
shell 复制代码
vim /etc/profile

export ZK_HOME=/software/zookeeper
export PATH=$PATH:$ZK_HOME/bin
  1. 分发文件
shell 复制代码
# 生成公钥(一直回车确认就可以)
ssh-keygen

# 将免密配置到各个节点
ssh-copy-id master
ssh-copy-id node1
ssh-copy-id node2

# 分发环境变量
scp /etc/profile node1:/etc/profile
scp /etc/profile node2:/etc/profile

# 向node2发送配置程序
scp -r /software root@node1:$PWD
# 向node3发送配置程序
scp -r /software root@node2:$PWD
  1. 开始在每个虚拟机都启动zookeeper
shell 复制代码
# 启动
zkServer.sh start
# 查看状态
zkServer.sh status

master:
ZooKeeper JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

node1:
ZooKeeper JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

node2:
zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

战斗结束,个人笔记,有错误,望指正,在此谢过

相关推荐
qq_124987075344 分钟前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Coder_Boy_3 小时前
基于Spring AI的分布式在线考试系统-事件处理架构实现方案
人工智能·spring boot·分布式·spring
袁煦丞 cpolar内网穿透实验室4 小时前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
人间打气筒(Ada)5 小时前
GlusterFS实现KVM高可用及热迁移
分布式·虚拟化·kvm·高可用·glusterfs·热迁移
xu_yule5 小时前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式
難釋懷9 小时前
分布式锁的原子性问题
分布式
ai_xiaogui10 小时前
【开源前瞻】从“咸鱼”到“超级个体”:谈谈 Panelai 分布式子服务器管理系统的设计架构与 UI 演进
服务器·分布式·架构·分布式架构·panelai·开源面板·ai工具开发
凯子坚持 c10 小时前
如何基于 CANN 原生能力,构建一个支持 QoS 感知的 LLM 推理调度器
分布式
飞升不如收破烂~10 小时前
Redis 分布式锁+接口幂等性使用+当下流行的限流方案「落地实操」+用户连续点击两下按钮的解决方案自用总结
数据库·redis·分布式