前期准备:
需要安装好虚拟机和centos8如果不会安装可以参考如下连接: http://blog.csdn.net/pucao_cug/article/details/71229416 然后部署好节点hostname部署方式参考,下面链接的部署hostname模块: https://blog.csdn.net/Te_Chainy/article/details/118026360
1.安装
1.1下载
????发现官网上不去,不知道是我ip被禁了,还是官网不中国用户上,上网一搜发现韦恩州立大学可以上,网址为: ????http://ftp.wayne.edu/apache/zookeeper/ ????选择stable稳定版本  ????再选择编译好的版本 
注
意
:
由
于
前
面
我
错
下
载
了
没
有
b
i
n
的
包
,
导
致
我
后
面
的
截
图
都
是
没
有
b
i
n
的
包
这
点
大
家
注
意
一
下
。
\color{red}{注意:由于前面我错下载了没有bin的包,导致我后面的截图都是没有bin的包这点大家注意一下。}
注意:由于前面我错下载了没有bin的包,导致我后面的截图都是没有bin的包这点大家注意一下。
1.2给各个节点创建文件夹装zookeeper
????创建一些文件夹
mkdir /opt/zookeeper
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/datalog

1.3上传
????可以通过windows下再好压缩包以后,通过ZModem上传到linux上 ????如何下载ZModem参看我这篇文章,大概在中间位置。 ????https://blog.csdn.net/Te_Chainy/article/details/118026360?spm=1001.2014.3001.5501 ????上传到 /opt/zookeeper/中
rz
 ????选择apache-zookeeper-3.6.3.tar.gz 
1.4解压
tar -zxvf apache-zookeeper-3.6.3.tar.gz
 ????跑了一大段以后完成
1.5创建myid文件
????再/opt/zookeeper/data中创建myid文件  ????编辑myid文件在其中添加内容1、2、3 ????Server1中内容为1
 ????Server2中内容为2  ????Server3中内容为3  ????不会vim的同学上百度搜一搜,一搜一大把。
2.配置
2.1修改zoo.cfg
????首先需要有一个zoo.cfg文件,apache-zookeeper-3.6.3/conf/ 下有一个zoo_sample.cfg,我们将官方示例文件的配置先复制到zoo.cfg,用cp命令顺便创建zoo.cfg文件了。
cp /opt/zookeeper/apache-zookeeper-3.6.3/conf/zoo_sample.cfg /opt/zookeeper/apache-zookeeper-3.6.3/conf/zoo.cfg
 ????Vim编辑zoo.cfg配置添加如下内容
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/dataLog
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888

说
明
:
d
a
t
a
D
i
r
和
d
a
t
a
L
o
g
D
i
r
需
要
自
己
创
建
,
目
录
可
以
自
己
制
定
,
对
应
即
可
。
s
e
r
v
e
r
.
1
中
的
这
个
1
需
要
和
s
e
r
v
e
r
1
这
个
机
器
上
的
d
a
t
a
D
i
r
目
录
中
的
m
y
i
d
文
件
中
的
数
值
对
应
。
s
e
r
v
e
r
.
2
中
的
这
个
2
需
要
和
s
e
r
v
e
r
2
这
个
机
器
上
的
d
a
t
a
D
i
r
目
录
中
的
m
y
i
d
文
件
中
的
数
值
对
应
。
s
e
r
v
e
r
.
3
中
的
这
个
3
需
要
和
s
e
r
v
e
r
3
这
个
机
器
上
的
d
a
t
a
D
i
r
目
录
中
的
m
y
i
d
文
件
中
的
数
值
对
应
。
当
然
,
数
值
你
可
以
随
便
用
,
只
要
对
应
即
可
。
2888
和
3888
的
端
口
号
也
可
以
随
便
用
,
因
为
在
不
同
机
器
上
,
用
成
一
样
也
无
所
谓
。
\color{red}{说明:dataDir和dataLogDir需要自己创建,目录可以自己制定,对应即可。server.1中的这个1需要和server1这个机器上的dataDir目录中的myid文件中的数值对应。server.2中的这个2需要和server2这个机器上的dataDir目录中的myid文件中的数值对应。server.3中的这个3需要和server3这个机器上的dataDir目录中的myid文件中的数值对应。当然,数值你可以随便用,只要对应即可。2888和3888的端口号也可以随便用,因为在不同机器上,用成一样也无所谓。}
说明:dataDir和dataLogDir需要自己创建,目录可以自己制定,对应即可。server.1中的这个1需要和server1这个机器上的dataDir目录中的myid文件中的数值对应。server.2中的这个2需要和server2这个机器上的dataDir目录中的myid文件中的数值对应。server.3中的这个3需要和server3这个机器上的dataDir目录中的myid文件中的数值对应。当然,数值你可以随便用,只要对应即可。2888和3888的端口号也可以随便用,因为在不同机器上,用成一样也无所谓。
2.启动测试
2.1报错
????如果报错如下  ????查看状态  那么你有可能是产生了这样的错误: ????1.zookeeper下的是没有bin的那个包 ????2.zookeeper依赖于java,用的时候会自动找JAVA_HOME,所以在配置zookeeper前,一定要配置好java环境 ????3.tomcat 和 zook 使用的端口冲突,netstsat -ant 查看端口 ????4.防火墙没有关 systemctl stop firewalld ????5.zoo.cfg配置文件 节点ip的域名输入有误 ????6.一切修改好后,一定要重启zookeeper服务
2.2正常启动
????正常启动应当是如下图所示  ????节点都启动完成以后查看状态server1  ????发现角色是follower ????再看看其他的 ????Server2  ????Server3 
2.3如何选Leader
????看到这里我不禁思考leader怎么选的? ????首先解释一下各个状态 ????LOOKING:寻找Leader状态,处于该状态需要进入选举流程 ????LEADING:领导者状态,处于该状态的节点说明是角色已经是Leader ????FOLLOWING:跟随者状态,表示Leader已经选举出来,当前节点角色是follower ????OBSERVER:观察者状态,表明当前节点角色是observer 在网上查询资料以后大概总结了一下三个节点的选举流程如下: ????假设有三台服务器组成的zookeeper集群,它们的id从1-3,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的.假设这些服务器依序启动,来看看会发生什么。 ????Server1启动,此时只有他一台启动,他发出信息询问,说自己要做leader,然后没有人回复,因为集群中只有它启动了,它的选举状态保持着LOOKING。 ????Server2启动,此时有两台机器启动了,server2发出信息询问,自己要做leader,然后server1回复表示支持,所以server2会获得server1一票,加上server2自己一票,总票数大于3个节点一般也就是大于1.5,server2获选,server2状态变为LEADING,server1状态变成了FOLLOWING。 ????Server3启动,此时集群中3个机器启动,server3发出询问信息,自己要做leader,当发送给server2,server2回复自己已经是leader了,server3状态变成了FOLLOWING
那么问题来了万一leader节点挂了怎么办? ????很简单server2挂了,其他非observer状态全部变成LOCKING,重复上面的操作,选leader。 这里是以白话的形式表述,专业性不强,如果有大佬比较喜欢钻研,可以看一下这个大佬写的分析。 ????https://blog.csdn.net/chengyuqiang/article/details/7919006
3.致谢
本文撰写参考了,一些博主文章,非常感谢他们 https://blog.csdn.net/pucao_cug/article/details/72228973 https://blog.csdn.net/pucao_cug/article/details/71240246
|