安装Emqx5
大约 3 分钟
安装Emqx5
安装Emqx只能安装5.0.19版本
更新ubuntu
sudo apt-get update
sudo apt-get upgrade
下载 emqx-5.0.19-ubuntu20.04-amd64.tar.gz
wget https://packages.emqx.io/emqx-ce/v5.0.19/emqx-5.0.19-ubuntu20.04-amd64.tar.gz
安装
mkdir -p emqx && tar -zxvf emqx-5.0.19-ubuntu20.04-amd64.tar.gz -C emqx
启动
./emqx/bin/emqx start
设置自启动(有问题)
cd cd /lib/systemd/system/ 然后touch emqx.service
[Unit]
# Zookeeper服务的描述
Description=emqx Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target kafka.service
[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking
# 启动环境参数
# 启动命令
ExecStart=/root/emqx/bin/emqx start
# 停止命令
ExecStop=/root/emqx/bin/emqx stop
[Install]
WantedBy=multi-user.target
#系统重新加载服务
systemctl daemon-reload
#开机自启动
systemctl enable emqx.service
#启动命令:systemctl start emqx.service
#停止命令:systemctl stop emqx.service
#查看状态命令:systemctl status emqx.service
安装kafka
下载链接
https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
解压
tar -xzf kafka_2.13-3.6.1.tgz -C /usr/kafka
cd kafka_2.13-3.6.1
启动&停止
#Start the ZooKeeper service
/usr/kafka/kafka_2.13-3.6.1/bin/zookeeper-server-start.sh -daemon /usr/kafka/kafka_2.13-3.6.1/config/zookeeper.properties # (-daemon 后台运行)
/usr/kafka/kafka_2.13-3.6.1/bin/zookeeper-server-stop.sh
# Start the Kafka broker service
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-start.sh -daemon /usr/kafka/kafka_2.13-3.6.1/config/server.properties
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-stop.sh
创建话题
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-topics.sh --create --bootstrap-server 172.16.217.107:9092 --replication-factor 1 --partitions 1 --topic mqtt-topic
测试收发
#生产
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-console-producer.sh --broker-list 172.16.217.107:9092 --topic mqtt-topic
#消费
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-console-consumer.sh --bootstrap-server 172.16.217.107:9092 --topic mqtt-topic --from-beginning
设置开机自启动
cd cd /lib/systemd/system/ 然后touch zookeeper.service
[Unit]
# Zookeeper服务的描述
Description=Zookeeper Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target
[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking
# 启动环境参数
# 此脚本指定了Zookeeper日志和Java的目录
Environment=ZOO_LOG_DIR=/root/zookeeper/logs/
#Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# 启动命令
ExecStart=/usr/kafka/kafka_2.13-3.6.1/bin/zookeeper-server-start.sh -daemon /usr/kafka/kafka_2.13-3.6.1/config/zookeeper.properties
# 停止命令
ExecStop=/usr/kafka/kafka_2.13-3.6.1/bin/zookeeper-server-stop.sh
[Install]
WantedBy=multi-user.target
然后touch kafka.service
[Unit]
# Zookeeper服务的描述
Description=KafKa Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target zookeeper.service
[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking
# 启动环境参数
# 此脚本指定了Zookeeper日志和Java的目录
Environment=ZOO_LOG_DIR=/root/kafka/logs/
#Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# 启动命令
ExecStart=/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-start.sh -daemon /usr/kafka/kafka_2.13-3.6.1/config/server.properties
# 停止命令
ExecStop=/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
#开机自启动
systemctl enable zookeeper.service
systemctl enable kafka.service
#系统重新加载服务
systemctl daemon-reload
#启动命令:systemctl start zookeeper.service
#启动命令:systemctl start kraft.service
#停止命令:systemctl stop zookeeper.service
#停止命令:systemctl stop kraft.service
#查看状态命令:systemctl status zookeeper.service
#查看状态命令:systemctl status kraft.service
Kafka with KRaft(不支持)
Generate a Cluster UUID
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
Format Log Directories
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
Start the Kafka Server
/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-start.sh /usr/kafka/kafka_2.13-3.6.1/config/kraft/server.properties
Once the Kafka server has successfully launched, you will have a basic Kafka environment running and ready to use.
设置服务自启动
[Unit]
# Zookeeper服务的描述
Description=kafka KRaft Service
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network-online.target
Wants=network-online.target
[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking
# 启动环境参数
# 此脚本指定了kafka KRaft日志和Java的目录
SuccessExitStatus=143
# 启动命令
ExecStart=/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-start.sh -daemon /usr/kafka/kafka_2.13-3.6.1/config/kraft/server.properties
# 停止命令
ExecStop=/usr/kafka/kafka_2.13-3.6.1/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
#系统重新加载服务
systemctl daemon-reload
#开机自启动
systemctl enable kraft.service
#启动命令:systemctl start kraft.service
#停止命令:systemctl stop kraft.service
#查看状态命令:systemctl status kraft.service
设置emqx参数
admin
public
修改密码:Qazwsx123
安装kafka插件
设置环境变量
export KAFKA_ADDRESS_LIST=192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092
export KAFKA_TOPIC=mqtt-topic
export KAFKA_QUERY_API_VERSIONS=true
export KAFKA_RECONNECT_COOL_DOWN_SECONDS=10
安装插件
_build/default/emqx_plugrel/emqx_plugin_kafka-5.0.0.tar.gz
添加客户端认证访问控制
http://172.16.217.108:48080/admin-api/iot/auth/connect
{
"clientId": "${clientid}",
"password": "${password}",
"username": "${username}"
}