filebeat+ELK+kafka集群搭建(三:kafka集群部署)

搭建kafka集群

Kafka官方文档:http://kafka.apache.org

1. 安装java

  Elasticsearch至少需要Java 8.版本的java,建议使用Oracle JDK 1.8.0_131版(官网建议)。如果没符合标准,请自行升级。本文只描述新安装java(由于本次安装kafka和elasticsearch在一台服务器上所以就直接安装java8)

[root@es-1 ~]# yum install -y java-1.8.0

[root@es-1 ~]# java -version

openjdk version "1.8.0_171"

OpenJDK Runtime Environment (build 1.8.0_171-b10)

OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
2. 下载安装kafka****(kafka_2.11-1.1.0****)

官方地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/1.1.0/kafka_2.11-1.1.0.tgz

百度云:链接:https://pan.baidu.com/s/1yW3h9P9sMvkBJP46mHIr7w 密码:57e1

3. 上传、解压

上传到/opt/elk目录

[root@es-1 ~]# cd /opt/elk/

[root@es-1 elk]# ls

kafka_2.11-1.1.0.tgz       

[root@es-1 elk]# tar -xvf kafka_2.11-1.1.0.tgz
4.****相关介绍

  kafka 采用集群方式部署,测试环境部署,所以我用两台机器模拟出3个节点的cluster 。kafka 依赖zookeeper,zookeeper 简称ZK,已经包含在kafka的tar包里,不需要而外下载安装,为啥要用三个节点呢?这个是zk的一个选举leader的特性,官方推荐是奇数个server,奇数个最少3个,这样坏一个还有两个,可以正常选举。(官方解释:对于复制模式,需要最少三个服务器,并且强烈建议您有奇数个服务器。如果只有两个服务器,那么,如果有一个服务器失败,则没有足够的机器形成多数法定人数。两个服务器本质上不如单个服务器稳定,因为有两个单点故障。)

由于是集群配置,配置之间几乎差不多,所以配置好一个,直接scp到其余节点就ok了,到了其余节点把关键参数修改一下就行了。

5. 配置zookeeper
①给zookeeper 创建data 目录和logs 目录
[root@es-1 ~]# mkdir /opt/elk/kafka/zookeeper/{data,logs} -p
②创建myid 文件
[root@es-1 ~]# echo 1 > /opt/elk/kafka/zookeeper/data/myid  #集群其他服务器需要改动
③配置zookeeper配置文件
[root@es-1 ~]# cd /opt/elk/kafka_2.11-1.1.0/config/

[root@es-1 config]# vim zookeeper.properties

#客户端连接端口


maxClientCnxns=0

#zk存放数据的目录,zk 需要有一个叫做myid的文件也是放到(必须)这个目录下

dataDir=/opt/elk/kafka/zookeeper/data                 

dataLogDir=/opt/elk/kafka/zookeeper/logs

clientPort=2181

#最大客户端连接数

maxClientCnxns=20

#是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔

tickTime=2000

#此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。

initLimit=10

#此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。

syncLimit=5

#server.myid=ip:followers_connect to the leader:leader_election # server 是固定的,myid 是需要手动分配,第一个端口是follower是链接到leader的端口,第二个是用来选举leader 用的port

server.1=192.168.205.155:2888:3888

server.2=192.168.205.156:2888:3888

server.3=192.168.205.157:2888:3888

注意:如果有防火墙记得开放相应端口

6. 配置kafka
[root@es-1 ~]# cd /opt/elk/kafka_2.11-1.1.0/config/

[root@es-1 config]# vim server.properties

#每个server需要单独配置broker id,如果不配置系统会自动配置。

broker.id=0 ##集群其他服务器需要改动

#消费者的访问端口,logstash或者elasticsearch

listeners=PLAINTEXT://192.168.205.155:9092 ##集群其他服务器需要改动

#接收和发送网络信息的线程数

num.network.threads=3

#服务器用于处理请求的线程数,其中可能包括磁盘I/O。

num.io.threads=8

#套接字服务器使用的发送缓冲区(SO_SNDBUF)

socket.send.buffer.bytes=102400

#套接字服务器使用的接收缓冲区(SO_RCVBUF)

socket.receive.buffer.bytes=102400

#套接字服务器将接受的请求的最大大小(防止OOM)。

socket.request.max.bytes=104857600

#以逗号分隔的目录列表,其中存储日志文件。

log.dirs=/usr/local/kafka/logs #此目录要先创建,不会自动创建。(如果不行就关闭此选项)

num.partitions=1

num.recovery.threads.per.data.dir=1

offsets.topic.replication.factor=1

transaction.state.log.replication.factor=1

transaction.state.log.min.isr=1
zookeeper.connect=192.168.205.155:2181,192.168.205.156:2181,192.168.205.157:2181

zookeeper.connection.timeout.ms=6000

group.initial.rebalance.delay.ms=0
7. 创建kafka 日志文件
[root@es-1 ~]# mkdir -p /usr/local/kafka/logs/
8.****配置集群其他节点

只需要把配置好的安装包直接分发到不同的机器上,然后修改zookeeper的myid,kafka的broker.id和listeners就可以了。

9. 启动kafka 集群(顺序是先启动zk ,然后再启动kafka
①启动zk
[root@es-1 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &

[root@es-2 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &

[root@es-3 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &
②验证是否正确

#安装nc

[root@es-1 ~]# yum -y install nc              

\#使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。

[root@es-1 ~]# echo ruok|nc 127.0.0.1 2181

imok[root@es-1 ~]#

#查看zk的配置,配置正常返回证明zk service 正常

[root@es-1 ~]# echo conf | nc 127.0.0.1 2181

clientPort=2181

dataDir=/opt/elk/kafka/zookeeper/data/version-2

dataLogDir=/opt/elk/kafka/zookeeper/logs/version-2

tickTime=2000

maxClientCnxns=20

minSessionTimeout=4000

maxSessionTimeout=40000

serverId=1

initLimit=10

syncLimit=5

electionAlg=3

electionPort=3888

quorumPort=2888

peerType=0

#stat 可以查看集群状态

[root@es-1 ~]# echo stat|nc 127.0.0.1 2181

Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT

Clients:

 /127.0.0.1:45542[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/11

Received: 1025

Sent: 1035

Connections: 1

Outstanding: 0

Zxid: 0x100000074

Mode: follower

Node count: 28

#通过lsof 命令查看端口是否正常启动

[root@es-1 ~]# lsof -i:2181

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

java 29022 root 94u IPv6 496186 0t0 TCP *:eforward (LISTEN)

# 还有如下常用命令:

ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

可以通过命令:

echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
echo kill | nc 127.0.0.1 2181 ,关掉server
echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相

③启动kafka
[root@es-1 ~]#nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &

[root@es-2 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &

[root@es-3 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &
④检测kafka

#测试kafka 工作是否正常,新建一个topic

[root@es-1 bin]# /opt/elk/kafka_2.11-1.1.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

Created topic "test".

提示以下内容证明没有问题 Created topic "test".

#通过list 来查看

[root@es-1 ~]# /opt/elk/kafka_2.11-1.1.0/bin/kafka-topics.sh --zookeeper 192.168.205.155:2181 --list

test
⑤报错解决
1)如果无法启动zk集群或者kafka集群
解决办法:
配置文件可能写错,注意myid和配置文件要一致。
或者看kafka配置文件的log.dirs=对应的目录是否存在

上一篇:filebeat+ELK+kafka集群搭建(二:filebeat部署)
下一篇:filebeat+ELK+kafka集群搭建(四:logstash部署)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容