kakfa2安装指北

前言


kafka
业务原因,最近在做kafka的迁移。本来是准备直接用阿里云的kafka,但是算了下成本,相同配置费用比自建要高2倍以上,经过讨论(没钱)后决定,使用自建kafka。这边文章记录下安装过程,便于之后翻阅。

kafka简介

Apache Kafka是一个分布式消息服务,旨在有效地处理大量实时数据。Kafka集群不仅具有高度的可伸缩性和容错能力,而且其吞吐量也比其他消息服务(如ActiveMQ和RabbitMQ)高得多。虽然它通常用作发布/订阅消息传递系统,同时kafka也可以作为日志收集的中转站,因为它为已发布的消息提供了持久存储。
Kafka就是一种发布-订阅模式的消息系统,允许一个或多个生产者发布消息,而不需要考虑消费者的数量或他们将如何处理消息。

Kafka主要设计目标如下:

  • 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
  • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
  • 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
  • 同时支持离线数据处理和实时数据处理。
  • Scale out:支持在线水平扩展

kafka集群部署


kafka集群

kafka部署

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

# useradd kafka
# wget "https://archive.apache.org/dist/kafka/2.6.0/kafka_2.12-2.6.0.tgz"
# tar xf kafka_2.12-2.6.0.tgz -C /usr/local/
# ln -s kafka_2.12-2.6.0 kafka

修改kafka配置文件(server.properties
):根据实际业务调整优化
添加kafka到系统服务里:

# more /usr/lib/systemd/system/kafka.service
[Unit]
Description=kafka
After=network.target

[Service]
Type=forking
LimitCORE=infinity
LimitNOFILE=infinity
LimitNPROC=infinity
Environment="CONFFILE=/usr/local/kafka/config/server.properties"
Environment=PATH=/data/jdk/bin:/data/jdk/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh -daemon $CONFFILE
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
User=kafka
Group=kafka

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload 
# systemctl start kafka

zookeeper部署

zk下载地址:https://zookeeper.apache.org/releases.html

# useradd zookeeper
# wget "https://www.strategylions.com.au/mirror/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz"
# tar xf apache-zookeeper-3.5.8-bin.tar.gz -C /usr/local/
# ln -s apache-zookeeper-3.5.8-bin zookeeper

修改zookeeper配置文件(zoo.cfg
):根据实际业务调整优化
zk集群需要设置myid!
添加zookeeper到系统服务里:

# more /usr/lib/systemd/system/zookeeper.service
[Unit]
Description=zookeeper
After=network.target

[Service]
Type=forking
LimitCORE=infinity
LimitNOFILE=infinity
LimitNPROC=infinity
Environment=ZOO_LOG_DIR=/data/zookeeper/logs
Environment=PATH=/data/jdk/bin:/data/jdk/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecRestart=/usr/local/zookeeper/bin/zkServer.sh restart
User=zookeeper
Group=zookeeper

[Install]
WantedBy=multi-user.target
# systemctl daemon-reload 
# systemctl start zookeeper

集群测试

集群安装完毕,对集群做一个简单测试,确保集群可用。
创建一个测试topic:

# sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic kafka2-test
...
Created topic "kafka2-test"
...

将hello字符串发送到topic kafka2-test:

# echo "Hello, World" | /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kafka2-test > /dev/null

查看消息:

# sh /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka2-test --from-beginning
...
Hello, World
...

能够查看到发送的消息,证明kafka集群正常。

后记

本文只是记录下kafka的一个安装过程,关于kafka的压测,下篇文章继续。如果有不对的地方,欢迎大家批评指正,共同学习。

 
posted @ 2020-11-18 18:13  我是一条最咸的咸鱼  阅读(126)  评论(0编辑  收藏  举报
返回顶部