ubuntu体系zookeeper重新设置:伪分布zookeeper一台机三个节点 ...

打印 上一主题 下一主题

主题 948|帖子 948|积分 2844

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


  • 原本zookeeper目录下 /usr/local/zookeeper
复制三份:
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


  • 新建myid文件
由于我本来就已经建好了设置文件 数据存储文件是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 启动失败大概有以下几个原因:

  • 设置文件错误:请检查 zoo.cfg 设置文件是否有拼写错误,比如 initLimit 是否正确设置。从搜索结果中可以看到,一个常见的错误是 initLimit 没有设置大概拼写错误,这会导致启动失败。(一样平常是设置文件问题)
  • 端口未开放:确保设置文件中用到的全部端口都已经在防火墙中开放,并且添加到安全组中。
  • 权限问题:检查 dataDir 指定的目录是否有写权限。如果权限不足,您大概需要更改目录的权限,例如使用 sudo chown -R 用户名:用户名 赋予的文件路径 来赋予权限。(一样平常不是这个问题)
要检查 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
这将列出你当前用户所属的全部组。


  • 更改权限: 如果没有写权限,你可以使用 chmod 命令来更改目录的权限,例如,给全部用户添加写权限:
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 目录及其子目录的全部者和组更改为你当前的用户。


  • 日志文件查看:查看 ZooKeeper 的日志文件,通常位于 dataDir 设置的目录下,文件名称为 zookeeper.out。通过查看日志文件可以找到具体的错误信息。
  • 使用 start-foreground 查看错误:您可以尝试使用 ./zkServer.sh start-foreground 命令来启动 ZooKeeper,如许可以在前台显示详细的错误信息,资助您定位问题。(这个可以很好的查看问题出现在哪,可以直接实行这个命令办理)
  • 检查 myid 文件:确保每个 ZooKeeper 节点的 dataDir 目录下都有 myid 文件,并且文件中的数字与 zoo.cfg 中的 server.X 设置相匹配。(这个也很告急,肯定要先对应!!!)
  • 检查 Java 环境:确保 Java 环境已正确设置,并且 JAVA_HOME 环境变量已设置。ZooKeeper 启动脚本需要找到 Java 路径。
  • 检查 ZooKeeper 版本:确保您下载的是正确的 ZooKeeper 安装包,从 Zookeeper 3.5.7 版本开始,官方发布了两个不同的压缩包,确保下载并解压 apache-zookeeper-x.x.x-bin.tar.gz 包。


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


直接实行这个命令,查看启动失败的重要原因:./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)

办理:这个问题通常是由于以下几个原因造成的:

  • 端口冲突:确保端口 3889 没有被其他服务占用。您可以使用 netstat -tulnp 命令来检查端口使用情况。
  • 设置错误:检查 zoo.cfg 设置文件中的 server.X 设置项,确保每个 server.X 的地址和端口设置正确。对于单机测试,您可以将全部 server.X 设置为雷同的地址和不同的端口,如下所示:
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就可以了,以是后面最好不要加解释!!!)

  • 网络设置问题:确保 127.0.0.1 可以大概被正确分析。在某些情况下,如果体系的 hosts 文件设置不正确,大概会导致地址分析问题。您可以检查 /etc/hosts 文件,确保 127.0.0.1 正确映射到 localhost。
  • 权限问题:确保 ZooKeeper 进程有权限访问和绑定这些端口。如果没有,您大概需要以 root 用户身份运行 ZooKeeper 大概调整防火墙设置。
  • 重新启动 ZooKeeper:在修正设置文件后,重新启动 ZooKeeper 以应用更改。
  • 检查 Java 网络设置:在某些情况下,Java 虚拟机的网络设置大概会影响地址分析。您可以检查 Java 的网络设置,确保没有限定或错误的设置。

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




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

  • 检查 /etc/hosts 文件: 打开 /etc/hosts 文件,确保 127.0.0.1 正确地映射到了 localhost。这是分析本地回环地址所必需的。
bash
cat /etc/hosts


如果 /etc/hosts 文件中没有正确设置,您可以使用以下命令添加:
bash
echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts

  • 检查 ZooKeeper 用户权限: 确保运行 ZooKeeper 的用户(在这个案例中是 hadoop 用户)有权限访问 dataDir 和 dataLogDir 目录。
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

  • 检查 ZooKeeper 依赖的库文件: 确保 ZooKeeper 所需的全部依赖库都存在并且没有损坏。这些库文件通常位于 /usr/local/zookeeper01/lib/ 目录下。
  • 清理旧的 ZooKeeper 数据: 如果之前的 ZooKeeper 实例没有正确关闭,大概会留下一些状态文件导致新的实例无法启动。您可以尝试清理 dataDir 和 dataLogDir 目录下的数据(请确保备份告急数据):
bash
rm -rf /usr/local/zookeeper01/data/*
rm -rf /usr/local/zookeeper01/logs/*

  • 重新设置 myid 文件: 确保每个 ZooKeeper 节点的 dataDir 目录下都有一个名为 myid 的文件,并且其内容与 zoo.cfg 中的 server.X 设置项匹配。
  • 使用 start-foreground 模式启动: 使用 start-foreground 模式启动 ZooKeeper,如许可以在前台直接看到启动过程中的详细输出,有助于诊断问题:
bash
./zkServer.sh start-foreground

  • 查看 ZooKeeper 的日志文件: 如果 ZooKeeper 启动失败,查看 dataLogDir 指定的日志目录下是否有新生成的日志文件,并检查其中的错误信息。
通过以上步调,您应该可以大概进一步诊断 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表