Kafka 配置外网访问

说明


Kafka 有的时候会跨机房接收消息,本地开发机也需要向远程服务器发一些消息,默认是不支持外连的,所以需要配置一下远程访问。

Kafka 服务器 host 修改

查看 hostname,查看内网 IP 并记录

cat /etc/hostname
# vm172-31-110-6.ksc.com #

ifconfig

编辑 host 文件

vim /etc/hosts
# 添加在文件底部 #
172.31.110.6 vm172-31-110-6.ksc.com

Kafka 配置文件修改

修改 server.properties 配置文件,具体目录视情况而定。

vim /opt/kafka_2.12-2.2.0/config/server.properties

# 修改 listeners #
listeners=PLAINTEXT://vm172-31-110-6.ksc.com:9092

需要留意一下 advertised.listeners 要注释掉,listeners 才会有效。

修改 zookeeper.connect 配置,如果 Zookeeper 和 Kafka 不在同一台机器,请配置 Zookeeper 地址。

zookeeper.connect=vm172-31-110-6.ksc.com:2181

客户端 host 配置

在客户端机器修改 host 文件映射到远程外网 IP,内网的 consumer 机器请配置内网 IP 映射。

xxx.xx.xx.xx  vm172-31-110-6.ksc.com

Apache Kafka 安装步骤

概览

安装过程总共分为 3 大块,第一 Java 环境不必多说,第二 Zookeeper 安装,第三 Kafka 安装。

概念了解

Kafka 有几个重要的概念需要先了解一下

名词 解释
broker 可以理解为 Kafka 所在的服务器
ZooKeeper 分布式服务框架在 Kafka 中的作用主要负责保存 topic,partition 元数据,和对 broker 的监控及治理,以及 partition 的 leader 选举(partition 可以有多个副本,但是只有一个处于工作状态,副本只是负责同步数据,当 leader partition 死掉了,会把一个副本的 partition 升级为 leader )
topic 主题,可以理解为消息的分类
partition 分区,从大的概念来说 topic 中的消息都是存放在 patition 中,一个 topic 可以有多个 partition, 一个 partition 可以有多个副本
offset 偏移量,在 Kafka 中 offset 是 partition 中消息序列号,可以认为是这个消息的唯一标识
segment 多个大小相等的 segment file (段) 组成了一个 partition

Java 环境安装

https://yusure.cn/backend/320.html

ZooKeeper框架安装

下载ZooKeeper

官网:http://zookeeper.apache.org/releases.html
请选择新版本,替换下载链接,目前最新版本 zookeeper-3.4.14

cd /opt
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar zvxf zookeeper-3.4.14.tar.gz

创建配置文件

cd zookeeper-3.4.14
# 创建数据目录 #
mkdir data

cd conf
cp zoo_sample.cfg zoo.cfg

修改 dataDir

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/zookeeper-3.4.14/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

切到 ZK 安装目录,接下来就可以启动 zookeeper 服务器了。

启动 ZooKeeper 服务器

bin/zkServer.sh start

启动响应:

[root@vm172-31-110-6 zookeeper-3.4.14]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

启动 CLI 连接 ZK,测试连通性,会看到 Welcome to ZooKeeper! 的回显。

bin/zkCli.sh

停止 Zookeeper 服务器

bin/zkServer.sh stop

Apache Kafka安装

下载 Kafka

官方下载地址:http://archive.apache.org/dist/kafka/

cd /opt
wget http://archive.apache.org/dist/kafka/2.2.0/kafka_2.12-2.2.0.tgz
tar zvxf kafka_2.12-2.2.0.tgz
cd /opt/kafka_2.12-2.2.0

配置文件

config/server.properties

启动 Kafka

bin/kafka-server-start.sh config/server.properties
# 生产环境,后台运行 #
cd /opt/kafka_2.12-2.2.0 && nohup bin/kafka-server-start.sh config/server.properties &

停止 Kafka

cd /opt/kafka_2.12-2.2.0 && bin/kafka-server-stop.sh config/server.properties

基本操作

创建一个名为 Hello-Kafka 的主题,其中包含一个分区和一个副本因子。
创建 topic 后,您可以在终端窗口中获取通知,可以在 /tmp/kafka-logs 中看到创建 topic 的日志。

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Hello-Kafka

要获取 Kafka 服务器中的 topic 列表

bin/kafka-topics.sh --list --zookeeper localhost:2181

启动生产者以发送消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

启动消费者以接收消息

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic Hello-Kafka --from-beginning

删除主题

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka

界面管理工具

Kafka Manager https://yusure.cn/backend/310.html

总结

Apache Kafka 教程 https://www.w3cschool.cn/apache_kafka/
以上是 Kafka 安装和一些使用的简单操作,生产环境 Kafka Cluster 的配置和运维比这复杂一些,需要修改不同的配置文件。

Kafka Manager 编译 + 部署运行

准备条件

本地有 sbt 环境
Java 8+

下载

cd /usr/local/src
git clone https://github.com/yahoo/kafka-manager

修改下载源

由于编译时需要用到sbt下载依赖jar包, sbt默认又是用的国外源, 所以下载速度奇慢, 建议将sbt的下载源改成阿里云的私有云。
安装好sbt后, 用户目录下一般都会有 .sbt 这个文件夹, 这个文件夹是隐藏的, ls -a 可以看到。

cd ~/.sbt/
vim repositories

在根目录下新建文件 repositories, 并加入如下内容:

[repositories]
public: http://maven.aliyun.com/nexus/content/groups/public/
typesafe:http://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin:http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
sonatype-oss-releases

sonatype-oss-snapshots

- 阅读全文 -