zookeeper单点集群配置

  1. 下载地址

https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/

 

第一次下载zookeeper根据学习修改了,zoo.cfg的文件但是还是出现了org.apache.zookeeper.server.quorum.QuorumPeerMainm,而且其他没有做修改,查看百度无果,上google查找终于发现了原来zookeeper在3.5.5之后在下载的时候应该下载带bin的文件,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用

 

  1. 参考文档:

https://www.jianshu.com/p/ed6ec88b01c3

 

  1. 安装环境

系统版本

centos7.7

zookeeper版本

apache-zookeeper-3.5.6-bin.tar.gz

jdk版本

openjdk1.8

 

 

  1. 配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件)

https://www.cnblogs.com/xiohao/p/5541093.html

 

  1. Zookeeper 目录结构

1. bin:放置运行脚本和工具脚本,如果是 Linux 环境还会有有 zookeeper 的运 行日志 zookeeper.out

2. confzookeeper 默认读取配置的目录,里面会有默认的配置文件

3. contribzookeeper 的拓展功能

4. dist-mavenzookeeper maven 打包目录

5. docszookeeper 相关的文档

6. libzookeeper 核心的 jar

7. recipeszookeeper 分布式相关的 jar

8. srczookeeper 源码

 

 

  1. zookeeper单点安装

  2. 首先安装openjdk

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

  1. 下载zookeeper包

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz

tar xf apache-zookeeper-3.5.6-bin.tar.gz

mv apache-zookeeper-3.5.6-bin /usr/local/

cd /usr/local/

ln -s /usr/local/apache-zookeeper-3.5.6-bin/ zookeeper

  1. 配置环境变量

vim /etc/profile

export PATH=$PATH:/usr/local/zookeeper/bin/

source /etc/profile

 

vim /etc/profile

配置jdk系统环境变量

JAVA_HOME=/usr/local/java/jdk1.8

JRE_HOME=/usr/local/java/jdk1.8/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

 

  1. 创建log日志目录

mkdir /usr/local/zookeeper/log_snapshot #快照日志目录

mkdir /usr/local/zookeeper/log_transaction #事务日志目录

 

  1. 进入conf目录

cd /usr/local/zookeeper/conf

改名字

cp zoo_sample.cfg zoo.cfg

具体参数如下:

主要需要配置

dataDir=/usr/local/zookeeper/log_snapshot

dataLogDir=/usr/local/zookeeper/log_transaction

 

 

  1. Zookeeper启动

服务管理命令:zkServer.sh start|stop|restart|status

 

  1. 连接客户端

客户端连接:zkCli.sh -server ${ip}:${port}

zkCli.sh -server 10.77.20.23:2181

客户端关闭:quit 或者按 Ctrl + C

 

zookeeper端口是2181

 

  1. ZK中有几种节点类型,节点类型在节点创建的时候就被确定且不可改变

临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点

临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会有序列号,分布式锁中会用到该类型节点

持久节点(PERSISTENT):创建后永久存在,除非主动删除。

持久顺序节点(PERSISTENT_SEQUENTIAL):该节点创建后持久存在,相对于持久节点它会在节点名称后面自动增加一个10位数字的序列号,这个计数对于此节点的父节点是唯一,如果这个序列号大于2^32-1就会溢出。

 

  1. zookeeper创建节点

create -s /zk-test 123 # -e参数为创建临时节点,如果不带参数则创建持久节点#为节点的名字,为节点的内容

查看节点内容

get /zk-test

删除节点

delete /zk

 

connect host:port - 连接其他的 ZooKeeper 应用。

ls path - 列表路径下的资源。在 ZooKeeper 控制台客户端中,没有默认列表功能,必须 指定要列表资源的位置。 如: ls / ; ls /path 等。

create [-e] [-s] path data - 创建节点,如:

create /test 123 创建一个/test 节点,节点携 带数据信息 123。

create -e /test 123 创建一个临时节点/test,携带数据为 123,临时节点只 在当前会话生命周期中有效,会话结束节点自动删除。

create -s /test 123 创建一个顺序节点 /test,携带数据123,创建的顺序节点由ZooKeeper自动为节点增加后缀信息,如-/test00000001 等。-e 和-s 参数可以联合使用。

get path - 查看指定节点的数据。 如: get /test。结果如下:

set path data [version] - 设置对应位置节点的数据。如: set /test 'test data'。 如果要设 置的数据中有空格,则使用单引号界定数据的范围。每次修改数据后,dataVersion 属性自增。 那么在 set 命令中可以指定 version,version 数据必须与上次查询的值一致,用于保证本次修 改命令执行时,没有其他会话修改此数据。

delete path [version] - 删除指定节点,此命令不能删除有子节点的节点。如:delete /test。 其中 version 参数和 set 命令的 version 含义一致 rmr path - 删除指定结点,包括子节点。

quit - 退出控制台

 

 

  1. 集群搭建

 

集群内节点只要不宕掉一半,zookeeper就不会出现问题,等于是,节点越多,越安全

 

  1. 在每个节点添加

vim /usr/local/zookeeper/conf/zoo.cfg

server.1=172.26.103.56:2881:3881

server.2=172.26.103.57:2881:3881

server.3=172.26.103.58:2881:3881

service.N=YYY:A:B

N:代表服务器编号(也就是myid里面的值)

YYY:服务器地址

A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)

B:表示 是选举端口(默认是3888)

 

  1. 在每个zookeeper节点下配置文件内的dataDir设置的目录内添加myid

echo 1 >myid

echo 2 >myid

echo 3 >myid

 

 

  1. 启动各个节点

/usr/local/zookeeper/bin/zkServer.sh start

  1. 查看各个节点角色状态

/usr/local/zookeeper/bin/zkServer.sh status

 

  1. 优化;添加环境变量

export PATH=$PATH:/usr/local/zookeeper/bin/

 

 

 

 

  1. 关于zookeeper占用8080端口

zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。

通过查看zookeeper的官方文档,发现有3种解决途径:

 

(1).删除jetty。

(2)修改端口。

修改方法的方法有两种,一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=你的端口号.一种是在zoo.cfg中增加admin.serverPort=没有被占用的端口号

(3)停用这个服务,在启动脚本中增加"-Dzookeeper.admin.enableServer=false"

 

 

 

 

 

posted @ 2020-03-20 16:44  洛柯  阅读(642)  评论(0编辑  收藏  举报