【zookeeper】zookeeper3.4.14 真·分布式搭建

ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。

目录

  • 一、安装环境
  • 二、环境准备
  • 三、zookeeper分布式搭建步骤
  • 四、zookeeper基本使用
  • 五、图形界面管理
  • 六、参考并致谢

一、安装环境

操作系统: CentOS 7
服务器规划:

  • 192.168.111.249 master
  • 192.168.111.247 node1
  • 192.168.111.248 node2

zookeeper版本: zookeeper 3.4.14

二、环境准备

1、Java环境搭建配置

yum安装java

[root@bogon ~]# yum install java-1.8.0-openjdk* -y
java环境变量配置

which java定位到的是java程序的执行路径,而不是安装路径,经过两次-lrt最后的输出才是安装路径

/etc/profile文件中追加三行
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64  
export HADOOP_HOME=/home/hadoop-3.2.1  
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新环境变量
[root@bogon ~]# source /etc/profile
2、修改主机名
依次在/etc/hostname文件中,主节点写入master,从节点写入node1或node2


依次在/etc/hosts文件中,将本机和所有节点的主机名写入
使用ping相互测试,并保证能ping通



3、配置节点之间免密登录

效果就是在master上输入ssh node1即可登陆node1,否则开启集群服务时,master与node无法连接,会报出connection refused

检查openssh-server是否已安装
[root@bogon ~]# rpm -qa | grep ssh
确保安装了openssh-server后,每台机器执行ssh-keygen -t rsa,然后回车(三次回车)
生成的公钥私钥都保存在~/.ssh下,在master上将公钥放入authorized_keys,命令如下
[root@bogon ~]# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
将master上的authorized_keys放到其它机器上
[root@bogon ~]# scp ~/.ssh/authorized_keys root@node1:~/.ssh/
[root@bogon ~]# scp ~/.ssh/authorized_keys root@node2:~/.ssh

在master端使用 ssh node1测试,node2使用同样的方法测试

三、zookeeper分布式搭建步骤

1、下载zookeeper

zookeeper各个版本下载地址:https://mirror.bit.edu.cn/apache/zookeeper/

[root@master home]# wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
2、解压
[root@master home]# tar zxvf zookeeper-3.4.14.tar.gz
3、配置环境变量
# 进入到配置文件,并在文件末尾追加zookeeper的环境变量
[root@master home]# vim /etc/profle

配置的环境变量如下,可以根据需要作出更改

export ZOOKEEPER_HOME=/home/zookeeper-3.4.14
PATH=$PATH:$ZOOKEEPER_HOME/bin:$PATH
4、进入到解压出来的zookeeper目录,然后创建data目录
[root@master home]# cd zookeeper-3.4.14  
[root@master zookeeper-3.4.14]# mkdir data 
5、备份默认的配置文件
[root@master zookeeper-3.4.14]# cd conf  
[root@master conf]# cp zoo_sample.cfg zoo.cfg

配置文件和所在目录如下:

6、编辑配置文件
修改数据文件存放路径,将其设置为我们刚刚创建的data目录
配置文件末尾追加节点的信息
进入到刚刚创建的data目录,新建一个名为myid的文件,并在文件中写入1
远程复制zookeeper

将整个zookeeper目录远程使用scp命令复制到node1和node2节点上,并对node1和node2节点中的myid文件作出相应的修改(如node1节点是2,node2节点是3,其中1,2,3要对应配置文件中的server.1,server.2,server.3),同时环境变量也要记得改

# 1、复制zookeeper目录到各个节点上
[root@master home]# scp /home/zookeeper-3.4.14 node1:/home/
[root@master home]# scp /home/zookeeper-3.4.14 node2:/home/  

以下步骤就不一一将命令写出来了,方法跟刚刚配置的是一样的
# 2、修改节点上的myid文件中的值(记得要跟配置文件中的server.X中的X的值要一样)

# 3、将节点中的zookeeper各自加入到环境变量
7、分别从各个节点启动

启动前需要注意的一点是,zookeeper的日志文件zookeeper.out会随着输入启动命令时的目录不同而不同,例如我是在/home目录下启动zookeeper,那么启动之后它就会在/home目录创建一个zookeeper.out的日志文件,因此可以根据不同的需求去规划日志文件的存放目录

# 以下命令各个节点都要执行(即各个节点都要启动)
# 个人习惯是在data目录上存放日志文件,因此进入到data目录
[root@master home]# cd /home/zookeeper-3.4.14/data  
# 启动
[root@master data]# zkServer.sh start 
# 查看服务状态(主节点为leader,从节点为follower)
[root@master data]# zkServer.sh status 
# 查看进程状态
[root@master data]# jps




jps中显示的进程可能跟你们的不一致,因为我是在之前搭建了Hadoop的机子上直接搭建zookeeper,因此会有Hadoop的进程

至此zookeeper的真·分布式搭建步骤已完毕

四、zookeeper基本使用

# 启动
zkServer.sh start

# 关闭  
zkServer.sh stop

# 查看服务状态  
zkServer.sh status

# 查看进程
jps

# 进入到zookeeper的交互界面
zkCli.sh  

# 以下命令基本都是在交互界面中

# 列出全部命令  
help  

# 查看目录下的节点列表  
ls /  

# 创建一个节点/zk_test,并设置值为data1  
create /zk_test data1 

节点就像目录,可以一级一级建下去
create /zk_test/test2 data2
    Created /zk_test/test2
create /zk_test/test3 data3
    Created /zk_test/test3
ls /zk_test
    [test2, test3]



# 获取节点数据和更新信息 (以hbase节点为例) 
get /hbase
输出信息如下:
    cZxid = 0x800000002 --创建节点的id
    ctime = Thu Mar 12 16:07:37 CST 2020 --节点的创建时间
    mZxid = 0x800000002 --修改节点的ID
    mtime = Thu Mar 12 16:07:37 CST 2020 --修改节点的时间
    pZxid = 0x80000000c --子节点ID
    cversion = 8 --子节点的版本
    dataVersion = 0 --当前节点的版本
    aclVersion = 0 --权限的版本
    ephemeralOwner = 0x0 --判断是否为临时节点
    dataLength = 0 --数据长度
    numChildren = 6 子节点数量


# 设置已存在节点的值
set /zk_test/test2 data22  

# 删除节点
delete /zk_test/test2

五、图形界面管理

图形界面这里使用的是zkui
相关的项目地址如下:
某大神编译好的版本地址:https://github.com/zifangsky/zkui/releases
源码地址:https://github.com/DeemOpen/zkui
烂泥大神提供的源码地址:https://gitee.com/ilanni/zkui

1、使用编译好的版本
下载
[root@master home]# wget https://github.com/zifangsky/zkui/releases/download/v2.0/zkui-2.0.zip
安装解压工具
[root@master home]# yum install -y unzip
解压文件
[root@master home]# unzip zkui-2.0.zip
修改配置文件


主要需要修改的地方有三处:

  • 修改监听的端口(也可以保持默认)
  • 修改zookeeper集群的主机(其中端口号可以从zookeeper的配置文件中查看)
  • 修改图形界面的用户登录密码(可以保持默认)
赋予脚本执行的权限并启动
[root@master zkui-2.0]# chmod 777 start.sh
[root@master zkui-2.0]# start.sh --这是linux下的启动命令,Windows下是双击start.bat
网页打开访问地址(zkui部署的服务器ip:监听端口号)
使用账号密码登录即可
2、使用源码版本
安装maven(步骤省略)
安装git(步骤省略)
使用git将项目文件下载
git clone https://github.com/DeemOpen/zkui.git
进入到项目目录,并编译安装
cd zkui/ 
mvn clean install
修改配置文件


主要需要修改的地方有三处:

  • 修改监听的端口(也可以保持默认)
  • 修改zookeeper集群的主机(其中端口号可以从zookeeper的配置文件中查看)
  • 修改图形界面的用户登录密码(可以保持默认)
赋予脚本执行的权限并启动
[root@master zkui-2.0]# chmod 777 start.sh
[root@master zkui-2.0]# start.sh --这是linux下的启动命令,Windows下是双击start.bat
网页打开访问地址(zkui部署的服务器ip:监听端口号)
使用账号密码登录即可
zkui部署过程中遇到的问题
问题:

登录zkui ,选择导航“Host” 出现错误提示:KeeperErrorCode = NoNode for /appconfig/hosts 如下所示:


原因:

没有/appconfig/hosts这个节点导致

解决方案:

1、进入到leader的zookeeper交互界面

[root@master /home]# zkCli.sh

2、手动创建节点

create /appconfig "my appconfig"
create /appconfig/hosts 123456

3、重新刷新以下web页面

六、参考并致谢

https://mirror.bit.edu.cn/apache/zookeeper/
https://blog.csdn.net/raoxiaoya/article/details/99198348
https://www.cnblogs.com/smail-bao/p/7794636.html
https://www.cnblogs.com/caoshousong/p/10709371.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,924评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,902评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,716评论 0 239
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,783评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,166评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,510评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,784评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,476评论 0 196
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,196评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,459评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,978评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,321评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,964评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,046评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,803评论 0 193
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,530评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,420评论 2 265

推荐阅读更多精彩内容