一、ZK单机多实例+分布式配置

2024-05-10 21:48

本文主要是介绍一、ZK单机多实例+分布式配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍zookeeper单机多实例部署(实验性质)以及生产环境的分布式部署

1. 准备工作:

   1)需要linux环境,推荐用ubuntu的系统。学习的话使用oracle的virtual box安装虚拟机,网上找下安装文档就可以装好了,而生产环境一般都会装好的。ubuntu下载链接:

 
  1. 32位:http://mirrors.zju.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-i386.iso

  2. 64位:http://mirrors.hust.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-amd64.iso

    2) JDK:zookeeper需要java运行环境,这个建议1.6以上,配置好 JAVA_HOME 、CLASSPATH、 PATH 变量。

环境变量配置,home目录下的.profile即可:

export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_40"
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ZOOKEEPER_HOME="/data/apache/zookeeper"
export PATH="$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin"

    3) zookeeper安装包:http://zookeeper.apache.org/releases.html 下载稳定版本,现在的版本是3.4.5

2. 然后各种解压,建议对解压后的目录(带有版本号的),建立软连接 zk ,方便后面的配置和升级。

    我解压后放在:  /data/apache/zookeeper下面,并修改文件权限为运行用户权限:

sudo chown -R zqgame:zqgame zookeeper

   zqgame:zqgame是运行zookeeper的用户和用户所在组,查看权限:

zqgame@develop-test-web:/data/apache$ ll
total 16
drwxr-xr-x  4 zqgame zqgame 4096 Jan 17 12:41 ./
drwxr-xr-x 11 root   root   4096 Dec 13 14:49 ../
drwxr-xr-x 11 zqgame zqgame 4096 Nov 20 15:50 hadoop-2.2.0/
drwxr-xr-x 12 zqgame zqgame 4096 Jan 17 12:56 zookeeper/
zqgame@develop-test-web:/data/apache$

3. 端口检查,通常使用的端口 2181,2888,3888 ,检查是否占用,占用则下面的配置中更改端口。

netstat -ano | grep 2181

4.单机多实例配置及启动:

#生成配置文件,配置文件名随便,这里是zoo.cfg
cp /data/apache/zookeeper/conf/zoo_sample.cfg  /data/apache/zookeeper/conf/zoo.cfg
vi /data/apache/zookeeper/conf/zoo.cfg

   配置文件内容:

[xml] view plain copy

  1. tickTime=2000  
  2. initLimit=5  
  3. syncLimit=5  
  4. dataDir=/data/apache/zookeeper/data  # 目录需要手工建立,存放 zk 数据,主要是快照  
  5. clientPort=2181  
  6. # dataLogDir事务日志存放目录,最好配置,事务日志的写入速度严重影响zookeeper的性能  
  7. dataLogDir=/data/apache/zookeeper/datalog  
  8. server.1=192.168.130.170:2889:3889  
  9. server.2=192.168.130.170:2890:3890  
  10. server.3=192.168.130.170:2891:3891  

   拷贝配置文件,生成三个配置文件:zoo-slave1.cfg: (另外两个 zoo-slave2.cfg 和 zoo-slave3.cfg)。

   zoo-slave1.cfg需要为dataDir和dataLogDir设置目录,改动内容如下:

[xml] view plain copy

  1. dataDir=/data/apache/zookeeper/data/slave1  
  2. dataLogDir=/data/apache/zookeeper/datalog/slave1  
  3. clientPort=2182  

   zoo-slave2.cfg :

[xml] view plain copy

  1. dataDir=/data/apache/zookeeper/data/slave2  
  2. dataLogDir=/data/apache/zookeeper/datalog/slave2  
  3. clientPort=2183  

  zoo-slave3.cfg :

[xml] view plain copy

  1. dataDir=/data/apache/zookeeper/data/slave3  
  2. dataLogDir=/data/apache/zookeeper/datalog/slave3  
  3. clientPort=2184  

如上配置相同的本机IP,不同的端口号,这里配置了三个实例

如何区分到底是第几个实例呢,就要有个id文件,名字必须是myid

echo "1" > /data/apache/zookeeper/data/slave1/myid
echo "2" > /data/apache/zookeeper/data/slave1/myid
echo "3" > /data/apache/zookeeper/data/slave1/myid

在三个窗口下迅速启动:

bin/zkServer.sh start zoo-slave1.cfg 
bin/zkServer.sh start zoo-slave2.cfg 
bin/zkServer.sh start zoo-slave3.cfg

查看zookeeper选出来的leader,通过下面的脚本,分别指定配置文件,就可以查看哪一个实例是leader:

bin/zkServer.sh status zoo-slave1.cfg

可以看下如下输出信息:

zqgame@develop-test-web:/data/apache/zookeeper$ bin/zkServer.sh status zoo-slave2.cfg 
JMX enabled by default
Using config: /data/apache/zookeeper/bin/../conf/zoo-slave2.cfg
Mode: leader

5、分布式部署:

    与单机多实例差不多,不过不用三个目录,只需要一个目录,一个配置文件,三个不同IP,分发在不同的IP上,仍然是不同的myid。假设我有三台独立机器,那么zoo.cfg(只需要一个默认的配置文件zoo.cfg)配置文件如下所示:

[xml] view plain copy

  1. tickTime=2000  
  2. initLimit=5  
  3. syncLimit=5  
  4. dataDir=/data/apache/zookeeper/data  # 目录需要手工建立,存放 zk 数据,主要是快照  
  5. clientPort=2181  
  6. # dataLogDir事务日志存放目录,最好配置,事务日志的写入速度严重影响zookeeper的性能  
  7. dataLogDir=/data/apache/zookeeper/datalog  
  8. server.1=192.168.130.101:2888:3888  
  9. server.2=192.168.130.102:2888:3888  
  10. server.3=192.168.130.103:2888:3888  

然后在三台机器上分别写入不同的myid:

#在192.168.130.101执行下面一条
echo "1" > /data/apache/zookeeper/data/myid
#在192.168.130.102执行下面一条
echo "2" > /data/apache/zookeeper/data/myid
#在192.168.130.103执行下面一条
echo "3" > /data/apache/zookeeper/data/myid

这样分别在三台机器迅速启动zookeeper,此时不需要指定配置文件,默认配置文件就是zoo.cfg:

bin/zkServer.sh start

查看启动后的状态:

bin/zkServer.sh status

进入zookeeper的shell客户端:

bin/zkCli.sh   #进入本机zookeeper的shell

进入指定机器的shell客户端:

bin/zkCli.sh -server 192.168.130.101

在查看启动状态有错误的情况下,稍等一会再查看,因为zookeeper启动后需要一点时间选出leader。

这篇关于一、ZK单机多实例+分布式配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977652

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp