Centos7 搭建Zookeeper集群

本文详细介绍如何在三台服务器上搭建Zookeeper集群,包括下载安装、配置文件修改、节点角色规划、防火墙设置、开机启动脚本创建等步骤,确保集群稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载安装包:(hadoop/hadoop)

wget   https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/   该路径下寻对应版本

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

                   Zookeeper集群角色规划

主机

IP

zookeeper 服务之间通信的端口

zookeeper 与其他应用程序通信的端口

centoshadoop1

192.168.227.128

2888

2888+1000

centoshadoop2

192.168.227.129

2888

2888+1000

centoshadoop3

192.168.227.130

2888

2888+1000

mkdir -p /home/hadoop/zookeeper

mkdir -p /home/hadoop/zookeeper/data

mkdir -p /home/hadoop/zookeeper/data/logs

tar zxvf zookeeper-3.4.14.tar.gz  -C /home/hadoop/zookeeper

cd /home/hadoop/zookeeper/zookeeper-3.4.14/conf

 

修改配置文件zoo.cfg

cp zoo_sample.cfg  zoo.cfg  

 

先把dataDir=/tmp/zookeeper注释,然后将下面四行代码添加到文件末尾

vi zoo.cfg

dataDirLog=/home/hadoop/zookeeper/data/logs/
dataDir=/home/hadoop/zookeeper/data
server.1=centoshadoop1:2888:3888
server.2=centoshadoop2:2888:3888
server.3=centoshadoop2:2888:3888

分发节点一centoshadoop1上配置完成的zookeeper文件到其他机器(各机器免密登录)

scp -r zookeeper/  hadoop@centoshadoop2:~

scp -r zookeeper/  hadoop@centoshadoop3:~

在centoshadoop1,centoshadoop2,centoshadoop3节点执行,下面写入配置

cd   ../../data

touch myid

echo  1 >> myid

cat myid

=============================centoshadoop2==========================

cd   ../../data

touch myid

echo  2  >> myid

cat myid

=============================centoshadoop3===========================

cd   ../../data

touch myid

echo 3  >> myid

cat myid

各台主机上配置主机名与IP映射关系

vi /etc/hosts

192.168.227.128 centoshadoop1
192.168.227.129 centoshadoop2
192.168.227.130 centoshadoop3

三台机器上分别执行:

firewall-cmd --zone=public --add-port=2888/tcp --permanent

firewall-cmd --zone=public --add-port=3888/tcp --permanent

firewall-cmd --zone=public --add-port=2181/tcp --permanen

重启防火墙

firewall-cmd --reload

 

=========centoshadoop1,centoshadoop2,centoshadoop3制作开机启动脚本=========================

vi /usr/lib/systemd/system/zookeeper.service

 

#文件内容

[Unit]

Description=Zookeeper Server

After=network.target

[Service]

Type=forking

Environment=ZOO_LOG_DIR=/home/hadoop/zookeeper/data/logs/

Environment=JAVA_HOME=/home/hadoop/java/jdk1.8.0_192

ExecStart=/home/hadoop/zookeeper/zookeeper-3.4.14/bin/zkServer.sh start

ExecStop=/home/hadoop/zookeeper/zookeeper-3.4.14/bin/zkServer.sh stop

Restart=always

#User=zookeeper

#Group=zookeeper

[Install]

WantedBy=multi-user.target

先前安装时,没有配置这个使用systemctl start zookeeper 一直没有启动,最后发现该处有问题

Environment=JAVA_HOME=/home/hadoop/java/jdk1.8.0_192/

开机启动

systemctl enable zookeeper

重新加载信息

systemctl daemon-reload

启动zookeeper:systemctl start zookeeper.service

关掉zookeeper:systemctl stop zookeeper.service

查看进程状态及日志:systemctl status zookeeper.service

开机自启动:systemctl enable zookeeper.service

关闭自启动:systemctl disable zookeeper.service

firewall-cmd --zone=public --list-ports  查看已经打开的防火墙

chown -R hadoop:hadoop zookeeper-3.4.14  

递归地修改zookeeper-3.4.14目录及子目录或者文件为hadoop用户及hadoop组

netstat -apn | grep 2181     查看每个端口是否处于使用状态

 

cd /home/hadoop/zookeeper/zookeeper-3.4.14/bin

在bin目录下查看客户端连接集群

./zkCli.sh -server 192.168.227.128:2181, 192.168.227.129:2181, 192.168.227.130:2181

查看集群中的某台集群是否为主或者从节点

[root@node-3 bin]# ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/hadoop/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg

Mode: leader

 

注意:当不在该文件中/usr/lib/systemd/system/zookeeper.service添加下面hadoop用户及hadoop组的配置时,生成的日志为root账号及root组

/usr/lib/systemd/system/目录下的启动一般需要root权限,所以root开机启动后,生成的动态日志为

/home/hadoop/zookeeper/data/logs/zookeeper.out,  日志为root账号及root用户组,

所以zookeeper账号与zookeeper组不能执行直接这些systemctl start|stop| zookeeper命令,

此时,只能通过sudo获得root权限, 具体设置如下:

方案一:

给hadoop账户添加sudo权限:
        在root下:
            chmod u+w /etc/sudoers
            vi /etc/sudoers
         在 root       ALL=(ALL)    ALL下添加一行:
             hadoop  ALL=(ALL)   ALL   //添加sudo授权
 

这时hadoop账号操作zookeeper的命令如下:

sudo systemctl stop zookeeper   只需要输入hadoop的密码

sudo systemctl start zookeeper 不需要输入密码

sudo systemctl status zookeeper 不需要输入密码 

注意:需要在如下配置文件中添加获得root权限的用户及组

vi /usr/lib/systemd/system/zookeeper.service

User=hadoop

Group=hadoop

方案二:  参考下面的博客

https://blog.youkuaiyun.com/wjy1990831/article/details/87256382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值