首页 > 其他分享 >基于3.5.x 版本进行zookeeper 集群搭建

基于3.5.x 版本进行zookeeper 集群搭建

时间:2023-04-02 19:57:12浏览次数:41  
标签:-- cfg zookeeper --. 192.168 zoo 3.5 集群 root

搭建 zk 3.5.x 版本的集群环境

本次搭建使用 3.5.7 版本的zk。

3.5.x 版本进行集群环境的搭建,本质其实和 3.4.x 是没有太大区别的。

但是 3.5.x 的集群环境支持动态的扩缩容,因此 在配置文件方面,将集群节点的配置单独抽取出来了,存放到一个 zoo.cfg.dynamic 的配置文件中。

解压安装包

本次使用 192.168.1.41、192.168.1.42、192.168.1.43、192.168.1.44 四台机器进行初始搭建。其中 192.168.1.44 机器节点为 observer 节点。

所谓的 observer 就是观察者。他参与到集群环境中,但是不会参与master 的竞争。

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local/
# 192.168.1.41
drwxr-xr-x.  7 root root   146 4月   2 05:28 zookeeper3.5.7

# 192.168.1.42
drwxr-xr-x.  7 root root   146 4月   2 05:28 zookeeper3.5.7

# 192.168.1.43
drwxr-xr-x.  7 root root   146 4月   2 05:28 zookeeper3.5.7

# 192.168.1.44
drwxr-xr-x.  7 root root   146 4月   2 05:28 zookeeper3.5.7

zk 的目录结构

  • bin 目录:该目录中包含启动脚本,客户端连接的脚本等等。
  • conf 目录:主要是一些配置文件
drwxr-xr-x. 2  502 games   232 2月  10 2020 bin
drwxr-xr-x. 2  502 games   148 4月   2 05:29 conf
drwxr-xr-x. 5  502 games  4096 2月  10 2020 docs
drwxr-xr-x. 2 root root   4096 4月   2 05:01 lib
-rw-r--r--. 1  502 games 11358 9月  13 2018 LICENSE.txt
drwxr-xr-x. 2 root root     45 4月   2 05:28 logs
-rw-r--r--. 1  502 games   432 2月  10 2020 NOTICE.txt
-rw-r--r--. 1  502 games  1560 2月   7 2020 README.md
-rw-r--r--. 1  502 games  1347 2月   7 2020 README_packaging.txt
# bin 目录中的内容
-rwxr-xr-x. 1 502 games  232 5月   4 2018 README.txt
-rwxr-xr-x. 1 502 games 2067 2月   7 2020 zkCleanup.sh
-rwxr-xr-x. 1 502 games 1158 2月  10 2020 zkCli.cmd
-rwxr-xr-x. 1 502 games 1621 2月   7 2020 zkCli.sh
-rwxr-xr-x. 1 502 games 1766 2月   7 2020 zkEnv.cmd
-rwxr-xr-x. 1 502 games 3690 1月  31 2020 zkEnv.sh
-rwxr-xr-x. 1 502 games 1286 1月  31 2020 zkServer.cmd
-rwxr-xr-x. 1 502 games 4573 2月   7 2020 zkServer-initialize.sh
-rwxr-xr-x. 1 502 games 9386 2月   7 2020 zkServer.sh
-rwxr-xr-x. 1 502 games  996 10月  3 2019 zkTxnLogToolkit.cmd
-rwxr-xr-x. 1 502 games 1385 2月   7 2020 zkTxnLogToolkit.sh

# conf 目录中的内容
-rw-r--r--. 1 502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1 502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 502 games  922 2月   7 2020 zoo_sample.cfg

zk 常用命令

# zk 服务启动
./zkServer.sh start

# zk 服务重启
./zkServer.sh restart

# zk 服务停止
./zkServer.sh stop

# zk 的状态
./zkServer.sh status

进行集群环境配置

以 192.168.1.41 节点为例。其他节点的配置只需要重复上面的步骤。

基于 zoo_sample.cfg 配置文件创建 zoo.cfg 文件

zoo_sample.cfg 配置文件是zk 提供给我们的一个样例文件,我们需要根据该文件创建 一个 zoo.cfg 文件。

zoo.cfg 文件才是 zk 服务启动时所加载的真正的配置文件。

cp zoo_sample.cfg zoo.cfg
# 配置一些超时时间参数
tickTime=2000
initLimit=10
syncLimit=5

# 配置data 数据文件的目录
dataDir=/zookeeper

# 配置客户端连接的端口
clientPort=2181

根据配置文件中的配置,创建 对应的目录。

mkdir /zookeeper

进行myid 文件的配置

cd /zookeeper
echo 1 >myid

创建集群的节点配置文件 zoo.cfg.dynamic

# 创建一个 zoo.cfg.dynamic 文件
touch zoo.cfg.dynamic

# 编辑 zoo.cfg.dynamic 该文件,该文件中就是配置我们的集群中各个节点信息。
server.1=192.168.1.41:2888:3888
server.2=192.168.1.42:2888:3888
server.3=192.168.1.43:2888:3888
server.4=192.168.1.44:2888:3888:observer

zoo.cfg.dynamic 与 zoo.cfg 配置文件相关联

在 zoo.cfg 配置文件中加入 动态扩缩容的配置,引入 zoo.cfg.dynamic 配置文件。

# 配置一些超时时间参数
tickTime=2000
initLimit=10
syncLimit=5

# 配置data 数据文件的目录
dataDir=/zookeeper

# 配置客户端连接的端口
clientPort=2181

# 引入集群节点对应的配置文件。
skipACL=yes
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic

其中可以看到,相比于3.4.x 而言,在3.5.x 版本以后,将集群的配置文件单独抽取到了一个 zoo.cfg.dynamic 文件中。

这样做,是有一定好处的,在后面的集群启动,以及动态的添加zk 节点中我们就可以看到。

至此,我们完成了 192.168.1.41 节点的配置。然后,我们可以依次配置 192.168.1.42、192.168.1.43、192.168.1.44 三台节点。

注意:在进行其他节点的配置的时候,所有步骤基本相同。但是注意 myid 文件中的内容。

# 192.168.1.42 节点内容
mkdir /zookeeper
cd /zookeeper
echo 2 >myid
# 192.168.1.43 节点内容
mkdir /zookeeper
cd /zookeeper
echo 3 >myid
# 192.168.1.44 节点内容
mkdir /zookeeper
cd /zookeeper
echo 4 >myid

启动集群

# 192.167.1.41 节点
./zkServer.sh start

# 192.167.1.42 节点
./zkServer.sh start

# 192.167.1.43 节点
./zkServer.sh start

# 192.167.1.44 节点
./zkServer.sh start

启动完集群环境,我们可以使用客户端连接集群中的任意一个节点

# 使用客户端进行连接
 ./zkCli.sh -server 192.168.1.41:2181
[zk: 192.168.1.41:2181(CONNECTED) 0] 
[zk: 192.168.1.41:2181(CONNECTED) 0] 
[zk: 192.168.1.41:2181(CONNECTED) 0] ls /
[zookeeper]

# 使用confg 命令查看配置信息
[zk: 192.168.1.41:2181(CONNECTED) 1] config
server.1=192.168.1.41:2888:3888:participant
server.2=192.168.1.42:2888:3888:participant
server.3=192.168.1.43:2888:3888:participant
server.4=192.168.1.44:2888:3888:observer
version=100000000

注意:config 命令在3.5.x 版本的客户端中才有,在3.4.x 的老版本中是无法执行该命令的。

version=100000000 就是一个版本号

集群启动,观察配置文件的变化

集群启动之后,我们依次进入 4台节点中,观察 conf 中配置文件的变化

# 集群启动之前
-rw-r--r--. 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1  502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 root root   182 4月   2 05:29 zoo.cfg
-rw-r--r--. 1 root root   137 4月   2 05:15 zoo.cfg.dynamic
-rw-r--r--. 1  502 games  922 2月   7 2020 zoo_sample.cfg
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
# 集群启动之后
-rw-r--r--. 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1  502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 root root   182 4月   2 05:29 zoo.cfg
-rw-r--r--. 1 root root   137 4月   2 05:15 zoo.cfg.dynamic
-rw-r--r--. 1 root root   172 4月   2 05:29 zoo.cfg.dynamic.100000000
-rw-r--r--. 1  502 games  922 2月   7 2020 zoo_sample.cfg

启动之后,我们发现当前的配置文件中多了一个 zoo.cfg.dynamic.100000000 配置文件,该配置文件是 zk 自动为我们生成的。

查看 zoo.cfg 文件

syncLimit=5
initLimit=10
tickTime=2000
clientPort=2181
dataDir=/zookeeper

skipACL=yes
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic.100000000

此时,zoo.cfg 文件中也发生了变化,原来我们配置的 动态文件是 dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic 发生了变化,

已经变为了 zk 自动生成的 zoo.cfg.dynamic.100000000 文件

查看 zoo.cfg.dynamic.100000000 文件中的内容

server.1=192.168.1.41:2888:3888:participant
server.2=192.168.1.42:2888:3888:participant
server.3=192.168.1.43:2888:3888:participant
server.4=192.168.1.44:2888:3888:observer

我们发现,貌似zk 生成的该文件和我们自己定义的 zoo.cfg.dynamic 文件中内容一样。

其实,他这样设计,主要是为了动态扩缩容的时候使用,文件中的 00000000 后缀其实就是一个版本号。

当我们动态增加 zk 节点的时候,还会再次生成一个 新的文件,然后在 zoo.cfg 文件中重新指定新的节点配置文件。这样实现了类似于一个版本的递增的效果。

动态增加节点

假设,当前的zk 集群,我们需要增加一个节点 192.168.1.45 。该怎么增加呢?

增加 192.168.1.45 zk 节点

当前我们使用的3.5.x 的版本,是支持动态的扩缩容的,因此,我们在不重启现有 zk 集群的情况下,就可以实现。

  • 在 192.168.1.45 节点上正常部署 zk。配置对应的 zoo.cfg、zoo.cfg.dynamic 配置文件。
# 配置 zoo.cfg 配置文件
syncLimit=5
tickTime=2000
initLimit=10
skipACL=yes
reconfigEnabled=true
dataDir=/zookeeper
dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic
# 配置 zoo.cfg.dynamic 配置文件。
# 该配置文件中,我们原来有 server1、server2、server3、server4 四个节点。
# 现在,我们需要增加 server.5 这个新的节点。
server.1=192.168.1.41:2888:3888
server.2=192.168.1.42:2888:3888
server.3=192.168.1.43:2888:3888
server.4=192.168.1.44:2888:3888:observer
server.5=192.168.1.45:2888:3888

在现有集群中加入该新增节点

使用 zkCli.sh 客户端连接集群中任意一个节点。然后进行 reconfig 重新配置即可。

[root@bogon bin]# ./zkCli.sh 
Connecting to localhost:2181
[zk: localhost:2181(CONNECTED) 2] 
[zk: localhost:2181(CONNECTED) 2] 
[zk: localhost:2181(CONNECTED) 2] reconfig -add 5=192.168.1.45:2888:3888;2181
Committed new configuration:
server.1=192.168.1.41:2888:3888:participant
server.2=192.168.1.42:2888:3888:participant
server.3=192.168.1.43:2888:3888:participant
server.4=192.168.1.44:2888:3888:observer
server.5=192.168.1.45:2888:3888:participant;0.0.0.0:2181
version=10000000b

reconfig -add 5=192.168.1.45:2888:3888;2181 完成了新节点的加入。

此时,我们可以看到,集群节点中已经有了 192.168.1.45 这个新的节点了。

server.1=192.168.1.41:2888:3888:participant
server.2=192.168.1.42:2888:3888:participant
server.3=192.168.1.43:2888:3888:participant
server.4=192.168.1.44:2888:3888:observer
server.5=192.168.1.45:2888:3888:participant;0.0.0.0:2181
version=
100000000

此时的 version 也已经从原来的 100000000 变为了 10000000b

启动新增加的节点

最后,192.168.1.45 已经加入到了 zk的集群中,我们只需要将 该节点启动,提供服务即可。

./zkServer.sh 

观察配置文件的变化

192.168.1.41、192.168.1.42、192.168.1.43、192.168.1.44 三个老节点中。

配置文件中已经又多了一个 zoo.cfg.dynamic.10000000b 配置文件

-rw-r--r--. 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1  502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 root root   182 4月   2 06:47 zoo.cfg
-rw-r--r--. 1 root root   137 4月   2 05:13 zoo.cfg.dynamic
-rw-r--r--. 1 root root   172 4月   2 05:29 zoo.cfg.dynamic.100000000
-rw-r--r--. 1 root root   229 4月   2 06:47 zoo.cfg.dynamic.10000000b
-rw-r--r--. 1  502 games  922 2月   7 2020 zoo_sample.cfg

zoo.cfg 配置文件中也重新指向了 zoo.cfg.dynamic.10000000b 这个新的配置文件。

syncLimit=5
tickTime=2000
initLimit=10

clientPort=2181
dataDir=/zookeeper

skipACL=yes
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic.10000000b
192.168.1.5 这个新的节点中。

启动之后,配置文件中自动生成了 一个 zoo.cfg.dynamic.10000000b 配置文件

-rw-r--r--. 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1  502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 root root   166 4月   2 06:48 zoo.cfg
-rw-r--r--. 1 root root   169 4月   2 06:41 zoo.cfg.dynamic
-rw-r--r--. 1 root root   229 4月   2 06:48 zoo.cfg.dynamic.10000000b
-rw-r--r--. 1  502 games  922 2月   7 2020 zoo_sample.cfg

配置文件 zoo.cfg 指向了新生成的节点文件

syncLimit=5
tickTime=2000
initLimit=10
dataDir=/zookeeper

skipACL=yes
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper3.5.7/conf/zoo.cfg.dynamic.10000000b

至此,我们就完成了 zk 集群中新增节点操作。

动态缩容

动态缩容和动态扩容类似,都可以在不重启zk 集群环境的情况下实现。指定 reconfig 命令即可。

假如,现在要动态的将 5 号server 删除,要如何做?

直接使用 reconfig -remove 5 即可。

./zkCli.sh 
[zk: localhost:2181(CONNECTED) 4] 
[zk: localhost:2181(CONNECTED) 4] 
[zk: localhost:2181(CONNECTED) 4] reconfig -remove 5
Committed new configuration:
server.1=192.168.1.41:2888:3888:participant
server.2=192.168.1.42:2888:3888:participant
server.3=192.168.1.43:2888:3888:participant
server.4=192.168.1.44:2888:3888:observer
version=10000000f

至此,我们就将 serverid=5 的zk 节点实现了移除。

此时,我们发现我们 version=10000000f 又发生了变化

我们的配置文件文件版本也递增的一版。新增了 zoo.cfg.dynamic.10000000f 版本。

-rw-r--r--. 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1  502 games 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 root root   182 4月   2 07:26 zoo.cfg
-rw-r--r--. 1 root root   137 4月   2 05:15 zoo.cfg.dynamic
-rw-r--r--. 1 root root   172 4月   2 05:29 zoo.cfg.dynamic.100000000
-rw-r--r--. 1 root root   229 4月   2 06:47 zoo.cfg.dynamic.10000000b
-rw-r--r--. 1 root root   172 4月   2 07:26 zoo.cfg.dynamic.10000000f
-rw-r--r--. 1  502 games  922 2月   7 2020 zoo_sample.c

标签:--,cfg,zookeeper,--.,192.168,zoo,3.5,集群,root
From: https://www.cnblogs.com/YX-NO1/p/17281099.html

相关文章

  • 基于3.4.x 版本进行zookeeper 集群搭建
    搭建一主二从三个节点zookeeper集群环境***使用zk的3.4.13的版本***注意:对于zk,3.4版本和3.5版本集群环境是有一些区别的。3.5版本以后使用的是动态集群模式,支持集群的动态扩缩容。(可以在不重启的情况下,实现集群的扩容,缩容)本集群搭建使用的是3.4的版本,后......
  • 提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
    作者:刘泉禄整体介绍本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的Dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态的限......
  • 提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
    作者:刘泉禄整体介绍本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的Dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态......
  • HAProxy实现mycat集群的负载均衡
    上文我们已经实现了mycat集群(https://www.cnblogs.com/zwh0910/p/17278863.html),现在我们来实现mycat集群的负载均衡在前面架构中,虽然对mycat做了集群,保障了mycat的可靠性,但是,应用程序需要连接到多个mycat,显然不是很友好的,也就是说缺少负载均衡的组件,接下来我们来了解下HAProxy。......
  • Elasticsearch 学习-Linux单机和集群安装
    Elasticsearch学习-Linux单机和集群安装3.3linux集群安装3.3.1软件下载软件下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-03.3.2软件安装1)解压软件将下载的软件解压缩#解压缩tar-zxvfelasticsearch-7.8.0-linux-x86_64.tar......
  • Tomcat 入门实战(4)--Tomcat 集群 Session 复制
    本文主要介绍在Tomcat集群中如何进行Session复制,文中所使用到的软件版本:Centos7.9.2009、Java1.8.0_321、Tomcat8.5.87。1、快速配置取消conf/server.xml文件中的以下注释来启用集群:<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>使用上述配......
  • 文本上下文 对话 gpt-3.5-turbo GPT-3
    openai-cookbook/How_to_stream_completions.ipynbatmain·openai/openai-cookbookhttps://github.com/openai/openai-cookbook/blob/main/examples/How_to_stream_completions.ipynb{ "model":"gpt-3.5-turbo", "messages":[{ &qu......
  • 通过 docker-compose 快速部署 Hadoop 集群详细教程
    目录一、概述二、安装docker和docker-compose1)安装docker2)安装docker-compose三、docker-composedeploy1)设置副本数2)资源隔离四、docker-composenetwork五、docker-compose项目六、Hadoop部署(非高可用)1)安装JDK2)下载hadoop相关的软件3)构建镜像Dockerfile4)配置1、Hadoo......
  • mycat集群
    前面我们是用一个mycat对应两个mysql集群,参考:https://www.cnblogs.com/zwh0910/p/17278041.html但是在高并发的情况下,我们的系统也会出现性能的问题,显然是mycat,即所有的压力都压倒mycat上面,所以需要给mycat做集群。mycat做了数据库的代理,在高并发的情况下,必然也会面临单节点性......
  • PostgreSQL 13 pacemaker 高可用集群
    环境介绍 操作系统版本CentOSLinuxrelease7.8.2003(Core)  数据库版本psql(13.10)  PCS集群版本[root@hd-clw-select-proxysql01~]# rpm-qa|greppacemakerpacemaker-libs-1.1.23-1.el7_9.1.x86_64pacemaker-cli-1.1.23-1.el7_9.1.x86_64pacemaker-1.1.2......