zookeeper
zookeeper 总览
zookeeper 快速开始
zookeeper 管理员手册
dockerfile
FROM 1209233066/jre:1.8.0_281 LABEL Name=zookeeper Version=3.4.13 ADD https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz /opt RUN tar xf /opt/zookeeper-3.4.14.tar.gz -C /opt &&\ ln -svf /opt/zookeeper-3.4.14 /opt/zookeeper CMD ["sh", "-c", "/opt/zookeeper-3.4.14/bin/zkServer.sh print-cmd"]
docker build . -t 1209233066/zookeeper:3.4.14
configmap
apiVersion: v1 kind: ConfigMap metadata: name: zookeeper-cm data: zoo.cfg: | tickTime=2000 dataDir=/var/lib/zookeeper/ clientPort=2181 initLimit=5 syncLimit=2 # 3888 内部选举端口 ; # 2888 leader向follwer同步数据使用; # 2181提供给客户端连接 server.1=zookeeper-0.zookeeper:2888:3888 server.2=zookeeper-1.zookeeper:2888:3888 server.3=zookeeper-2.zookeeper:2888:3888 log4j.properties: | # Define some default values that can be overridden by system properties zookeeper.root.logger=INFO, CONSOLE zookeeper.console.threshold=INFO zookeeper.log.dir=. zookeeper.log.file=zookeeper.log zookeeper.log.threshold=DEBUG zookeeper.tracelog.dir=. zookeeper.tracelog.file=zookeeper_trace.log # # ZooKeeper Logging Configuration # # Format is "<default threshold> (, <appender>)+ # DEFAULT: console appender only log4j.rootLogger=${zookeeper.root.logger} # Example with rolling log file #log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE # Example with rolling log file and tracing #log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE # # Log INFO level and above messages to the console # log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold} log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add ROLLINGFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} # Max log file size of 10MB log4j.appender.ROLLINGFILE.MaxFileSize=10MB # uncomment the next line to limit number of backup files #log4j.appender.ROLLINGFILE.MaxBackupIndex=10 log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add TRACEFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.TRACEFILE=org.apache.log4j.FileAppender log4j.appender.TRACEFILE.Threshold=TRACE log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file} log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout ### Notice we are including log4j's NDC here (%x) log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n
statefulset
apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: zk-pdb spec: selector: matchLabels: app: zookeeper # 保证最大不可用数量,防止集群更新过程中服务降级 # https://www.jianshu.com/p/7da065228a04 maxUnavailable: 1 --- apiVersion: v1 kind: Service metadata: name: zookeeper spec: type: NodePort ports: - name: zookeeper-client port: 2181 nodePort: 32181 targetPort: 2181 selector: app: zookeeper --- apiVersion: apps/v1 kind: StatefulSet metadata: name: zookeeper spec: serviceName: zookeeper selector: matchLabels: app: zookeeper replicas: 3 # OrderedReady:默认方式,按照pod的次序依次创建每个pod并等待ready之后才创建后面的pod。 # Parallel:并行创建或删除pod,和deployment类型的pod一样。 podManagementPolicy: Parallel template: metadata: labels: app: zookeeper spec: nodeName: 10.4.7.31 volumes: - name: config configMap: name: zookeeper-cm items: - key: zoo.cfg path: zoo.cfg - key: log4j.properties path: log4j.properties containers: - name: zookeeper image: 1209233066/zookeeper:3.4.14 imagePullPolicy: IfNotPresent command: ["sh", "-c", "order_num=`hostname|awk -F \"\" '{print $NF}'` && echo $(($order_num+1)) >/var/lib/zookeeper/myid && /opt/zookeeper-3.4.14/bin/zkServer.sh start-foreground"] volumeMounts: - name: config mountPath: /opt/zookeeper/conf - name: zookeeper-pvc mountPath: /var/lib/zookeeper/ volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: zookeeper-pvc spec: accessModes: - ReadWriteOnce storageClassName: csi-rbd-sc resources: requests: storage: 1000Mi
python 客户端测试
其他客户端工具
#!/usr/bin/python3 from kazoo.client import KazooClient zk=KazooClient(hosts='10.4.7.31:32181') zk.start() # zk.create("/name",b"wangendao") node=zk.get_children('/') print(node) zk.stop() zk.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示