Linux下kafka单机版搭建

1.zookeeper的安装

这里使用3.6.4版本

前提:服务器已经安装了jdk,zookeeper运行需要jdk环境

1.1创建放zookeeper的目录

#创建目录
mkdir -p /usr/local/zookeeper

#赋予权限
chmod 777 /usr/local/zookeeper

1.2安装包的下载

#这里推荐去官网下载
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz

1.3放置安装包并解压

#切换到创建的目录
cd /usr/local/zookeeper

#将下载的包放在该目录

#解压该目录
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz

#重命名
mv apache-zookeeper-3.6.4-bin zookeeper-3.6.4

1.4修改配置文件

#进入配置文件目录
cd /usr/local/zookeeper/zookeeper-3.6.4/conf

#复制原有的配置文件并改名
cp zoo_sample.cfg zoo.cfg

#修改配置文件
vim zoo.cfg

#内容如下:
# 数据文件夹
dataDir=/usr/local/zookeeper/zookeeper-3.6.4/data
    
# 日志文件夹
dataLogDir=/usr/local/zookeeper/zookeeper-3.6.4/logs

# 客户端访问 zookeeper 的端口号
clientPort=2181



#退出保存zoo.cfg
:wq

1.5添加环境变量

#编辑环境变量文件
vim /etc/profile
#尾部添加如下内容
export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.6.4/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH

#退出保存
:wq

#重新执行一下
source /etc/profile

1.6测试zookeeper启动

#进入bin目录
cd /usr/local/zookeeper/zookeeper-3.6.4/bin

#启动服务
zkServer.sh start

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.6.4/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
出现这个就是成功了

#查看状态
zkServer.sh status

#关闭服务
zkServer.sh stop

#重启服务
zkServer.sh restart

2.kafka的安装

2.1下载kafka

下载地址:Apache Kafka

在这里插入图片描述

这里两个,第一个带源码我们可以下载下来查看对应的zookeeper版本

解压后的gradle/dependencies.gradle文件里面有zookeeper版本号

2.2创建目录

mkdir -p /opt/kafka  #y用于存放kafka的解压包

mkdir -p /opt/kafka/kafka_data #用于存放kafka的数据

mkdir -p /opt/kafka/kafka_log #用于存放kafka的日志

2.3将kafka解压

将下载的kafka放在/opt/kafka

#解压
tar -zxvf kafka_2.12-3.4.1.tgz

2.4配置kafka服务

cd /opt/kafka/kafka_2.12-3.4.1/config

vim server.properties

#修改一下参数
broker.id=0
#端口号
port=9092   
#服务器IP地址,修改为自己的服务器IP
host.name=localhost
#日志存放路径,上面创建的目录
log.dirs=/opt/kafka/kafka_log
#zookeeper地址和端口,单机配置部署,localhost:2181
zookeeper.connect=localhost:2181         

2.5启动kafka

/opt/kafka/kafka_2.12-3.4.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.12-3.4.1/config/server.properties

2.6测试

前提开启两个终端,一个生产者,一个消费者

2.6.1生产者

cd /opt/kafka/kafka_2.12-3.4.1/bin

./kafka-console-producer.sh --broker-list localhost:9092 --topic test

2.6.2消费者

cd /opt/kafka/kafka_2.12-3.4.1/bin

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

3.脚本设计

上面都是手动启动,这里可以考虑写一个脚本,自动去启动

3.1启动脚本

cd /opt/kafka/kafka_2.12-3.4.1/bin

vim kafka_start.sh

#内容如下:

#!/bin/bash
#
echo "启动zookeeper服务..."
sh /usr/local/zookeeper/zookeeper-3.6.4/bin/zkServer.sh start
sleep 5
echo "启动kafka服务..."
/opt/kafka/kafka_2.12-3.4.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.12-3.4.1/config/server.properties &i

3.2关闭脚本

cd /opt/kafka/kafka_2.12-3.4.1/bin

vim kafka_stop.sh

#内容如下:

#!/bin/bash
echo "启动zookeeper服务..."
sh /usr/local/zookeeper/zookeeper-3.6.4/bin/zkServer.sh stop
sleep 5
echo "启动kafka服务..."
/opt/kafka/kafka_2.12-3.4.1/bin/kafka-server-stop.sh /opt/kafka/kafka_2.12-3.4.1/config/server.properties 

3.3给脚本赋予权限

chmod +x kafka_start.sh
 
chmod +x kafka_stop.sh

3.4设置开机自启

vi /etc/rc.d/rc.local #编辑,在最后添加一行
sh /opt/kafka/kafka_2.12-3.4.1/kafka_start.sh & #设置开机自动在后台运行脚本

4.内网穿透

在kafka的配置文件server.properties里面设置如下

############################# Socket Server Settings #############################

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://:9092
listeners=PRIVATE://0.0.0.0:9093,PUBLIC://0.0.0.0:9092


auto.create.topics.enable=true

# Hostname and port the broker will advertise to producers and consumers. If not set, 
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
#advertised.listeners=PLAINTEXT://your.host.name:9092
#修改为外网ip
advertised.listeners=PRIVATE://192.168.150.203:9093,PUBLIC://10.140.211.88:9092

inter.broker.listener.name=PRIVATE
listener.security.protocol.map=PRIVATE:PLAINTEXT,PUBLIC:PLAINTEXT

相关推荐

  1. 软件安装-Linuxredis(单机)

    2024-04-23 02:40:01       49 阅读
  2. 单机k8s

    2024-04-23 02:40:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 02:40:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 02:40:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 02:40:01       87 阅读
  4. Python语言-面向对象

    2024-04-23 02:40:01       96 阅读

热门阅读

  1. 什么是掩码补丁位置?

    2024-04-23 02:40:01       56 阅读
  2. 图标字体库——Font Awesome

    2024-04-23 02:40:01       39 阅读
  3. MySQL用户和权限管理深入指南

    2024-04-23 02:40:01       30 阅读
  4. 机器学习——逻辑回归

    2024-04-23 02:40:01       36 阅读
  5. 如何使用React.js从头开始构建TODO应用

    2024-04-23 02:40:01       32 阅读
  6. hbase基础(三)

    2024-04-23 02:40:01       36 阅读
  7. FreeLearning PHP 译文集翻译完成

    2024-04-23 02:40:01       40 阅读
  8. ELB 后端主机异常

    2024-04-23 02:40:01       34 阅读
  9. JVM面试题

    2024-04-23 02:40:01       37 阅读
  10. 浏览器乱码的原因是什么?如何解决?

    2024-04-23 02:40:01       39 阅读