安装包

kafka_2.12-0.10.2.0.tgz

zookeeper-3.3.5.tar.gz

Java 环境

Zookeeper 和 Kafka 的运行都需要 Java 环境,Kafka 默认使用 G1 垃圾回收器。如果不更改垃圾回收期,官方推荐使用 7u51 以上版本的 JRE 。如果使用老版本的 JRE,需要更改 Kafka 的启动脚本,指定 G1 以外的垃圾回收器。

本文使用系统自带的 Java 环境。

Zookeeper 集群搭建

简介

Kafka 依赖 Zookeeper 管理自身集群(Broker、Offset、Producer、Consumer等),所以先要安装 Zookeeper。

为了达到高可用的目的,Zookeeper 自身也不能是单点,接下来就介绍如何搭建一个最小的 Zookeeper 集群(3个 zk 节点)。

安装

# tar zxvf zookeeper-3.3.5.tar.gz
# mv zookeeper-3.3.5 zookeeper

配置

配置文件位置

路径:zookeeper/conf

生成配置文件

将 zoo_sample.cfg 复制一份,命名为 zoo.cfg,此即为Zookeeper的配置文件。

# cd zookeeper
# cd conf
# cp zoo_sample.cfg zoo.cfg

编辑配置文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/opt/zookeeper-3.3.5/data
dataLogDir=/opt/zookeeper-3.3.5/logs
# the port at which the clients will connect
clientPort=12181   #自定义端口
server.3=172.19.160.X:12888:13888
server.4=172.19.160.X:12888:13888
server.5=172.19.160.X:12888:13888

server.3 4 5 必须跟myid里面的数字一样  设置成3 4 5 。否则会报错

说明:

#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
#IP为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,
集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper
服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)
长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点
 

创建 myid 文件

分别在三台主机的 dataDir 路径下创建一个文件名为 myid 的文件,文件内容为该 zk 节点的编号。

例如,在第一台主机上建立的 myid 文件内容是 0,第二台是 1。

7. 启动

启动三台主机上的 zookeeper 服务

# cd bin
# ./zkServer.sh start

返回信息:

8. 查看集群状态

3个节点启动完成后,可依次执行如下命令查看集群状态:

./zkServer.sh status

192.168.6.128 返回:

192.168.6.129 返回:

192.168.6.130 返回:

如上所示,3个节点中,有1个 leader 和两个 follower。

9. 测试集群高可用性

1)停掉集群中的为 leader 的 zookeeper 服务,本文中的leader为 server2。

# ./zkServer.sh stop

返回信息:

2)查看集群中 server0 和 server1 的的状态

server0:

server1:

此时,server1 成为了集群中的 leader,server0依然为 follower。

3)启动 server2 的 zookeeper 服务,并查看状态

此时,server2 成为了集群中的 follower。

此时,Zookeeper 集群的安装及高可用性验证已完成!

jps查看进程

zookeeper内存调整方法

zookeeper3.4.5内存分配

对于zookeeper内存设置多大有些疑问,这里给大家解惑一下:

首先介绍一下该如何分配内存:

文件路径:zookeeper/bin/zkEnv.sh

该文件已经明确说明有独立JVM内存的设置文件,路径是zookeeper/conf/Java.env

安装的时候这个路径下没有有java.env文件,需要自己新建一个:

vi java.env

java.env文件内容如下:

#!/bin/sh

export JAVA_HOME=/usr/java/jdk

# heap size MUST be modified according to cluster environment

export JVMFLAGS="-Xms512m -Xmx1024m $JVMFLAGS"

对于内存的分配,还是根据项目和机器情况而定。如果内存够用,适当的大点可以提升zk性能。

Zookeeper 集群的安装及高可用性验证已完成!的更多相关文章

  1. ZooKeeper 集群的安装、配置---Dubbo 注册中心

    ZooKeeper 集群的安装.配置.高可用测试 Dubbo 注册中心集群 Zookeeper-3.4.6 Dubbo 建议使用 Zookeeper 作为服务的注册中心. Zookeeper 集群中只 ...

  2. Dubbo入门到精通学习笔记(十三):ZooKeeper集群的安装、配置、高可用测试、升级、迁移

    文章目录 ZooKeeper集群的安装.配置.高可用测试 ZooKeeper 与 Dubbo 服务集群架构图 1. 修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射: 2. 下载或上 ...

  3. zookeeper集群的安装和配置

    Zookeeper的目的是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户.Zookeeper有两种运行模式,单机模式(Standalone)和集群模式(Distrib ...

  4. Zookeeper集群的安装和使用

    Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google ...

  5. zookeeper集群环境安装配置

    众所周知,Zookeeper有三种不同的运行环境,包括:单机环境.集群环境和集群伪分布式环境 在此介绍的是集群环境的安装配置 一.下载: http://apache.fayea.com/zookeep ...

  6. zookeeper集群的安装

    顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象).Hive(蜜蜂).pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zook ...

  7. ZooKeeper集群的安装、配置、高可用测试

    Dubbo注册中心集群Zookeeper-3.4.6 Dubbo建议使用Zookeeper作为服务的注册中心. Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是 ...

  8. ZooKeeper集群详细安装教程

    1. 安装JDK 1.1 官网下载JDK 进入网址<a href="http://www.oracle.com/technetwork/java/javase/downloads/jd ...

  9. 大数据集群环境 zookeeper集群环境安装

    大数据集群环境 zookeeper集群环境准备 zookeeper集群安装脚本,如果安装需要保持zookeeper保持相同目录,并且有可执行权限,需要准备如下 编写脚本: vi zkInstall.s ...

随机推荐

  1. Codesys 使用共享内存 打通通讯

    Codesys V3.5 平台   提供了库SysShm,其中包含了共享内存操作的接口函数: SysSharedMemoryClose; SysSharedMemoryCreate; SysShare ...

  2. php mysql 多表查询之子查询语句

    所谓子查询语句,就是先通过一个语句来查询出一个结果,然后再通过一个查询语句从这个结果中再次查询.子查询语句一般有以下3种.下面以一个案例来做讲解. 案例:查询[例1]中每个分类下的最新的那一条商品信息 ...

  3. 关于array_merge()的注意

    array_merge() 函数把两个或多个数组合并为一个数组. 1 如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的). 2 如果数组是数字索引的,则键名会以连续方式重新索引. 2 ...

  4. luoguP1540 机器翻译 题解(NOIP2010)

    P1540 机器翻译  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  5. Riverside Curio

    Riverside Curio time limit per test1 second memory limit per test256 megabytes Arkady decides to obs ...

  6. spring 事物(三)—— 声明式事务管理详解

    spring的事务处理分为两种: 1.编程式事务:在程序中控制事务开始,执行和提交:详情请点此跳转: 2.声明式事务:在Spring配置文件中对事务进行配置,无须在程序中写代码:(建议使用) 我对&q ...

  7. InnoDB不支持contains等

    并非所有引擎都支持全文本搜索MySQL.与所有其他的DBMS一样,MySQL具有一个具体管理和处理数据的内部引擎.在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或 ...

  8. laravel 跨域解决方案

    我们在用 laravel 进行开发的时候,特别是前后端完全分离的时候,由于前端项目运行在自己机器的指定端口(也可能是其他人的机器) , 例如 localhost:8000 , 而 laravel 程序 ...

  9. Devops、CI\CD、Jenkins

    Devops DevOps对应用程序发布的影响 在很多企业中,应用程序发布是一项涉及多个团队.压力很大.风险很高的活动.然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下 [2] : ...

  10. 【leetcode】923. 3Sum With Multiplicity

    题目如下: Given an integer array A, and an integer target, return the number of tuples i, j, k  such tha ...