跳转至

搭建日志分析平台

为增加 ELK 集群的运行效率,一般建议在 k8s 集群外使用物理机部署 ELK 集群。

zookeeper 集群部署

zookeeper 介绍

Zookeeper 概述

Zookeeper 常被形象地称为 “动物园管理员”,主要负责管理诸如 Hadoop(可类比为大象)、Hive(蜜蜂)、Pig(小猪)以及 Kafka 消息系统等。同时,Apache Hbase 和 Apache Solr 的分布式集群也都用到了 Zookeeper。Zookeeper 是一个分布式且开源的程序协调服务,属于 Hadoop 项目下的一个子项目。其主要提供的功能包括配置管理、名字服务、分布式锁以及集群管理等。

Zookeeper 的主要作用

(1)节点选举:选举出 Master 节点。当主节点出现故障时,从节点会接手工作,并且确保这个主节点是唯一的,此即首脑模式,从而保障集群的高可用性。 (2)统一配置文件管理:仅需部署一台服务器,就能够将相同的配置文件同步更新到其他所有服务器。例如,可对 Hadoop、Kafka、Redis 等进行统一配置修改。 (3)发布与订阅消息:类似消息队列,发布者将数据存储在 znode 节点上,订阅者读取该数据。 (4)集群管理:确保集群中数据的一致性。

zookeeper 角色:

leader 领导者 - 负责发起选举和决议的,更新系统状态 follower 跟随着 - 接收客户端的请求,给客户端返回结果,在选主的过程参与投票 observer 观察者 - 接收客户端的连接,同步leader状态,不参与选主

Zookeeper 的选举机制为过半机制,安装的台数应为奇数台(否则无法实现过半机制)。一般来说,若有 10 台服务器,需安装 3 台 Zookeeper。

zookeeper 安装

1. 下载安装包

1. 下载安装包
cd /opt
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
tar -xf apache-zookeeper-3.9.2-bin.tar.gz 
mv apache-zookeeper-3.9.2-bin /opt/zookeeper

2. 在 /opt/zookeeper 目录下创建数据文件目录和日志文件目录

2. 下载目录
mkdir /opt/zookeeper/zkData
mkdir /opt/zookeeper/zkLog

3. 复制配置文件并修改

1. 下载目录
cd /opt/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
2. 添加配置
dataDir=/opt/zookeeper
dataLogDir=/opt/zookeeper/zkLog
server.1=10.10.0.2:2188:3888
server.2=10.10.0.4:2188:3888
server.3=10.10.0.5:2188:3888

4. 启动 zookeeper

1. 第一台机器
apt install openjdk-19-jdk-headless -y
cd /opt/zookeeper/
echo 1 > myid
./bin/zkServer.sh start conf/zoo.cfg
2. 第二台机器
apt install openjdk-19-jdk-headless -y
cd /opt/zookeeper/
echo 2 > myid
./bin/zkServer.sh start conf/zoo.cfg
3. 第三台机器
apt install openjdk-19-jdk-headless -y
cd /opt/zookeeper/
echo 3 > myid
./bin/zkServer.sh start conf/zoo.cfg

5. 测试 zookeeper

cd /opt/zookeeper/bin
./zkCli.sh -server 127.0.0.1:2181

============= zookeeper 终端 ================

## 创建节点,以及关联的字符串
[zk: 127.0.0.1:2181(CONNECTED) 2] create /test "test1"
Created /test

## 获取刚创建的节点信息
[zk: 127.0.0.1:2181(CONNECTED) 3] get /test
test1

## 修改节点信息
[zk: 127.0.0.1:2181(CONNECTED) 4] set /test "test222"


## 再次获取修改后的信息
[zk: 127.0.0.1:2181(CONNECTED) 5] get /test 
test222

kafka 集群部署

Kafka 简介

Kafka 是一个高吞吐量的分布式发布订阅消息系统,即便是在普通硬件条件下,也能够支持每秒数百万条消息的处理。它采用生产者消费者模型。

kafka 下载地址:https://kafka.apache.org/downloads

相关术语

  • Broker:Kafka 集群由一个或多个服务器组成,这些服务器被称为 Broker。
  • Topic:每一条发布到 Kafka 集群的消息都有一个类别,这个类别即 Topic。从物理层面看,不同 Topic 的消息是分开存储的;从逻辑层面讲,一个 Topic 的消息虽然存储在一个或多个 Broker 上,但用户只需指定消息的 Topic 就可以进行生产或消费数据,而无需关心数据具体存储在哪里。
  • Partition:Partition 是物理概念,每个 Topic 包含一个或多个 Partition。
  • Producer:负责向 Kafka Broker 发布消息。
  • Consumer:消息消费者,即向 Kafka Broker 读取消息的客户端。

Kafka 安装

1. 下载安装包

1. 下载安装包
cd /opt
wget https://downloads.apache.org/kafka/3.8.0/kafka_2.12-3.8.0.tgz 
tar -xf kafka_2.12-3.8.0.tgz -C /opt/  --transform 's/^kafka_2.12-3.8.0/kafka/'

2. 复制配置文件并修改

cd /opt/kafka/config
cp server.properties server.properties.bak
vim server.properties
1. 第一台机器 添加配置
broker.id=0
listeners=PLAINTEXT://10.10.0.2:9092
zookeeper.connect=10.10.0.2:2181,10.10.0.4:2181,10.10.0.5:2181
2. 第二台机器 添加配置
broker.id=1
listeners=PLAINTEXT://10.10.0.4:9092
zookeeper.connect=10.10.0.2:2181,10.10.0.4:2181,10.10.0.5:2181
3. 第三台机器 添加配置
broker.id=2
listeners=PLAINTEXT://10.10.0.5:9092
zookeeper.connect=10.10.0.2:2181,10.10.0.4:2181,10.10.0.5:2181

3. 启动 kafka

1. 三台机器都执行
apt install openjdk-19-jdk-headless -y
cd /opt/kafka/
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
2. 测试集群是否正常
# 1. 登录客户端
/opt/zookeeper/bin/zkCli.sh -server 10.10.0.2:2181

# 2. 查看 /brokers/ids
ls /brokers/ids

# 3. 查看结果,有三个节点正常
[0, 1, 2]

4. 测试 kafka 是否可以正常生产和消费消息

1. 创建一个名字是 quickstart-events 的 topic
/opt/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 10.10.0.2:9092
2. 开启生产者服务向 topic 中发送消息
/opt/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 10.10.0.2:9092

```yaml title="3. 开启消费者消费消息"
/opt/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 10.10.0.2:9092
4. 删除 topic
/opt/kafka/bin/kafka-topics.sh --bootstrap-server 10.10.0.2:9092 --delete --topic quickstart-events

========== 分割线(下面废弃) ==========

1

















































































































































1

kafka 是高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

kafka 下载地址:https://kafka.apache.org/downloads

修改 kafka 配置

/usr/local/kafka/config/server.properties 核心配置

/usr/local/kafka/config/server.properties 核心配置
#broker实例标识,集群时要保证唯一
broker.id=1
# kafka存放数据的目录
log.dirs=/tmp/kafka-logs
# 注册中心zookeeper的地址
zookeeper.connect=localhost:2181 
##超时将被删除,也就是说7天之前的数据将被清理掉。
log.retention.hours=168
# 是否允许自动创建 topic
delete.topic.enable=true
listeners=PLAINTEXT://192.168.3.40:9092

num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
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
log.retention.check.interval.ms=300000
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

启动 zookeeper 和 kafka

1、zk 启动
nohup /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
2、kafka 启动
nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &

测试 kafka 启动是否成功

1. 检测 zk 是否启动成功
ps -ef|grep zookeeper
2. 检测 kafka 启动情况
ps -ef|grep kafka

测试是否可以正常生产和消费消息

1. 创建一个名字是 quickstart-events 的 topic
/usr/local/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.3.40:9092
2. 开启生产者服务向 topic 中发送消息
/usr/local/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.3.40:9092
3. 开启消费者消费消息
/usr/local/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.3.40:9092
4. 删除 topic
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.3.40:9092 --delete --topic quickstart-events

kafka 其他的查询命令汇总

# 查询现有的 topic
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.3.40:9092 --list

#查询具体的 topic 的信息
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.3.40:9092 --topic quickstart-events --describe

#查询消费者组的信息
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.3.40:9092 --list

#删除topic
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.3.40:9092 --delete --topic quickstart-events

image-20240718133954397

搭建过程中的异常

Kafka 的消费者无法消费数据,生产者可以生产数据的处理
#查询 kafka 的日志位置
egrep -v "^*#|^$" /usr/local/kafka/config/server.properties