部署参考
https://yq.aliyun.com/articles/662422
https://www.baidu.com/link?url=4-82ARHt_56IJ34QcMhx9zmRvZPviwtaZrRLM-SI1m3BIFDD_2gzyasBaVTPmst2&wd=&eqid=f116d2da000ca2d4000000065da2ef60
排错参考
https://blog.csdn.net/lll0101/article/details/95448420
配置java环境
#下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-8u91-linux-x64.tar.gz
tar -xzf jdk-8u91-linux-x64.tar.gz ; mkdir -p /usr/java/ ; mv jdk1.8.0_25/ /usr/java/jdk1.8
#然后配置环境变量,这样可以任何地方引用jdk,如下配置:
#vi /etc/profile 最后面加入以下语句:
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
#source /etc/profile #使环境变量马上生效
#java -version #查看java版本,看到jdk1.8.0版本即代表java安装成功。
下载zookeeper链接地址
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar -zxvf zookeeper-3.4.13.tar.gz
mv zookeeper-3.4.13 /usr/local/zookeeper
配置zookeeper
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
vi /usr/local/zookeeper/conf/zoo.cfg
grep -v '#' /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
clientPort=2181
server.1=zk1:2888:3888 #server.NUM=hostname:zk集群节点交换数据端口:zk选举端口
server.2=zk2:2888:3888
server.3=zk3:2888:3888
配置参数详解:
tickTime:发送心跳的间隔时间,单位:毫秒
dataDir:zookeeper保存数据的目录。
clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客
户端的访问请求。
initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连
接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的
Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5 个心跳的
时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表
明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最
长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
server.A=B:C:D:其 中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip
地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一
集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader
配置zookeeper环境变量
vim /etc/profile 添加下面2句
export ZOOKEEPER=/usr/local/bin/app/zookeeper
export PATH=$ZOOKEEPER/bin:$PATH
source /etc/profile 刷新配置文件
在每台主机的/usr/local/zookeeper/data中添加myid,内容分别是1,2,3
echo 1 > /usr/local/zookeeper/data/myid 在第一台zookeeper操作
echo 2 > /usr/local/zookeeper/data/myid 在第二台zookeeper操作
echo 3 > /usr/local/zookeeper/data/myid 在第三台zookeeper操作
启动zookeeper
zkServer.sh start 启动zookeeperZooKeeper
JMX enabled by defaultUsing config: /usr/local/bin/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看zookeeper运行状态
zkServer.sh status
JMX enabled by defaultUsing config: /usr/local/bin/app/zookeeper/bin/../conf/zoo.cfg
Mode: leader #显示leader/follower则说明启动成功
常用操作命令:
zkCli.sh 进入zookeeper客户端
[zk: localhost:2181(CONNECTED) 0] h 命令帮助
create /20191013 helloworld 创建节点数据
[zk: localhost:2181(CONNECTED) 16] ls / 查看有哪些数据
[zk: localhost:2181(CONNECTED) 17] get /20191013 获取20191013数据/事件
helloworld 获取到的数据/事件
cZxid = 0x100000002 当前的事物ID
ctime = Sun Oct 13 18:58:09 CST 2019 创建数据时间
mZxid = 0x100000002 修改的事物ID
mtime = Sun Oct 13 18:58:09 CST 2019 修改事件的时间
pZxid = 0x100000002 父节点事物ID
cversion = 0 当前版本
dataVersion = 0 数据版本
aclVersion = 0 权限
ephemeralOwner = 0x0
dataLength = 10 数据长度
numChildren = 0 数据的子节点
[zk: localhost:2181(CONNECTED) 18] set /20191013 hello 修改/设置 数据或事件
创建observer观察节点
vi /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888:observer #设置为观察节点
server.3=zk3:2888:3888
[root@zk2 ~]# zkServer.sh restart
[root@zk2 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: observer