ZooKeeper 的主要配置文件位于 conf/zoo.cfg
(默认情况下)。如果没有该文件,可以从模板复制:
cp conf/zoo_sample.cfg conf/zoo.cfg
编辑 conf/zoo.cfg
文件,设置以下基本参数:
# 心跳间隔时间(毫秒)
tickTime=2000
# 初始化同步阶段最多等待的心跳数
initLimit=10
# 发送请求和接收响应最多等待的心跳数
syncLimit=5
# 数据目录,需要预先创建
dataDir=/var/lib/zookeeper
# 客户端连接端口
clientPort=2181
# 内存中保留的快照数量
autopurge.snapRetainCount=3
# 清理间隔(小时)
autopurge.purgeInterval=1
确保配置文件中指定的数据目录存在并有适当权限:
sudo mkdir -p /var/lib/zookeeper
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
如果是集群部署,需要在 zoo.cfg
中添加服务器列表:
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
然后在每个节点的数据目录下创建 myid
文件,内容为对应的服务器ID:
# 在服务器1上
echo "1" > /var/lib/zookeeper/myid
# 在服务器2上
echo "2" > /var/lib/zookeeper/myid
# 在服务器3上
echo "3" > /var/lib/zookeeper/myid
可以配置日志目录和日志级别:
# 日志目录
dataLogDir=/var/log/zookeeper
# 在log4j.properties中配置日志级别
# 最大客户端连接数
maxClientCnxns=60
# 单个节点可以处理的最大请求数
globalOutstandingLimit=1000
# 预分配大小(字节)
preAllocSize=65536
# 快照文件大小阈值(字节)
snapCount=100000
# 启用认证
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
# 启用SSL
secureClientPort=2182
serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
ssl.keyStore.location=/path/to/keystore.jks
ssl.keyStore.password=keystore_password
ssl.trustStore.location=/path/to/truststore.jks
ssl.trustStore.password=truststore_password
bin/zkServer.sh start
bin/zkServer.sh status
bin/zkCli.sh -server 127.0.0.1:2181
如果需要将 ZooKeeper 配置为系统服务:
/etc/systemd/system/zookeeper.service
:[Unit]
Description=ZooKeeper Service
After=network.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
ExecStart=/path/to/zookeeper/bin/zkServer.sh start
ExecStop=/path/to/zookeeper/bin/zkServer.sh stop
ExecReload=/path/to/zookeeper/bin/zkServer.sh restart
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
完成以上配置后,ZooKeeper 应该可以正常运行了。根据实际需求,您可能需要调整内存设置、安全配置或其他性能参数。