侧边栏壁纸
博主头像
七哥的技术博客

You got a dream, you gotta to protect it!

  • 累计撰写 60 篇文章
  • 累计创建 71 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

接入zookeeper进行主从切换

admin
2024-12-30 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

部署zookeeper服务端

下载最新版本的zookeeper执行文件 https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/

将下载的包解压到 /usr/local/apache-zookeeper-3.7.0-bin 目录下,将conf下的zoo_sample.cfg复制一份并重命名为zoo.cfg

修改配置

增加data目录,并修改zoo.cfg的数据文件目录配置项 dataDir=/usr/local/apache-zookeeper-3.7.0-bin/data

在zoo.cfg文件的最后增加配置项

server.1=10.32.5.41:2888:3888
server.2=10.32.5.81:2888:3888
server.3=10.32.5.88:2888:3888

在/usr/local/apache-zookeeper-3.7.0-bin/data目录增加文件名称为 myid 的文件,文件内容和前面地址配置项id一致

如当前机器ip地址为10.32.5.88,那么文件 myid 的内容应该为3

启动服务

每个节点进入bin目录,使用命令启动服务 ./zkServer.sh start,全部节点启动完毕后,至此zookeeper的集群部署完毕

集群查看

使用status参数可以查看当前节点的从属状态

创建目录

使用zkCli.sh连接集群,连接后使用命令 create /datacenter 进行创建数据目录节点,主要为了后面客户端进行选主使用

服务端集成zookeeper的c库

源代码下载,编译c版本lib库 https://github.com/apache/zookeeper

参照 README_packaging.md 文件编译指引

在源码根目录执行

mvn clean -Pfull-build
mvn install -Pfull-build -DskipTests

主从切换原理

客户端consumer使用zkclient库来进行主从切换(zkclient参考 https://github.com/owenliang/zkclient)

主从切换的主要原理是利用 zookeeper文件系统的一致性以及客户端通知机制

客户端启动的时候创建一个 sequence + ephemeral目录节点(基于共同根目录 /datacenter)

目录节点的数据内容为一个唯一的nodeid值

然后获取到当前根目录/datacenter下的所有子目录,存储到本地排序后,将排序后的第一个节点确认为master节点

sequence 保证每次创建的目录都是严格递增的

ephemeral 保证创建目录的客户端在断开后session-timeout的时间后会被自动删除

客户端启动的时候进行监听,这样zookeeper在每次有节点断开的时候,都会通知到所有的客户端,通过通知机制进行检查以及切换主从

0

评论区