zookeeper集群搭建
- 装个jdk
- 设置免密登录
- 下载个zookeeper
- 上传到服务器,解压
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
#改个名字
mv apache-zookeeper-3.8.0-bin zookeeper
- 改配置文件
先复制一份出来,改名叫zoo.cfg,zookeeper默认启动用的配置文件是zoo.cfg
cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg
改一下配置文件
vim zookeeper/conf/zoo.cfg
#设置服务节点
server.1=kafka101:2188:2888
server.2=kafka102:2188:2888
server.3=kafka103:2188:2888
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 设置存数据的目录
dataDir=/opt/zookeeper/zookeeper-data
#设置日志目录
dataLogDir=/opt/zookeeper/zookeeper-log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
- 主要就是设置服务节点和存放数据和日志的目录
- 日志和数据存放的目录是不会自动生成的,我们需要自己创建一个文件夹出来
mkdir zookeeper/zookeeper-log
mkdir zookeeper/zookeeper-data
- 在存数据的文件夹中生成myid文件
cd zookeeper/zookeeper-data
echo "1" > myid
- 写一个脚本启动三个zookeeper
cd ../bin
vi zk.sh
#!/bin/bash
case $1 in
("start"){
for i in kafka101 kafka102 kafka103
do
echo -------------------------------- $i zookeeper 启动 ---------------------------
ssh $i "/opt/zookeeper/bin/zkServer.sh start"
done
}
;;
("stop"){
for i in kafka101 kafka102 kafka103
do
echo -------------------------------- $i zookeeper 停止 ---------------------------
ssh $i "/opt/zookeeper/bin/zkServer.sh stop"
done
}
;;
("status"){
for i in kafka101 kafka102 kafka103
do
echo -------------------------------- $i zookeeper 状态 ---------------------------
ssh $i "/opt/zookeeper/bin/zkServer.sh status"
done
}
;;
esac
# 启动集群命令
./zk.sh start
# 停止集群命令
./zk.sh stop
# 查看集群状态命令
./zk.sh status
- 修改文件的执行权限
chmod +x ./zk.sh
- 更改zkEnv.sh文件
vi zkEnv.sh
#文件开头添加JAVA_HOME路径JAVA_HOME=/opt/java
- 分发到其他服务器
cd /opt
scp zookeeper kafka102:/opt/
scp zookeeper kafka103:/opt/
- 把防火墙关了,或者把相关端口暴露出来
systemctl stop firewalld.service #但是开机之后还会启动防火墙
systemctl disable firewalld.service #禁止firewall开机启动