如果第一次启动使用ZooKeeper时,没注意用root用户启动了,生成的zookeeper.out文件权限就会改变,如果之后再使用普通用户去启动的话就会没有权限

现在,我的集群中的ZooKeeper是好的。

启动看一下,

在看一下状态,

 

我先快照一下,做一个备份。

下面来复现一下当时遇到的问题。

先看一下成功时的文件状态吧。

会有一个zookeeper.out的文件出现在三台机器的普通用户的目录下,这个文件是在第一次启动ZooKeeper后出现的。并且可以看到这个文件的权限是归当前这个普通用户所有的。

下面我们把这个zookeeper.out的文件删掉,来模拟如果第一次启动时,使用的是root用户,会出现什么效果。

我们先只删一台机器上的zookeeper.out文件试试。

 然后开始启动试试,

第一次启动时,是好的。

现在来看一下文件的状态。

 zookeeper.out的文件的权限发生了改变。

这就是问题所在了,如标题所示【第一次启动使用ZooKeeper时,没注意用root用户启动了,生成的zookeeper.out文件权限就会改变,如果之后再使用普通用户去启动的话就会没有权限】

但,当时如果没有注意到使用的用户不对的话,去查看ZooKeeper的状态是,看不出来问题的,

 好的。现在我们关闭ZooKeeper,来模拟第二次启动时的状态。因为第二次没有注意到之前的问题,启动肯定会是去用普通用户去启动的。

好,那我们用普通用户来启动zookeeper的话。

确实,出现了问题。

但要是再来个小技巧,换一个目录去启动zookeeper,

Zookeeper便又可以启动了,只是生成的文件出现在了,启动Zookeeper时所使用的目录下。

解决问题:

至于这个问题如何解决就显而易见了,删掉zookeeper.out文件或者修改权限就可以了。

但是,我们发现启动Zookeeper时,Zookeeper的日志文件会生成在所执行启动的命令文件目录下,这会让文件不好管理。所以我们需要从根本解决问题,指定zookeeper.out的文件位置。zookeeperk运行日志zookeeper.out位置修改

修改配置文件 bin/zkEnv.sh 和 conf/log4j.properties 的内容。

# 以下是原配置
zookeeper.root.logger=INFO, CONSOLE
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender

# 以下是修改后配置
zookeeper.root.logger=INFO, ROLLINGFILE
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender

# 以下是原配置
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi


# 以下是修改后配置
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="/usr/local/app/zookeeper-3.4.13/zooLogDir"
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi

上述两个文件修改后,重新启动服务,zk会将日志文件保存到/usr/local/app/zookeeper-3.4.13/zooLogDir目录下,并且文件名为log4j.properties文件中配置的zookeeper.log

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值