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