[老文章,目前用不上]Zookeeper 集群的安装及高可用性验证已完成! - 疯狂的米粒儿 - 博客园

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性能。


Original url: Access
Created at: 2019-08-22 16:34:15
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论