zookeeper部署

zookeeper部署

下载地址:
https://archive.apache.org/dist/zookeeper/
http://zookeeper.apache.org/releases.html

单节点部署

1)下载二进制包配置环境
#安装oracle jdk或openjdk
yum install -y java-11-openjdk

#下载zk
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.9.0/apache-zookeeper-3.9.0-bin.tar.gz
tar xf apache-zookeeper-3.9.0-bin.tar.gz -C /usr/local/

cd /usr/local/apache-zookeeper-3.9.0-bin
ln -s $PWD /usr/local/zookeeper
ln -s $PWD/conf /etc/zookeeper

echo 'export PATH=$PWD/bin:$PATH' > /etc/profile.d/zk.sh
. /etc/profile.d/zk.sh
2)修改配置
mkdir /opt/zookeeper_data
mv conf/zoo_example.cfg conf/zoo.cfg
sed -ri 's#^(dataDir=).*#\1/opt/zookeeper_data#' conf/zoo.cfg
3)写service文件
tee > /etc/systemd/system/zookeeper.service<<-eof
[Unit]
After=network.target

[Service]
#指定日志存放位置
#Environment="ZOO_LOG_DIR=/tmp"
Type=forking
ExecStart=/usr/local/zookeeper/bin/zkServer.sh --config /etc/zookeeper start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper/bin/zkServer.sh --config /etc/zookeeper restart

[Install]
WantedBy=multi-user.target
eof

systemctl daemon-reload
systemctl start zookeeper.service

集群部署

ip 节点
2.2.2.12 A
2.2.2.22 B
2.2.2.32 C
1)所有主机安装jdk
2)所有主机安装zookeeper

参考上面的单节点安装步骤

3)所有主机改配置文件

配置修改脚本

vim zk_conf.sh
#!/bin/bash
set -e

zk_conf=/etc/zookeeper/zoo.cfg
zk_jvm_conf=/etc/zookeeper/java.env
cpus=`grep processor /proc/cpuinfo |wc -l`
c_70=`echo $cpus 0.5 |awk '{print $1*$2+1}' |cut -d'.' -f1`
mem_m=`free -m |awk 'NR==2{print $2}'`
mem_g=`free -g |awk 'NR==2{print $2}'`
m_70=`echo $mem_g 0.7 |awk '{print $1*$2+1}' |cut -d'.' -f1`
m_50=`echo $m_70 1024 0.5 |awk '{print $1*$2*$3}' |cut -d'.' -f1`
m_30=`echo $m_70 1024 0.3 |awk '{print $1*$2*$3}' |cut -d'.' -f1`
m_125=`echo $m_70 1024 0.125 |awk '{print $1*$2*$3}' |cut -d'.' -f1`
install -d /opt/jvm/log
install -d /opt/{zookeeper_data,zookeeper_log}

cat > $zk_conf <<-EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper_data
dataLogDir=/opt/zookeeper_log
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=6
autopurge.purgeInterval=12
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true
metricsProvider.numWorkerThreads=1
server.1=2.2.2.12:2888:3888
server.2=2.2.2.22:2888:3888
server.3=2.2.2.32:2888:3888
preAllocSize=65536
snapCount=100000
commitLogCount=500
snapSizeLimitInKb=4194304
maxCnxns=0
maxClientCnxns=60
maxResponseCacheSize=1000
maxGetChildrenResponseCacheSize=1000
watcherCleanThreadsNum=$c_70
maxInProcessingDeadWatchers=10000
bitHashCacheSize=100
flushDelay=0
maxBatchSize=1000
learner.closeSocketAsync=true
leader.closeSocketAsync=true
learner.asyncSending=false
forward_learner_requests_to_commit_processor_disabled=false
FastLeaderElection=true
standaloneEnabled=false
tcpKeepAlive=true
clientTcpKeepAlive=true
electionPortBindRetry=3
zookeeper.nio.numSelectorThreads=$c_70
zookeeper.messageTracker.Enabled=false
zookeeper.messageTracker.BufferSize=10
EOF

cat > $zk_jvm_conf <<eof
JAVA_OPTS="-server -Xms${m_70}g -Xmx${m_70}g -Xss512k -Xmn${m_30}m -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=${m_125}m -XX:MaxPermSize=${m_30}m -XX:MetaspaceSize=${m_125}m -XX:MaxMetaspaceSize=${m_30}m -XX:LargePageSizeInBytes=${m_125}m -XX:+UnlockExperimentalVMOptions  -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=50 -XX:G1HeapRegionSize=2m -XX:+UseG1GC -XX:+UseContainerSupport -XX:MaxRAMPercentage=75 -XX:+UseCGroupMemoryLimitForHeap -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/jvm/log -XX:OnOutOfMemoryError='find /opt/jvm/log -name \'*.hprof\' -exec mv {} {}.`date +"%Y%m%d%H%M%S"` \;'"
eof
#修改配置
sh zk_conf.sh

#在A主机执行:添加集群id
echo 1 > /opt/zookeeper_data/myid

#在B主机执行:添加集群id
echo 2 > /opt/zookeeper_data/myid

#在C主机执行:添加集群id
echo 3 > /opt/zookeeper_data/myid
4)各节点启动,验证状态
systemctl enable --now zookeeper

zkServer.sh status
posted @ 2023-11-11 23:55  suyanhj  阅读(87)  评论(0)    收藏  举报