kafka配合ElasticStack技术栈的搭配使用

今日内容:

  • kafka生产环境调优;

  • kafka配合ElasticStack技术栈的搭配使用;

  • zookeeper集群部署;

  • zookeeper的ACL;

  • zookeeper的调优;

  • PB级别项目;

  • ES8集群搭建/elk; (待定...)

订阅1个的topic:

老男孩: 10

多个不同的主题分配如下: (linux82-elk: 3)

c1: 0 3 6 9

c2: 1 4 7

c3: 2 5 8

订阅多个的topic:

老男孩: 10 t1

Linux: 10 t2

Python: 10 t3

多个不同的主题分配如下: (linux82-elk: 3)

c1: t1_0 ... t2_0 ... t3_0 ...

c2: t1_1 ... t2_1 ...

c3: t1_2 ... t2_2 ...

订阅1个的topic:

老男孩: 10

多个不同的主题分配如下: (linux82-elk: 3)

c1: 0 1 2

c2: 3 4 5

c3: 6 7 8 9

10 / 3 = 3 .. 1 ===>

999 / 100 = 9 .. 99

JBOD ---> RAID 0

---> RAID

BOND ---> ...

注意的参数:

log.dirs

auto.create.topics.enable

zookeeper.connect

num.io.threads

ElasticStack集成kafka实战案例:

1.创建topic

kafka-topics.sh --bootstrap-server 10.0.0.103:9092 --create --topic oldboyedu-linux82-kafka-000001

2.使用filebeat收集日志到kafka集群:

cat > config/28-nginx-to-kafka.yaml <<EOF

filebeat.inputs:

  • type: log

paths:

  • /var/log/nginx/access.log*

json.keys_under_root: true

output.kafka:

写入kafka集群的地址

hosts:

  • 10.0.0.102:9092

  • 10.0.0.103:9092

写入集群的topic

topic: "oldboyedu-linux82-kafka-000001"

EOF

3.使用logstash收集kafka日志

cat > config/18-kafka-to-es.conf <<EOF

input {

kafka {

指定kafka的集群

bootstrap_servers => "10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092"

从哪个topic消费数据

topics => "oldboyedu-linux82-kafka-000001"

指定消费者组

group_id => "oldboyedu-linux82-logstash"

}

}

filter {

json {

source => "message"

remove_field => "tags","@version","ecs","agent","input","message"

}

geoip {

source => "clientip"

}

date {

match => [

"@oldboyedu-timestamp",

"yyyy-MM-dd'T'HH:mm:ssZ"

]

}

useragent {

source => "http_user_agent"

target => "oldboyedu-linux82-useragent"

}

}

output {

stdout {}

elasticsearch {

hosts => "10.0.0.101:9200","10.0.0.102:9200","10.0.0.103:9200"

index => "oldboyedu-linux82-project-kafka"

user => "elastic"

password => "123456"

}

}

EOF

zookeeper集群部署:

1.创建zookeeper的数据目录

install -d /oldboyedu/data/zk

data_rsync.sh /oldboyedu/data/zk/

2.修改单点zk的配置文件

vim /oldboyedu/softwares/zk/conf/zoo.cfg

...

定义最小单元的时间范围tick。

tickTime=2000

启动时最长等待tick数量。

initLimit=5

数据同步时最长等待的tick时间进行响应ACK

syncLimit=2

指定数据目录

dataDir=/oldboyedu/data/zk

监听端口

clientPort=2181

开启四字命令允许所有的节点访问。

4lw.commands.whitelist=*

server.ID=A:B:C:D

ID:

zk的唯一编号。

A:

zk的主机地址。

B:

leader的选举端口,是谁leader角色,就会监听该端口。

C:

数据通信端口。

D:

可选配置,指定角色。

server.101=10.0.0.101:2888:3888

server.102=10.0.0.102:2888:3888

server.103=10.0.0.103:2888:3888

3.同步数据

data_rsync.sh /oldboyedu/softwares/apache-zookeeper-3.8.0-bin/

4.创建myid文件

for ((host_id=101;host_id<=103;host_id++)) do ssh 10.0.0.{host_id} "echo {host_id} > /oldboyedu/data/zk/myid";done

5.所有节点启动zk服务

zkServer.sh start

zkServer.sh status

6.链接方式

zkCli.sh -server 10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181

zookeeper.connect=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181/oldboyedu-linux82-kafka3.2.1

zookeeper的leader选举流程:

myid:

唯一标识一个zookeeper节点。

zxid:

唯一事务的标识。用于记录唯一的写操作!

选举流程:

(1)相比较zxid,若zxid较大,则会成为新的leader;

(2)如果zxid比较不出来,则比较myid,myid较大者会有限成为新的leader;

使用zkWeb管理zookeeper集群:

1.运行zkWeb

java -jar zkWeb-v1.2.1.jar &>/dev/null &

2.访问webUI

略。

临时znode:

当前的会话退出时,znode会默认等待30秒后自动消失,等待时间是可以修改的哟。

持久的znode:

不会随着客户端的退出而删除znode。

docker

相关推荐
naierfengdian8 小时前
分布式风电助力乡村能源转型的技术路径
分布式·能源
DLYSB_9 小时前
Kafka 消费倾斜死锁与 Partition 掉队:我用 Rust 写了个“数据管道物理哨兵”,比 Grafana 报警快了 18 秒
rust·kafka·grafana·报警灯
hhzz9 小时前
《深度学习框架PyTorch入门与实践》系列:09-分布式与并行训练之DataParallel、DDP与Horovod
pytorch·分布式·深度学习
creator_Li10 小时前
Kafka消费者offset提交
kafka
TDengine (老段)11 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
城管不管1 天前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
apgk11 天前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
ly76891 天前
分布式一致性算法详解:从 2PC、3PC 到 Paxos、Raft、ZAB
分布式·算法
珠***格1 天前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源
ACP广源盛139246256731 天前
WAIC2026 国产算力浪潮@ACP#YLB3118 在算力矩阵中的存储定位与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件