ZooKeeper是Apache的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。往期的博客内容我们已经介绍过其作为分布锁的应用案例实战内容,本节内容我们主要介绍一下使用kubesphere平台安装一个k8s环境下高可用的zookeeper集群服务。
正文- 关于zookeeper的docker镜像资源的说明
①zookeeper的docker官方镜像不能直接用于此次集群服务搭建,由于官方zookeeper镜像在k8s环境中节点myid不能动态配置,这里我们需要根据实际需求定制我们可以动态改变zookeeper中的myid节点的镜像。
②这里使用的镜像是:ydockerp/zookeeper
③关于定制版的zookeeper镜像制作可参考Docker Hub
- 创建zookeeper集群服务配置文件
- 点击配置中心-配置-创建,新建zookeeper集群配置文件。填写zookeeper集群配置文件基础信息
- 点击添加数据
- zookeeper集群配置文件zoo.cfg
dataDir=/data dataLogDir=/datalog tickTime=2000 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 standaloneEnabled=true admin.enableServer=true clientPort=2181 quorumListenOnAllIPs=true server.0=app-zk-v1-0.app-zk.app.svc.cluster.local:2888:3888;2181 server.1=app-zk-v1-1.app-zk.app.svc.cluster.local:2888:3888;2181 server.2=app-zk-v1-2.app-zk.app.svc.cluster.local:2888:3888;2181
PS:这里我们以三个节点的配置为例,超过3个节点的配置与此类似。集群的配置规则如下:
server.
=ip:2888:3888;2181,这里ip地址由于k8s集群中pod节点的上下线会动态改变ip地址,我们取其hostname主机名地址,其构成规则是<节点名称>-<版本号>-<动态索引>.<节点名称>.<命名空间>.svc.cluster.local,固定写法,这样就可以通过域名的方式访问集群各个pod节点;myid在zookeeper中pod启动时动态获取,我们镜像使用的策略是从访问域名中截取动态索引的值为节点的myid,myid范围从 0 ~ 255 之间,使用ydockerp/zookeeper这个镜像必须遵守这个规范,不然系统会报未知的错误。2888端口用于集群内部通讯,3888用于集群leader选举,2181端口用于客户端 *** 作。
- 填写zookeeper配置数据,点对号添加zookeeper集群配置
- 点击创建,完成zookeeper集群配置添加
- zookeeper集群服务搭建
- 点击应用负载-服务-创建-有状态服务
- 填写基本信息,点击下一步,这里要与集群配置信息填写一致,否则集群不能相互访问
- 选择容器副本数量为3,点击添加镜像
- 添加ydockerp/zookeeper镜像,并点选使用默认端口
- 勾选同步主机时区,点对号添加,点击下一步
- 点击添加存储卷模板添加zookeeper的pvc存储
- 填写完存储基本信息点对号添加
- 点击挂载配置文件和秘钥
- 填写挂载zookeeper集群配置的基本信息,这里要选择添加子路径
- 勾选添加特定的键和路径,添加zookeeper集群配置,点击对号添加
- 完成挂载存储,点击下一步
- 点击创建,zookeeper服务就创建完成了
- zookeeper集群服务验证
#查看集群主机名 for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- hostname; done
#查看集群myid for i in 0 1 2; do echo "myid app-zk-v1-$i";kubectl exec -n app app-zk-v1-$i -- cat /data/myid; done
#查看集群状态 for i in 0 1 2; do kubectl exec --namespace app app-zk-v1-$i zkServer.sh status; done
#查看集群主机全名 for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- hostname -f; done
#查看集群配置文件 for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- cat /conf/zoo.cfg; done
- zookeeper外网访问服务搭建
结语- 点击应用负载-服务-创建-指定工作负载
- 填写基本信息,点击下一步
- 指定zookeeper工作负载,点击确定
-填写客户端访问端口映射2181,点击下一步
- 选择外网访问,NodePort方式暴露端口,点击创建
- 点击创建,完成外网访问服务创建
- 使用idea插件工具zoolytic连接zookeeper测试
到这里关于k8环境下,使用kubesphere搭建高可用的zookeeper集群服务就结束,别忘了关注、收藏、加点赞哦,我们下期见。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)