论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Mysql
›
一文简单了解并部署Zookeeper集群
一文简单了解并部署Zookeeper集群
宁睿
论坛元老
|
2023-1-5 19:34:24
|
显示全部楼层
|
阅读模式
楼主
主题
1082
|
帖子
1082
|
积分
3256
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
作者:蟹黄瓜子
文章来源:GreatSQL社区投稿
1.Zookeeper概述
Zookeeper对于很多人开始可能都有所耳闻,他的使用场景也很多,可以以节点的形式存储持久化数据,也可以使用这一特性来作为微服务的服务注册中心,简单来说,Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。
Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架。是一个文件系统,负责存储和管理大家都关心的数据,然后接受观察者的注册;也是一种通知机制,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
2.Zookeeper的应用场景和一些注意事项
ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识。
Zookeeper的应用场景有许多,比如统一的配置管理,在许多分布式环境中,通常一个服务集群的配置文件信息是一致的,如果需要修改配置信息内容,不可能逐个对每个服务做修改,而是希望修改一次配置信息就可以同步给所有服务节点,Zookeeper就可以实现这个业务,十分简单,可以将服务的配置信息写入ZooKeeper上的一个Znode中,让每个集群节点的服务器都去监听这个Znode,一旦数据被修改,ZooKeeper将通知各个服务器,达到同步的效果。还可以做统一的集群管理、服务器的动态上下线、以及软负载均衡的效果。
在实践Zookeeper前还需要注意的内容:
Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
集群正常运行的前提条件是集群节点大于半数,因此集群节点数最好采用奇数个。
全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
数据更新原子性,一次数据更新要么成功,要么失败。
实时性,在一定时间范围内,Client能读到最新数据。
3.简单部署Zookeeper集群
官网地址:
https://zookeeper.apache.org/,本文采用
VMware
创建3台虚拟机构建集群,
XShell
工具连接虚拟机进行操作:
首先为机子安装jdk,采用yum源安装,注意设置yum,静等安装成功出现“Complete”即可:
[root@localhost ~]# yum install -y java-1.8.0-openjdk.x86_64
复制代码
进入/usr/local/目录,将提前准备好的“zookeeper-3.4.5.tar.gz”文件传入目录,并解压:
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar zxvf zookeeper-3.4.5.tar.gz
复制代码
修改文件名为“zookeeper”:
[root@localhost local]# mv zookeeper-3.4.5 zookeeper
复制代码
修改环境变量:
[root@localhost local]# vi /etc/profile
# 进入insert模式后在上方添加一下内容后保存退出
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
复制代码
重新编译“/etc/profile”:
[root@localhost zookeeper]# source /etc/profile
复制代码
进入conf目录下,将“zoo_sample.cfg”拷贝生成“zoo.cfg”文件作为zookeeper的配置文件:
[root@localhost zookeeper]# cd conf/
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
复制代码
修改“zoo.cfg”文件:
配置文件中主要要配置数据存放路径和日志路径,zookeeper默认的数据存放路径为"dataDir=/tmp/zookeeper",为临时数据,会过期,本文将重新指定相关位置,存放在“自己”的路径下,当然也可以根据需要建立单独路径进行存放。
# 将配置文件中的dataDir替换为此路径
dataDir=/usr/local/zookeeper/data
# 在配置文件中添加以下配置,ip地址根据规划
# 其中server.1代表集群的第几胎集群,后续会配置myid文件,myid文件内容和对应的数字保存一致,例如1.131这台机器myid就是1
# ip地址为集群的三台机器,也可以配置host使用主机名,两个端口号心跳端口和数据端口
dataLogDir=/usr/local/zookeeper/log
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888
复制代码
简单解释下集群配置:
server.A=B:C:D
A 是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
B 是这个服务器的地址;
C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
回到”zookeeper“目录下,创建配置文件中提到的两个路径并赋予权限:
[root@localhost conf]# cd ..
[root@localhost zookeeper]# mkdir -m 755 data
[root@localhost zookeeper]# mkdir -m 755 log
复制代码
来到“data/”路径下,创建myid文件,并给相应值1:
[root@localhost zookeeper]# cd data/
[root@localhost data]# vi myid
复制代码
此刻对于集群节点的第一台机器就配置完成了,另外两台机器需要在准备好环境并设置好环境变量的前提下进行
通过第一台机器将配置好的zookeeper及集群配置下发到另外两台机器上,注意修改对应机器的myid:
[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.12:/usr/local/
[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.13:/usr/local/
复制代码
修改myid值为2和3后,集群部署完毕。
进入到01机器的zookeeper目录下,启动zookeeper:
[root@localhost zookeeper]# bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
复制代码
此时集群没办法起来,因为目前只有一个节点开启
当第二台启动以后,集群节点超过半数,第二台机器就会选举成为leader
[root@localhost zookeeper]# bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[root@localhost zookeeper]#
复制代码
第一台就变成follower了
[root@localhost zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower
复制代码
开启第三台后,第二台机器已经是leader了,除非机器宕机会触发重新选举
关于zookeeper的操作可以通过启动启动客户端:
[root@localhost zookeeper]# bin/zkCli.sh
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
复制代码
至此测试完成,zookeeper集群部署完毕,更多zookeeper操作可以参照zookeeper官方文档。
Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
宁睿
论坛元老
这个人很懒什么都没写!
楼主热帖
java前置学习
【RocketMQ】消息的存储
iOS Widget
简单的用Python对手机号进行加密 ...
【PostgreSQL】PostgreSQL重建与主库不 ...
k8s v-1.20版本部署详细过程[实测可用 ...
基于单片机的压力测控仿真设计(#0024) ...
❤️肝下25万字的《决战Linux到精通》 ...
Unity 将是驱动 C# 增长的引擎吗 ? ...
【iOS面试总结】疫情隔离中,线上面试 ...
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表