zookeeper集群
相对简单,网上很多资料,自己边学习,编做个简单的总结,这里采用三台模拟2n+1 允许n台宕机
。
1.环境准备
1.1 vagrant
虚拟机环境 (内存等空间优于VMware,)
[请参考下面三篇文章]:
https://blog.csdn.net/tojohnonly/article/details/70151040
https://kiwenlau.com/2016/07/03/vagrant-vm-cluster/
http://kiwenlau.com/2016/06/19/160619-vagrant-virtual-machine/
vagrant相关目录及截图,原理同Dockerfile
vagrant_dir.png
复杂 vagrant 相关up脚本
Vagrant.configure("2") do |config|
(2..4).each do |i|
config.vm.define "node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos_cluster"
# 设置虚拟机的主机名
node.vm.hostname="node#{i}"
# 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.59.#{i}"
# 设置主机与虚拟机的共享目录
node.vm.synced_folder "~/Desktop/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "node#{i}"
# 设置虚拟机的内存大小
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 1
end
end
end
end
1.2 jdk安装 (同linux安装jdk,忽略)
2.Zookeeper搭建和简单验证
2.1 下载并解压(三个节点相同 通过scp命令)
http://mirrors.hust.edu.cn/apache/zookeeper/
2.2 复制 cp -p zoo_sample.cfg zoo.cfg
image.png
2.3 编辑 zoo.cfg,如下(三个节点相同,scp)
image.png
2.4 做响应的id标示,不同ip不通id的节点值到dataDir下myid
文件中,如图
image.png
2.5 进入 bin目录下,执行./zkServer.sh start (三个节点相同)
2.6 jps如有QuorumPeerMain或 ss -ln查看相关端口
(peer 联想docker nginx) 证明zk server启动成功。
2.7,在某一节点执行 ./zkCli.sh -server 192.168.59.2:2181,192.168.59.3:2181,192.168.59.4:2181 (一个ip:端口也行),如图,有 Welcome to zookeeper!
意味着成功
image.png
2.8 Znode常用命令,简单介绍,不同目录
原理相同 (zk 树形结构存储,一种类型)
1.ls / 查看根节点目录
image.png
2.ls2 / 查看根节点目录及相关时间
image.png
3.create dir value 创建某目录 及对应的值
(其他节点一致性体现
)
node2 和 node3(node4类似) 目前 根目录数据
image.png
image.png
node2 创建节点,查看俩个节点(
自动同步
)image.png
image.png
4.delete dir
删除某目录
(忽略,自动同步
)5.rmr dir
删除某目录及其子目录
(忽略,自动同步
)6.help
帮助
7.quit
退出
8.get dir
某目录节点获取值
(忽略,自动同步
)9.set dir value
某目录节点设置值
(忽略,自动同步
)
3.总结
1.vagrant刚开始用,有点麻烦,zookeeper集群搭建相对简单,核心及使用后续总结。
4.参考
链接:https://www.jianshu.com/p/4c13132ce49f
http://zookeeper.apache.org/doc/current/zookeeperAdmin.html
书籍:从Paxos到Zookeeper
网课: 推荐
官网集群模式demo,如下
image.png