Skip to content

Commit 9a2fbe0

Browse files
committed
2.1.0
1 parent 314ea6b commit 9a2fbe0

114 files changed

Lines changed: 6191 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# FAQ
2+
3+
4+
## 集群新增节点、下线节点需要重启集群吗?
5+
6+
当集群新增节点时候,只需要新增的节点配置已启动集群节点的任一IP,即可完成集群的动态接入,无需重源节点机器
7+
8+
## FluxMQ同一个ClientID集群中可以重复连接吗?
9+
10+
FluxMQ默认同一集群采用互踢策略,一个ClientID同一时间只允许一个在线,后者会将前者剔除下线
11+
12+
## 部署集群安全组需要打开哪些端口?
13+
- 48880 集群eventbus内部通信端口
14+
- 48500 缓存同步端口
15+
- 47100 集群内部通信端口
16+
17+
18+
## 支持proxy_protocol透传客户端ip等信息吗?
19+
20+
FluxMQ支持开启proxy_protocol解析,解析后的连接的ip会自动被proxy_protocol头携带的源IP覆盖
21+
22+
```YAML
23+
mqtt: # tcp配置
24+
port: 1887 # mqtt端口号
25+
wiretap: false # 二进制日志 前提是 logLevel = DEBUG
26+
messageMaxSize: 4194304 # 接收消息的最大限制 默认4194304(4M)
27+
proxy: false # 默认false, 支持HAProxy协议解析
28+
options:
29+
SO_BACKLOG: 2000
30+
```
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# LICENSE
2+
3+
## License启动
4+
5+
获取License后,放在项目启动的目录,服务器会自动加载License信息。FluxMQ默认提供100连接的免费接入,安装包下载后自带免费License,如需更多接入数请联系我们获取商业License!
6+
7+
## 联系方式
8+
9+
商务电话(微信):13218040662
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# 介绍
2+
3+
ACL访问控制可以用来控制客户端的发布订阅权限,保证数据的安全传输。
4+
5+
### ACL拦截规则
6+
![acl.png](@site/static/images/acl/acl.png)
7+
8+
9+
当客户端建立连接后,会加载ACL缓存(默认60S定时刷新),客户端发布订阅后,会根据其主题匹配是否存在`deny`规则,如果不存在`deny`规则,则ACl检查通过
10+
,如果存在Deny规则,再去检查是否存在`allow`规则,如果存在`allow`规则,acl检查通过,否则失败。
11+
12+
13+
## ACL参数
14+
15+
16+
| **配置项** | **释义** |
17+
|---------|-----------------------------------------------------------------------------|
18+
| acl_strategy | 控制策略: <br/> allow 允许 <br/> deny 拒绝 |
19+
| acl_type | acl类型: <br/> ip 客户端ip <br/> clientId 客户端id <br/> user 用户名 <br/> all 所有客户端 |
20+
| acl_action | acl动作K <br/> publish 发布 <br/> subscribe 订阅 <br/> pubsub 发布订阅 |
21+
| topic | 主题TOPIC,支持通配符(# 多级;+ 单级),支持占位符( 客户端ID: `${clientId}`; 用户名: `${user}`) |
22+
| subject | acl类型对应的acl实体内容 |
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# 文件配置
2+
3+
通过配置文件方式去加载ACL规则,当规则发生变化后,实时更新ACL缓存,支持配置多个ACL规则。
4+
5+
![img.png](@site/static/images/acl/config.png)
6+
7+
## 配置
8+
9+
輸入框依次代表的是 `acl_type``subject``topic``acl_action``acl_strategy`,具体配置
10+
请查看 [ACL介绍](before)
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# http配置
2+
3+
通过HTTP配置方式去加载ACL规则,FluxMQ会定时去刷新ACL缓存,实现ACL缓存的热更新。
4+
5+
![img.png](@site/static/images/acl/http.png)
6+
7+
## ACL拦截规则
8+
9+
![acl.png](@site/static/images/acl/acl.png)
10+
当客户端建立连接后,会加载ACL缓存(默认60S定时刷新),客户端发布订阅后,会根据其主题匹配是否存在`deny`规则,如果不存在`deny`
11+
规则,则ACl检查通过
12+
,如果存在Deny规则,再去检查是否存在`allow`规则,如果存在`allow`规则,acl检查通过,否则失败。
13+
14+
## 配置
15+
16+
| **配置项** | **释义** |
17+
|---------|---------------------------------------------------|
18+
| 请求地址 | 请求acl的配置的地址 |
19+
| 请求方法 | 默认只支持`POST`请求 |
20+
| 请求参数 | 默认不携带参数,用户可以配置固定参数作为请求Body,传输使用`application/json` |
21+
| header | 默认不携带header |
22+
| 加载周期 | 定时去数据库刷新ACL缓存 |
23+
24+
## 返回参数
25+
26+
> 必须按照以下格式以及字段返回参数
27+
28+
```JSON
29+
[
30+
{
31+
"aclStrategy": "allow",
32+
"aclType": "all",
33+
"action": "publish",
34+
"topic": "test/test/#",
35+
"subject": "*"
36+
},
37+
{
38+
"aclStrategy": "allow",
39+
"aclType": "ip",
40+
"action": "publish",
41+
"topic": "test/test/#",
42+
"subject": "192.168.10.111"
43+
}
44+
]
45+
```
46+
47+
具体字段配置请查看 [ACL介绍](before)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# sql配置
2+
3+
通过SQL配置方式去加载ACL规则,当外部数据库ACL规则发生变化后,FluxMQ会定时去刷新ACL缓存,实现ACL缓存的热更新。
4+
5+
![img.png](@site/static/images/acl/sql.png)
6+
7+
## ACL拦截规则
8+
![acl.png](@site/static/images/acl/acl.png)
9+
当客户端建立连接后,会加载ACL缓存(默认60S定时刷新),客户端发布订阅后,会根据其主题匹配是否存在`deny`规则,如果不存在`deny`规则,则ACl检查通过
10+
,如果存在Deny规则,再去检查是否存在`allow`规则,如果存在`allow`规则,acl检查通过,否则失败。
11+
12+
13+
## 配置
14+
15+
| **配置项** | **释义** |
16+
|---------|----------------|
17+
| 驱动 | 选择对应数据库的jdbc驱动 |
18+
| 连接地址 | 数据库的连接地址 |
19+
| 用户名 | 数据库用户名 |
20+
| 密码 | 数据库密码 |
21+
| 加载sql | 详情见如下`SQL配置` |
22+
| 加载周期 | 定时去数据库刷新ACL缓存 |
23+
24+
## SQL配置
25+
26+
> 查询时必须返回 `subject` ,`acl_type`,`topic`,`acl_strategy`,`acl_action` 字段
27+
> 如果数据库字段有区分,请使用别名。
28+
29+
默认sql如下:
30+
```SQL
31+
select subject,acl_type,topic,acl_strategy,acl_action from acl
32+
```
33+
具体字段配置请查看 [ACL介绍](before)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# 客户端查询
2+
3+
## 连接查询接口
4+
5+
| **参数名** | **参数说明** |
6+
|--------------|--------------------------------------|
7+
| PATH | POST http://ip:8080/api/check |
8+
| Context-Type | application/json |
9+
10+
### Request Body
11+
12+
```json
13+
{
14+
"clientId": "A12312321313123"
15+
}
16+
```
17+
18+
### Response
19+
20+
> code为0时成功
21+
22+
```json
23+
24+
{
25+
"code" : 0,
26+
"data": [{
27+
"clientIp": "192.168.0.100",
28+
"nodeIp": "127.0.0.1",
29+
"version": "MQTT_3_1",
30+
"keepalive": 120,
31+
"cleanSession": false,
32+
"auth": {
33+
"username": "fluxmq",
34+
"password": "fluxmq"
35+
},
36+
"will": {
37+
"isRetain": false,
38+
"willTopic": "willTest",
39+
"willQos": 1,
40+
"willMessage": ""
41+
},
42+
"timestamp": "1690599987495",
43+
"clientId": "A1212313"
44+
}]
45+
}
46+
47+
```
48+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# 消息推送
2+
3+
## 消息发布接口
4+
5+
| **参数名** | **参数说明** |
6+
|--------------|----------------------------------|
7+
| PATH | POST http://ip:8080/api/publish |
8+
| Context-Type | application/json |
9+
10+
### Request Body
11+
12+
```json
13+
{
14+
"topic": "test/test",
15+
"payload": "测试一下",
16+
"payload_encoding": "plain",
17+
"qos": 1,
18+
"retain": false
19+
}
20+
```
21+
22+
`payload_encoding`取值
23+
24+
| **参数名** | **参数说明** |
25+
|--------------|----------------------------------|
26+
| plain | 明文 |
27+
| base64 | base加密 |
28+
29+
### Response
30+
> code为0时成功
31+
32+
```json
33+
{
34+
"code": 0
35+
}
36+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# 客户端关闭
2+
3+
## 连接关闭接口
4+
5+
| **参数名** | **参数说明** |
6+
|--------------|--------------------------------|
7+
| PATH | POST http://ip:8080/api/close|
8+
| Context-Type | application/json |
9+
10+
### Request Body
11+
12+
```json
13+
{
14+
"ids": [
15+
"123",
16+
"123"
17+
]
18+
}
19+
```
20+
21+
22+
### Response
23+
> http状态码200
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# 介绍
2+
身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。
3+
FluxMQ支持配配置多个认证方式,当配置多认证时候,连接会依次尝试认证,只要有一种认证方式通过即可连接成功。
4+
5+
![img.png](@site/static/images/auth2/authType.png)
6+
7+
## 认证实体
8+
9+
10+
### 未开启HAProxy
11+
12+
```json
13+
14+
{
15+
"clientId":"Akjdksdnfdjsnfjk",
16+
"username": "test",
17+
"password": "yess"
18+
}
19+
20+
```
21+
22+
23+
### 开启HAProxy
24+
25+
```json
26+
27+
{
28+
"clientId":"Akjdksdnfdjsnfjk",
29+
"username": "test",
30+
"password": "yess",
31+
"destinationAddress": "127.0.0.1",
32+
"destinationPort": 1883,
33+
"sourcePort": 1883,
34+
"sourceAddress": "12.12.12.12"
35+
}
36+
37+
```
38+
39+
如果TLS终结在HAProxy层,则认证实体如下:
40+
41+
```json
42+
43+
{
44+
"clientId":"Akjdksdnfdjsnfjk",
45+
"username": "test",
46+
"password": "yess",
47+
"destinationAddress": "127.0.0.1",
48+
"destinationPort": 1883,
49+
"sourcePort": 1883,
50+
"sourceAddress": "12.12.12.12",
51+
"ssl": "jhbzsuiy238",
52+
"sslCn": "clientId",
53+
"sslVersion": "TLS1.3"
54+
}
55+
56+
```

0 commit comments

Comments
 (0)