当前位置: 首页 > news >正文

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


    

http://www.lryc.cn/news/157455.html

相关文章:

  • 对极几何与三角化求3D空间坐标
  • 英语语法笔记
  • ES6的面向对象编程以及ES6中的类和对象
  • ConfigMaps in K8s
  • 《机器人学一(Robotics(1))》_台大林沛群 第 6 周 【轨迹规划_直线转折处抛物线平滑】Quiz 6
  • 关于vscode的GitLens插件里的FILE HISTORY理解
  • 通过idea实现springboot集成mybatys
  • 力扣(LeetCode)算法_C++——移位字符串分组
  • Vue2 与Vue3的区别?面试题
  • java代码:Random和Scanner应用的小例子-猜数字小游戏
  • python调用git出错:ImportError: Failed to initialize: Bad git executable.
  • 【C语言】入门——指针
  • C#_预处理指令
  • 容器命令(docker)
  • Vue3 ElementPlus el-cascader级联选择器动态加载数据
  • leetcode分类刷题:栈(Stack)(一、字符串相邻元素删除类型)
  • 你还在找淘宝商品信息查询的接口吗?
  • dll修复精灵,dll修复工具下载方法分享,mfc140u.dll缺失损坏一键修复
  • [LINUX使用] iptables tcpdump
  • 百度文心一率先言向全社会开放 应用商店搜“文心一言”可直接下载
  • 【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理
  • 【vue】使用无障碍工具条(详细)
  • java实现命令模式
  • 【PowerQuery】PowerQuery学习路径
  • JDK7多线程并发环境HashMap死循环infinite loop,CPU拉满100%,Java
  • Linux下的系统编程——认识进程(七)
  • 2023年9月CSPM-3国标项目管理中级认证报名,找弘博创新
  • 使用ChatGLMTokenizer处理json格式数据
  • Redis基础特性及应用练习-php
  • Numpy知识点回顾与学习