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()
posted @   mingtian是吧  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示