Filebeat + Logstash + Kafka + Elasticsearch 架构部署详细步骤

·

节点信息

hostname IP 软件
elk-web 10.0.30.30 kibana-7.9.1、kafka-eagle-2.0.5、cerebro-0.9.4、mariadb-10.2.15
elk-kafka01 10.0.30.31 zookeeper-3.4.13、kafka-2.12.1
elk-kafka02 10.0.30.32 zookeeper-3.4.13、kafka-1.0.0
elk-kafka03 10.0.30.33 zookeeper-3.4.13、kafka-1.0.0
elk-elasticsearch01 10.0.30.34 elasticsearch-7.9.1
elk-elasticsearch02 10.0.30.35 elasticsearch-7.9.1
elk-elasticsearch03 10.0.30.36 elasticsearch-7.9.1
elk-logstash 10.0.30.37 logstash-7.9.1

·

架构图

在这里插入图片描述
·

搭建过程中遇到的问题

所有服务器采用的是双网卡,第一个网卡(eth0)走的是默认路由,第二个网卡(eth1)配置了静态路由。路由信息如下图:
在这里插入图片描述
初次搭建时,所有侦听地址使用的是 eth1,在进行到测试 kafka 集群的步骤时,发现连接 zookeeper 和 kafka 时会比较慢,偶尔还会出现连接失败的现象。在安装 kafka-eagle 的步骤时,一直启动失败,观察日志发现了大量连接 zookeeper 的超时报错,最后将所有侦听地址修改为 eth0 后,没有出现此状况。

疑虑:在同一个网段中调用,不应该不走网关吗?为什么会出现这种情况?难道和 xshell 是在 172.168.20.0/24 网段有关系?

由于网络方面的知识欠缺,就没有深入研究此种状况网络方面的原因和修复方法,如果有知道的小伙伴欢迎评论区留言,感谢!!!。

·

部署 Kafka 集群

官网:http://kafka.apache.org/
由于 Kafka 依赖 zookeeper,所以先部署一套 zookeeper 集群。

·

部署 Zookeeper 集群

官网:https://zookeeper.apache.org/
下载地址:https://archive.apache.org/dist/zookeeper/

·

PS:zookeeper 集群配置中,除了 myid 必须唯一以外,其余配置均可一致。

·

1 配置 Java 环境

tar -xvf jdk-8u281-linux-x64.tar.gz -C /usr/local/
ln -vs /usr/local/jdk1.8.0_281/bin/java* /usr/bin/

·

2 下载&解压 Zookeeper

tar -xvf zookeeper-3.4.13.tar.gz -C /usr/local/

·

3 设置 JVM 堆大小

cd /usr/local/zookeeper-3.4.13

vim conf/java.env
#添加
#!/bin/sh
export JVMFLAGS="-Xms2g -Xmx2g"

·

4 创建配置文件(文件名任意即可,启动时默认加载 conf/zoo.cfg)

vim conf/zoo.cfg
#主要关注以下配置
tickTime=2000

#允许follower连接并同步至leader的时间,以tickTime为单位
initLimit=5
#允许follower与Zookeeper同步的时间,以tickTime为单位
syncLimit=2

#数据快照存储位置
dataDir=/data/zookeeper/zkdata/
#事务日志存储位置
dataLogDir=/data/zookeeper/zklog/

#侦听端口
clientPort=2181

#自动清除168小时之前的快照和事务日志
autopurge.purgeInterval=168

#zookeeper 集群组
server.31=10.0.30.31:2888:3888
server.32=10.0.30.32:2888:3888
server.33=10.0.30.33:2888:3888

·

5 创建依赖目录

mkdir -p /data/zookeeper/zkdata/ /data/zookeeper/zklog/

·

6 编辑 myid 文件

注意: myid 文件位于服务器的数据目录(dataDir)中,它由一行仅包含该机器的 id 文本组成。server.1 的 myid 将只包含文本 1 而没有其他内容,id 在 zookeeper 集群中必须是唯一的,并且应该在 1 到 255 之间。

# elk-kafka01 的 myid
echo 31 > /data/zookeeper/zkdata/myid
# elk-kafka02 的 myid
echo 32 > /data/zookeeper/zkdata/myid
# elk-kafka03 的 myid
echo 33 > /data/zookeeper/zkdata/myid

·

7 启动 Zookeeper

cd /usr/local/zookeeper-3.4.13

#./bin/zkServer.sh start conf/zoo.cfg
./bin/zkServer.sh start

#停止:./bin/zkServer.sh stop

·

8 验证 zk 集群是否成功

# 查看状态
./bin/zkServer.sh status

PS: 只启动第一个 zk 节点(myid 31),查看状态会提示 "Error contacting service. It is probably not running.";启动第二个 zk 节点(myid 32)后,查看状态会发现它的状态为 leader,这时返回查看第一个 zk 节点的状态会发现它的状态变为 follower;最后启动第三个 zk 节点(myid 33),查看状态会发现它的状态为 follower。当 leader 故障后,第三个节点会变为新 leader。

·

开始安装 Kafka

PS:kafka 集群配置中,除了 broker.id 和侦听地址(listeners)不相同外,其余配置均可一致。

·

1 配置 Java 环境

步骤忽略…。部署 zookeeper 集群时,已经配置。

·

2 下载&解压 Kafka

tar -xvf kafka_2.12-1.0.0.tgz -C /usr/local/

·

3 修改配置文件

cd /usr/local/kafka_2.12-1.0.0
vim config/server.properties
#### 主要修改以下配置 ####

#代理 ID,集群内唯一
broker.id=31

#侦听地址
listeners=PLAINTEXT://10.0.30.31:9092

#数据存储位置
log.dirs=/data/kafka/kkdata

#每个主题的默认日志分区数(这里3个节点,设置3个分区)
num.partitions=3

#zookeeper 集群列表
zookeeper.connect=10.0.30.31:2181,10.0.30.32:2181,10.0.30.33:2181

#### 下面的配置需要手动添加 ####
#开启自动创建主题
auto.create.topics.enable=true

#开启删除主题功能
delete.topic.enable=true

#最小副本数。此值大于 1 时,使用 --bootstrap-server 无法消费,会报错。
#+ 因为 kafka 生成的 __consumer_offsets 主题的副本数为 1。
min.insync.replicas=1

#并发数
queued.max.requests=500

#主题的默认副本数
default.replication.factor=2

#如果在这段时间内,follower没有同步leader的数据,那么将此follower从isr中删除
replica.lag.time.max.ms=10000

·

4 JVM 优化

官方建议使用最新发布的 JDK 1.8 版本,因为较旧的免费可用版本已经披露了安全漏洞。如果您决定使用 G1 收集器(当前的默认值),并且您仍然使用 JDK 1.7,请确保您使用的是 u51 或更新版本。

vim bin/kafka-server-start.sh
#修改
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
# 改为
...
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    # 官方测试的最大堆为:-Xmx6g,初始化堆为:-Xms6g
    export KAFKA_HEAP_OPTS="-Xmx4g -Xms4g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
    #JMX 端口供 kafka eagle 监控使用
    export JMX_PORT="8888"
fi
...

·

5 创建依赖路径

mkdir -p /data/kafka/kkdata

·

6 启动

./bin/kafka-server-start.sh -daemon config/server.properties
# -daemon:以守护进程方式启动

·

7 验证 Kafka 集群是否正常

# 创建 test 主题
bin/kafka-topics.sh --zookeeper 10.0.30.31:2181,10.0.30.32:2181,10.0.30.33:2181 \
--create \
--partitions 3 \
--replication-factor 2 \
--topic test
# 查看 test 主题详细信息
bin/kafka-topics.sh --describe \
--zookeeper 10.0.30.31:2181,10.0.30.32:2181,10.0.30.33:2181 \
--topic test
Topic:test	PartitionCount:3	ReplicationFactor:2	Configs:
	Topic: test	Partition: 0	Leader: 31	Replicas: 31,32	Isr: 31,32
	Topic: test	Partition: 1	Leader: 32	Replicas: 32,33	Isr: 32,33
	Topic: test	Partition: 2	Leader: 33	Replicas: 33,31	Isr: 33,31
# 为 test 主题生产数据
bin/kafka-console-producer.sh
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值