zookeeper安装

zookeeper集群在部署的时候,节点数量必须是不少于3个的奇数个。 # zookeeper伪分布 zookeeper伪分布式(3个节点) 解压缩zookeeper-3.4.13.tar.gz 执行命令cp conf/zoo_sample.cfg conf/zoo1.cfg 修改文件conf/zoo1.cfg 修改内容如下 dataDir=/opt/zookeeper/zoo1/data clientPort=2181 server.1=hadoop-1:2888:3888 server.2=hadoop-1:2889:3889 server.3=hadoop-1:2890:3890 执行命令cp conf/zoo1.cfg conf/zoo2.cfg 修改文件conf/zoo2.cfg 修改内容如下 dataDir=/opt/zookeeper/zoo2/data clientPort=2182 server.1=hadoop-1:2888:3888 server.2=hadoop-1:2889:3889 server.3=hadoop-1:2890:3890 执行命令cp conf/zoo1.cfg conf/zoo3.cfg 修改文件conf/zoo2.cfg 修改内容如下 dataDir=/opt/zookeeper/zoo3/data clientPort=2183 server.1=hadoop-1:2888:3888 server.2=hadoop-1:2889:3889 server.3=hadoop-1:2890:3890 执行命令,产生存储数据的目录 mkdir -p /opt/zookeeper/zoo1/data mkdir -p /opt/zookeeper/zoo2/data mkdir -p /opt/zookeeper/zoo3/data 产生标记文件 echo '1'>/opt/zookeeper/zoo1/data/myid echo '2'>/opt/zookeeper/zoo2/data/myid echo '3'>/opt/zookeeper/zoo3/data/myid 启动三个节点 bin/zkServer.sh start conf/zoo1.cfg bin/zkServer.sh start conf/zoo2.cfg bin/zkServer.sh start conf/zoo3.cfg 执行zk的操作使用bin/zkCli.sh # zookeeper集群搭建 部署zookeeper集群(hadoop-1\hadoop-2\hadoop-3) 在hadoop-1上解压缩zookeeper-3.4.13.tar.gz 执行命令`cp conf/zoo_sample.cfg conf/zoo.cfg` 修改文件conf/zoo.cfg 修改内容如下 `dataDir=/opt/zookeeper/data` `clientPort=2181` server.1=hadoop-1:2888:3888 server.2=hadoop-2:2888:3888 server.3=hadoop-3:2888:3888 执行命令,产生存储数据的目录 `mkdir -p /opt/zookeeper/data` 产生标记文件 `echo '1'>/opt/zookeeper/data/myid` 把hadoop-1上的zookeeper复制到其他节点 ```shell scp -rq zookeeper hadoop@hadoop-2:/opt scp -rq zookeeper hadoop@hadoop-3:/opt ``` 在hadop-2上执行 echo '2'>/opt/zookeeper/data/myid 在hadop-3上执行 echo '3'>/opt/zookeeper/data/myid 在三个节点分别执行bin/zkServer.sh start 检查 (1)执行jps查看 (2)执行bin/zkServer.sh status # 查看状态错误 当您看到以下错误: ```shell [root@hadoop01 data]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Error contacting service. It is probably not running. ``` 因为是集群环境,有三台服务器都部署了zookeeper。可能是防火墙没有关闭。也有可能是没启动,启动了的情况下查看状态错误,执行 `systemctl status firewalld.service` 命令查看当前服务器的防火墙状态。 注:当前Linux环境是 CentOS7,所以可以通过如下命令控制防火墙,如果是其他Linux系统,那么下面的命令很可能不成功,就需要换成对应系统的命令。 ```shell [root@hadoop01 data]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 五 2022-07-22 14:25:29 CST; 1h 28min ago Docs: man:firewalld(1) Main PID: 689 (firewalld) CGroup: /system.slice/firewalld.service └─689 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 7月 22 14:25:28 hadoop01 systemd[1]: Starting firewalld - dynamic firewall daemon... 7月 22 14:25:29 hadoop01 systemd[1]: Started firewalld - dynamic firewall daemon. 7月 22 14:25:29 hadoop01 firewalld[689]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure co...t now. Hint: Some lines were ellipsized, use -l to show in full. ``` 可以看到第四行是Active: active (running) 那么执行 `systemctl stop firewalld.service `命令关闭防火墙。 ```language [root@hadoop01 data]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since 五 2022-07-22 15:54:31 CST; 1s ago Docs: man:firewalld(1) Process: 689 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 689 (code=exited, status=0/SUCCESS) 7月 22 14:25:28 hadoop01 systemd[1]: Starting firewalld - dynamic firewall daemon... 7月 22 14:25:29 hadoop01 systemd[1]: Started firewalld - dynamic firewall daemon. 7月 22 14:25:29 hadoop01 firewalld[689]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure co...t now. 7月 22 15:54:30 hadoop01 systemd[1]: Stopping firewalld - dynamic firewall daemon... 7月 22 15:54:31 hadoop01 systemd[1]: Stopped firewalld - dynamic firewall daemon. Hint: Some lines were ellipsized, use -l to show in full. ``` 您也使用`systemctl disable firewalld.service`取消开机启动 ```language [root@hadoop01 data]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. ```