IT评测·应用市场-qidao123.com

标题: ubuntu体系zookeeper重新设置:伪分布zookeeper一台机三个节点 [打印本页]

作者: 耶耶耶耶耶    时间: 2025-3-21 02:19
标题: ubuntu体系zookeeper重新设置:伪分布zookeeper一台机三个节点
伪分布zookeeper一台机三个节点
参考文献:
https://blog.csdn.net/weixin_53727695/article/details/137554882?spm=1001.2014.3001.5501
按照林子雨教程下载并安装了zookeeper,后来发现zookeeper要三个节点,就去找了其他方法设置。
由于我是设置好了zookeeper,全部我现在的zookeeper下面就有了数据存储文件data
日志存储文件 logs

复制三份:
cp -r zookeeper /usr/local/zookeeper01
cp -r zookeeper /usr/local/zookeeper02
cp -r zookeeper /usr/local/zookeeper03

如果它提示你没有找到该文件目录,那有大概是权限问题

办理:
sudo cp -r zookeeper /usr/local/zookeeper01
sudo cp -r zookeeper /usr/local/zookeeper02
sudo cp -r zookeeper /usr/local/zookeeper03

由于我本来就已经建好了设置文件 数据存储文件是data  数据日志文件是logs

如果没建好的可以按照下面步调: 要进之前复制出来的三个zookeeper0?目录下,内里mkdir{dataDir,datalogDir}

cd /usr/local/zookeeper01
mkdir {dataDir,dataLogDir}       #zookeeper01,zookeeper02,zookeeper03都要创建
 
cd /usr/local/zookeeper02
mkdir {dataDir,dataLogDir}
 
cd /usr/local/zookeeper03
mkdir {dataDir,dataLogDir}
 
cd /usr/local/zookeeper01/dataDir/
vim myid    #在内里输入1
 
cd /usr/local/zookeeper02/dataDir/
vim myid    #在内里输入2
 
cd /usr/local/zookeeper03/dataDir/
vim myid    #在内里输入3
 
保举这个:#雷同下面如许
#echo "1" > /usr/local/zookeeper01/dataDir/myid
#echo "2" > /usr/local/zookeeper02/dataDir/myid
#echo "3" > /usr/local/zookeeper03/dataDir/myid

如果实行不了,大概写了之后退出不了,有大概是权限问题:

办理:
sudo sh -c 'echo "1" > /usr/local/zookeeper01/data/myid'
sudo sh -c 'echo "2" > /usr/local/zookeeper02/data/myid'
sudo sh -c 'echo "3" > /usr/local/zookeeper03/data/myid'
然后查看当前文件是否成功输入:
cat /usr/local/zookeeper01/data/myid
cat /usr/local/zookeeper02/data/myid
cat /usr/local/zookeeper03/data/myid

3.设置zoo.cfg文件
cd /usr/local/zookeeper01/conf
cp  /usr/local/zookeeper01/conf/zoo_sample.cfg zoo.cfg 这个由于我之前已经配过了 已经有复制过了,全部我这里就不需要复制了,如果没有复制过的就复制
vim  /usr/local/zookeeper01/conf/zoo.cfg

如果读写保存不了,那也有大概是权限问题,全部直接用sudo命令实行:
sudo vim  /usr/local/zookeeper01/conf/zoo.cfg
设置zookeeper01的zoo.cfg
tickTime=2000    #默认有
initLimit=10        #默认有
syncLimit=5            #默认有
dataDir=/usr/local/zookeeper01/data    #要改!即前面新建的路径 我的是data
dataLogDir=/usr/local/zookeeper01/logs    #要改!同理 我的是logs

clientPort=2181        #该服务的端口号
server.1=127.0.0.1:2888:3888    
server.2=127.0.0.1:2889:3889    
server.3=127.0.0.1:2890:3890
 设置zookeeper02的zoo.cfg:sudo vim  /usr/local/zookeeper02/conf/zoo.cfg
cd /usr/local/zookeeper02/conf
cp  /usr/local/zookeeper02/conf/zoo_sample.cfg zoo.cfg
sudo vim  /usr/local/zookeeper02/conf/zoo.cfg

设置内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper02/data    #修改指定路径
dataLogDir=/usr/local/zookeeper02/logs    ##修改指定路径
clientPort=2182    #端口号要更改,不能与其他服务端口冲突
server.1=127.0.0.1:2888:3888    
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

设置zookeeper03的zoo.cfg
cd /usr/local/zookeeper03/conf
cp  /usr/local/zookeeper03/conf/zoo_sample.cfg zoo.cfg
vim  /usr/local/zookeeper03/conf/zoo.cfg
设置内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper03/data    #修改指定路径
dataLogDir=/usr/local/zookeeper03/logs    ##修改指定路径
clientPort=2183    #端口号要更改,不能与其他服务端口冲突
server.1=127.0.0.1:2888:3888    
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
设置的时候肯定要谨慎检查!!!
 此步调要谨慎布置,仔细检查,如果设置错误轻易导致后面启动失败!同理启动失败时返来查看文件修改是否有误!
4.启动集群
(这里启动失败的话大概由于权限不足,授予权限sudo chmod -R 777 /usr/local,再进入目录./zkServer.sh start)

但我改了权限之后还是报错 开不了zookeeper,就去检查了设置文件,发现是主机ip
有误,另有就是我把server1.后面的解释去除之后就可以了,我也不知道是不是这个错误,但最好还是IP后面不要有解释,如许也大概有错


ZooKeeper 启动失败大概有以下几个原因:
要检查 dataDir 指定的目录是否有写权限,你可以按照以下步调操作:
①查看当前权限: 使用 ls -ld 命令来查看 dataDir 目录的当前权限和全部者。例如,如果你的 dataDir 是 /usr/local/zookeeper01/data,你可以实行:
bash
ls -ld /usr/local/zookeeper01/data
这将显示雷同于以下的输出:
drwxr-xr-x 2 root root 4096 Dec 1 12:34 /usr/local/zookeeper01/data
这里的 drwxr-xr-x 表示目录的权限,其中 d 表示这是一个目录,rwx 表示全部者(在这里是 root)有读、写和实行的权限,r-x 表示组有读和实行的权限,r-x 表示其他用户也有读和实行的权限。
②检查当前用户: 使用 whoami 命令来查看当前用户:
bash
whoami
这将返回你当前登录的用户名。
③检查写权限: 如果 dataDir 的全部者是 root,而你不是以 root 用户登录的,那么你需要检查你的用户是否属于 root 组,大概目录的权限是否允许你的用户写入。你可以使用以下命令来检查你的用户是否属于 root 组:
bash
groups
这将列出你当前用户所属的全部组。

bash
sudo chmod 777 /usr/local/zookeeper01/data
大概,给组添加写权限(如果你的用户属于该组):
bash
sudo chmod 775 /usr/local/zookeeper01/data
请留意,777 权限黑白常开放的,任何人都可以读写实行,这大概不安全。通常建议使用更严格的权限,例如 755(全部者可以读写实行,组和其他用户可以读实行)。
②更改全部者: 如果你的用户不是 dataDir 的全部者,你可以使用 chown 命令来更改全部者,例如:
bash
sudo chown -R $(whoami)(whoami) /usr/local/zookeeper01/data
这将把 dataDir 目录及其子目录的全部者和组更改为你当前的用户。



我真的检查了好多次设置问题:


直接实行这个命令,查看启动失败的重要原因:./zkServer.sh start-foreground

hadoop@ubuntu:/usr/local/zookeeper01/bin$ ./zkServer.sh start-foreground
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg
2024-11-30 09:34:45,567 [myid:] - INFO  [mainuorumPeerConfig@133] - Reading configuration from: /usr/local/zookeeper01/bin/../conf/zoo.cfg
2024-11-30 09:34:45,576 [myid:] - INFO  [mainuorumPeerConfig@385] - clientPortAddress is 0.0.0.0/0.0.0.0:2181
2024-11-30 09:34:45,576 [myid:] - INFO  [mainuorumPeerConfig@389] - secureClientPort is not set
2024-11-30 09:34:45,586 [myid:] - ERROR [mainuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: 127.0.0.1:3889    #å¯å¦å¤æ‰“开一个ç»ç«¯ä½¿ç”¨ip addr show查看自己ç
    IP
at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.<init>(QuorumPeer.java:279)
at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(QuorumMaj.java:89)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:595)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:628)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:601)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:420)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:150)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Invalid config, exiting abnormally(地址分析错误,这表明 ZooKeeper 无法分析设置文件中指定的地址 127.0.0.1:3889)

办理:这个问题通常是由于以下几个原因造成的:
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890(后来我就是把这个分析删掉之后,在去开zookeeper就可以了,以是后面最好不要加解释!!!)

权限,网络设置,Java设置,端口冲突,我都检查过了没有问题!




您提供的 Java 版本信息显示您正在使用 Java 8 的更新版本(1.8.0_371),这是 ZooKeeper 支持的 Java 版本之一。这意味着 Java 版本不太大概是导致 ZooKeeper 启动失败的原因。
既然我们已经确认了 Java 版本和网络设置都没有问题,接下来我们可以继续排查 ZooKeeper 设置和环境的其他潜伏问题:
bash
cat /etc/hosts


如果 /etc/hosts 文件中没有正确设置,您可以使用以下命令添加:
bash
echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
bash
ls -ld /usr/local/zookeeper01/data
ls -ld /usr/local/zookeeper01/logs
如果权限不足,您可以更改目录权限:
bash
sudo chown -R hadoop:hadoop /usr/local/zookeeper01/data
sudo chown -R hadoop:hadoop /usr/local/zookeeper01/logs
bash
rm -rf /usr/local/zookeeper01/data/*
rm -rf /usr/local/zookeeper01/logs/*
bash
./zkServer.sh start-foreground
通过以上步调,您应该可以大概进一步诊断 ZooKeeper 启动失败的原因。如果问题依然无法办理,请提供更多的错误日志信息以便进一步分析。



以是实在无论是什么步调,最后都是回到最开始的问题,zoo.cfg设置环境的问题!!!
以是这个真的要好好检查!!!

启动集群:
后台启动zookeeper01的zoo.cfg服务端
cd /usr/local/zookeeper01/bin/
./zkServer.sh start  # 启动第一个节点
netstat -lntp |grep java  # 查看监听的端口

后台启动zookeeper02的zoo.cfg服务端
cd /usr/local/zookeeper02/bin/
./zkServer.sh start  # 启动第二个节点
netstat -lntp |grep java  # 查看监听的端口

后台启动zookeeper03的zoo.cfg服务端
cd /usr/local/zookeeper03/bin/
./zkServer.sh start  # 启动第三个节点
netstat -lntp |grep java  # 查看监听的端口



查看进程:



.启动完后依次查看集群的状态、主从信息:
/usr/local/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper02/bin/zkServer.sh status
/usr/local/zookeeper03/bin/zkServer.sh status
 这里有个问题是肯定要全部启动后按次序启动集群!


zookeeper关闭命令:
/usr/local/zookeeper01/bin/zkServer.sh stop
/usr/local/zookeeper02/bin/zkServer.sh stop
/usr/local/zookeeper03/bin/zkServer.sh stop


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4