kafka 、 zookeeper 集群(二)

一、zookeeper集群安装

要求:
zookeeper的 jdk 要 6以上
zookeeper生产环境版本为 3.4.8

1.首先编辑/etc/hosts
在5台都加入:
10.0.50.10 zk-kafka01
10.0.50.11 zk-kafka02
10.0.50.12 zk-kafka03
10.0.50.13 zk-kafka04
10.0.50.14 zk-kafka05

2.更改hostname
1.vim /etc/sysconfig/network
2.hostname zk-kafka0*
以下为主机名对应关系
10.0.50.10 zk-kafka01
10.0.50.11 zk-kafka02
10.0.50.12 zk-kafka03
10.0.50.13 zk-kafka04
10.0.50.14 zk-kafka05

3.安装软件包
mkdir -p /app/zpy/3rd/zookeeper
mkdir -p /app/zpy/zookeeper
cd /app/zpy/3rd/zookeeper/
rz (包在svn上)
解压

cd /app/zpy/3rd/zookeeper/zookeeper-3.4.8

cp -a * /app/zpy/zookeeper/

--------------------------------------
此处注意,按照运维标准化原则来说,此处应该 chown 目录权限至zpy,但是担心一组会有较多改动,前期先用root用户,
待5台全部部署完毕后,再进行整体权限收回和切换
--------------------------------------
cd /app/zpy/zookeeper/conf
cp zoo_sample.cfg zoo.cfg (拷贝模版配置文件生成新的配置文件)

然后创建zk的data存放目录
mkdir -p /data/zpy/zookeeper

然后我们开始修改配置文件了

1.修改数据和快照存储路径,路径为上方设置的

dataDir=/data/zpy/zookeeper

2.在配置文件最后添加zk集群关系

(2888端口是leader的端口,3888端口是leader挂掉后选举leader用到的通讯渠道端口)

server.1=zk-kafka01:2888:3888

server.2=zk-kafka02:2888:3888

server.3=zk-kafka03:2888:3888

server.4=zk-kafka04:2888:3888

server.5=zk-kafka05:2888:3888

配置文件这就改好了

注意:

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

dataDir:顾名思义就是Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

initLimit:这个配置项是用来配置Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit:这个配置项标识Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是2*2000=4 秒

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号

3.创建myid文件,并输入编号

echo "1" > /data/zpy/zookeeper/myid

其他四台分别为 2 3 4 5

4.启动zookeeper集群,5台最好同时启动,间隔时间不要相差太大

cd /app/zpy/zookeeper/bin/
./zkServer.sh start

5.检查状态,一个leader,4个follower

[[email protected] bin]#./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zpy/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[[email protected] bin]# ./zkServer.sh status

ZooKeeper JMX enabled bydefault
Using config: /app/zpy/zookeeper/bin/../conf/zoo.cfg
Mode: follower

6.测试zookeeper是否正常工作,在server1上执行以下命令

# /home/wwb/zookeeper/bin/zkCli.sh -server192.168.0.2:2181,出现类似以下内容

JLine support is enabled

2013-11-27 19:59:40,560 -INFO     [main-SendThread(localhost.localdomain:2181):[email protected]]-Session establishmentcomplete on server localhost.localdomain/127.0.0.1:2181, sessionid=    0x1429cdb49220000, negotiatedtimeout = 30000

WATCHER::

WatchedEventstate:SyncConnected type:None path:null

[zk: 127.0.0.1:2181(CONNECTED) 0]

二、kafka集群安装

1.下载

wget http://apache.fayea.com/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz

版本需要注意,不要选取这个版本之前的版本,有明显bug,但是也不要选最新的,操作命令不一样,研发还需要去学习 解压

2.安装、配置

最后安装在 /app/zpy/kafka 下

修改配置文件 config下的 server.properties

修改项:

broker.id=10 --这个id如果部署的是kafka集群,id是不能一样的,可以以节点ip最后一位命名。

port=9092 --默认kafka端口,如果一台机器上面部署了多个kafka实例,需要两个实例端口不一样

log.dirs=/data/zpy/kafka10-logs ----这个是kafka日志文件存放路径,默认是/tmp下的,重启会消                                     失,所以我们更换目录

num.partitions=1 ---这个需要与研发商议,与数据插入顺序有关。具体有研发的程序决定。如果研发                   程序中设置了3个partition,配置文件中设置为1也不生效。配置文件只作为默认                     值。

zookeeper.connect=10.0.50.10:2181,10.0.50.11:2181,10.0.50.12:2181,10.0.50.13:2181,10.0.50.14:2181/kafkagroup kafka实现功能需要zookeeper调度,所以这是与zk单机或者集群的连接,上面是与                   集群连接的方式,也可以去掉/kafkagroup,但是zk的znode结构就会比较混乱,所以                   建议加上一个路径。/路径下存放znode相关信息,最好创建一个目录,如                           kafkagroup存放kafka集群的信息

zookeeper.connection.timeout.ms=6000 ----连接zk超时时间

修改kafka的启动脚本(调节启动内存占用大小) cd kafka/bin

vim kafka-server-start.sh

修改28-29行

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then

 export KAFKA_HEAP_OPTS="-Xmx32G -Xms8G"

3.启动

kafka启动(一定后台启动):

./kafka-server-start.sh ../config/server.properties &

4.启动后验证

查看zk集群的znode节点信息 zk是有客户端工具的,可以下载使用,但是zk程序中也自带了程序监测 进入zk的bin目录下

[[email protected] bin]# sh zkCli.sh

Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null

[zk: localhost:2181(CONNECTED) 0] ls /

[kafkagroup, zookeeper]

可以看到我们在kafka里设置的kafkagroup

5.创建Topic(包含3个分区,2个备份副本)

## ./kafka-topics.sh --create --zookeeper 10.0.140.26:2181/kafka --replication-factor 2 --partition 3 --topic zxytest

Created topic "zxytest".

6.查看topic情况

# cd /app/zpy/zookeeper/bin

# sh zkCli.sh

[zk: localhost:2181(CONNECTED) 1] ls /

[zk, consumers, brokers, zk01, zookeeper, kafka]

[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/topics/

zxytest

7.模拟topic生产数据信息

# ./kafka-console-producer.sh --broker-list 10.0.50.10:9092 --topic zxytest

模拟输入内容

hello

world

8.模拟消费者接收数据

# ./kafka-console-consumer.sh --zookeeper 10.0.50.10:2181/kafka --topic zxytest --from-beginning

会接收到生产的数据信息

hello

world

时间: 2024-10-06 11:37:53

kafka 、 zookeeper 集群(二)的相关文章

安装kafka + zookeeper集群

系统:centos 7.4 要求:jdk :1.8.x kafka_2.11-1.1.0 1.绑定/etc/hosts 10.10.10.xxx      online-ops-xxx-0110.10.10.xxx      online-ops-xxx-0210.10.10.xxx      online-ops-xxx-03 2.下载软件包 kafka_2.11-1.1.0 3.配置文件kafka mkdir /data/kafka #vim /usr/local/kafka/config/

kafka学习(二)-zookeeper集群搭建

zookeeper概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 服务等.Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制 不适合在某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此. 1.角色 Zookeeper中的角色主要有以下三

kafka 、 zookeeper 集群(一)

一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现.kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker.无论是kafka集群,还是producer和consumer都依赖于zo

完全分布式ZooKeeper集群和Kafka集群的搭建和使用

自己使用的版本为zookeeper-3.4.7.tar.gz和kafka_2.10-0.9.0.0.tgz.首先要安装JDK(jdk-7u9-linux-i586.tar.gz)和SSH,IP地址的分配为Kafka1(192.168.56.136),Kafka2(192.168.56.137),Kafka3(192.168.56.138).下面主要介绍SSH的安装,ZooKeeper和Kafka集群的搭建和使用. 一. SSH的安装 (1)apt-get install ssh (2)/etc/

kafka集群和zookeeper集群的部署,kafka的java代码示例

来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/details/19325373 http://blog.csdn.net/unix21/article/details/18990123 kafka作为分布式日志收集或系统监控服务,我们有必要在合适的场合使用它.kafka的部署包括zookeeper环境/kafka环境,同时还需要进行一些配置操作.接下

Zookeeper 集群+kafka集群+kafka manager搭建

软件需求,软件包都上传到 /usr/local/src目录: jdk-8u101-linux-x64.tar.gz kafka.2.11-0.8.22.tar.gz zookeeper-3.4.9.tar.gz kafka-manager-1.3.0.7.zip * kafka-manager是通过scala打包获取一个编译完的项目,需要提前编译好,参考 https://github.com/yahoo/kafka-manager 硬件需求,四个主机: 192.168.100.100 : kaf

kafka环境搭建2-broker集群+zookeeper集群(转)

原文地址:http://www.jianshu.com/p/dc4770fc34b6 zookeeper集群搭建 kafka是通过zookeeper来管理集群.kafka软件包内虽然包括了一个简版的zookeeper,但是感觉功能有限.在生产环境下,建议还是直接下载官方zookeeper软件. 下载 最新版的zookeeper软件 wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.g

Kafka不停机,如何无感知迁移ZooKeeper集群?

Kafka 在 Yelp 的应用十分广泛,Yelp 每天通过各种集群发送数十亿条消息,在这背后,Kafka 使用 Zookeeper 完成各种分布式协调任务.因为Yelp 非常依赖 Kafka,那么问题来了,它是否可以在不引起 Kafka 及其他 Zookeeper 用户注意的情况下切换 Zookeeper 集群呢?本文将揭晓答案.Kafka 在 Yelp 的应用十分广泛.事实上,我们 每天通过各种集群发送数十亿条消息.在这背后,Kafka 使用 Zookeeper 完成各种分布式协调任务,例如

docker 搭建zookeeper集群和kafka集群

docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker appl