程序安装

CP7 消息服务器可跨平台运行在 Linux、FreeBSD、Mac OS X 或 Windows(Docker) 服务器上。

备注:

Coolpy7所有发行版没有特别说明的情况下只支持64bit系统,因为32bit操作系统最大只支持4G内存,作为高性能的消息服务系统,CP7需要大于4G的内存运行。

Coolpy7会出现可运行于简易设备的版本,例如MIPS框架基本上使用于OpenWrt操作系统。还有基于ARM的相关微型设备等等。

CP7运行终端概要

基础功能服务器端

  1. CP7核心服务器

  2. CP7 TLS TCP 代理服务器

  3. CP7 WebSocket 代理服务器

  4. CP7 WebSocket TLS 代理服务器

  5. CP7 数据库代理服务器

扩展功能服务器端

扩展功能

开源地址

状态

说明

CP7 TLS代理服务器

https://github.com/Coolpy7/Coolpy7-TLS-Poxy

已对接

核心功能

CP7 WS-TLS代理服务器

https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy

已对接

核心功能

CP7 DbPoxy代理服务器

https://github.com/Coolpy7/DbPoxy

已对接

核心功能

CP7 MQTT-SN代理服务器

https://github.com/Coolpy7/mqttsn-gateway

已对接

扩展功能

CoAP

https://github.com/jacoblai/go-coap

未对接

扩展功能

测试客户端开源地址 https://github.com/Coolpy7/coolpy7_benchmark

完整部署整套CP7消息系统(IOT)

硬件环境机器准备

服务名称

IP

协议

端口

备注

CP7核心服务

192.168.200.201

TCP

1883

CP7核心服务 TLS代理

192.168.200.202

TCP

8883

CP7 Websocket代理服务

192.168.200.203

TCP

8083

CP7 WS-TLS代理服务器

192.168.200.204

TCP

8084

CP7数据库代理

192.168.200.205

TCP

Mongodb数据库

192.168.200.206

TCP

27017

Gridfs->OSS

运行CP7核心服务

CP7核心服务是一个最原始最单纯功能完备的MQTT消息服务器端,包括功能有:QoS:0,QoS1,QoS2消息质量支持。Will消息支持等等。深入了解 https://mcxiaoke.gitbooks.io/mqtt-cn/content/

  1. 防止暴力连接攻击,对已连接客户端进行优先保护

  2. 防止空连接攻击,当用户连接建立后两秒钟内没有进行身份验证即主动关闭客户端连接

通过ssh进入服务器192.168.200.201,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。

CP7核心服务运行后会自行构当前目录下的data文件夹,此文件夹存放MQTT运行期所需求持久化的数据信息,使用的是开源项目 https://github.com/jacoblai/yiyidb,支持10亿级秒op的高性能数据库,数据库内核使用的是Leveldb技术。

# 下载服务器端
git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# l 当前服务Host地址 (默认为:1883即本地1883端口,此参数一般默认即可,无需配置)
# a 连接接入调度器最大线程,此值可防止暴力连接攻击,对已连接客户端进行优先保护 (默认值128)
./go_build_Coolpy7_go_linux
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 Coolpy7 tcp is listening on [::]:1883

一般需为程序提权才可以运行Linux服务,指令:chmod -R 777 go_build_Coolpy7_go_linux

CP7核心服务 TLS代理

此功能即为CP7核心服务提供TLS接入功能。通过ssh进入服务器192.168.200.202,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。

此服务开源地址:https://github.com/Coolpy7/Coolpy7-TLS-Poxy

TLS服务需要对应域名的数字证书

以阿里云为例可以进入对应域名的管理后台下载证书,把key和pem文件复制到data文件夹下,并命名为server.key和server.pem

# 下载CP7 TLS代理 服务器端
git clone https://github.com/Coolpy7/Coolpy7-TLS-Poxy.git && cd Coolpy7-TLS-Poxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_tls_go_linux_linux
# 启动Coolpy7 tls poxy
# r启动参数 CP7核心服务器所在ip或域名 (例:core.coolpy.net:1883 or 192.168.200.201:1883)
# l启动参数 当前服务Host地址 (默认为:8883即本地8883端口,此参数一般默认即可,无需配置)
./go_build_Coolpy7_tls_go_linux_linux -r=192.168.200.201:1883
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8883端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 upstream 192.168.200.201:1883 ok
2018/10/29 12:59:55 Coolpy7 TLS proxy is listening on [::]:8883

CP7核心服务 WS代理

此功能即为CP7核心服务提供WebSocket接入功能。通过ssh进入服务器192.168.200.203,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。

  1. 千万级WebSocket代理服务器

  2. 支持防爆力攻击

# 下载服务器端
git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7
# 解压文件
unzip go_build_Coolpy7_ws_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_ws_go_linux
# 启动Coolpy7 WS Poxy
# r启动参数 CP7核心服务器所在ip或域名 (例:core.coolpy.net:1883 or 192.168.200.201:1883)
# l启动参数 当前服务Host地址 (默认为:8083即本地8083端口,此参数一般默认即可,无需配置)
./go_build_Coolpy7_ws_go_linux
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8083端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 upstream 192.168.200.201:1883 ok
2018/10/29 12:59:55 Coolpy7 ws is listening on [::]:8083

CP7 WS服务 TLS代理

此功能即为CP7 WebSocket代理服务提供TLS接入功能。通过ssh进入服务器192.168.200.204,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。

开源地址:https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy

# 下载CP7 WS TLS代理 服务器端
git clone https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy.git && cd Coolpy7-WS-TLS-Poxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_ws_tls_go_linux_linux
# 启动Coolpy7 ws tls poxy
# r启动参数 CP7 WebSocket 代理服务器所在ip或域名 (例:core.coolpy.net:8083 or 192.168.200.201:8083)
# l启动参数 当前服务Host地址 (默认为:8084即本地8084端口,此参数一般默认即可,无需配置)
./go_build_Coolpy7_tls_go_linux_linux -r=192.168.200.203:8083
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8084端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 upstream 192.168.200.203:8083 ok
2018/10/29 12:59:55 Coolpy7 TLS proxy is listening on [::]:8084

CP7 DbPoxy数据库代理

CP7 DbPoxy数据库代理服务器支持 MongoDB、Mysql、Mssql、Pgsql等主流数据库。当使用mongodb作为数据库即可使用Gridfs特性支持文件存储功能,即可实现对象存储(Object Storage Service,简称OSS)功能。

单个DbPoyx数据库代理运行实例只允许连接一种数据库。支持多实例连接多种数据库提供服务器。

开源地址:https://github.com/Coolpy7/DbPoxy

# 下载服务器端
git clone https://github.com/Coolpy7/DbPoxy.git && cd DbPoxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_db_poxy_go_linux_linux
# 启动Coolpy7 DbPoxy
# c启动参数 当前服务配置文件路径 (默认为/data/dbpoxy.yml 此参数一般默认即可,无需配置)
./go_build_Coolpy7_db_poxy_go_linux_linux
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8083端口,请确保相关防火墙配置可用
2018/11/03 16:55:14 dbpoxy/mongodb/get OK, token: password
2018/11/03 16:55:14 mongodb ping ok

本例使用mongodb演示并假设网络环境中在192.168.200.206中已运行一个未开户身份验证的mongod服务,并Host端口于27017

安装方式请参阅Mongodb官方文档:https://docs.mongodb.com/manual/installation/

配置文件说明

#使用mongodb作为普通数据服务
DatabaseType: mongodb
#mongodb数据库连接字符串,即当前环境已经在运行的何意一个mongodb数据库实例
DatabaseConnectionString: mongodb://192.168.200.206:27017
#使用postgres作为普通数据服务
#更多sql数据库的连接字符串请参阅:https://github.com/go-xorm/xorm
#DatabaseType: postgres #mssql mysql postgres mongodb oss-gridfs
#DatabaseConnectionString: host=192.168.100.187 port=13246 user=postgres dbname=ldh sslmode=disable password=123456
#使用mongodb作为OSS服务
#DatabaseType: oss-gridfs
#mongodb数据库连接字符串,即当前环境已经在运行的何意一个mongodb数据库实例
#DatabaseConnectionString: mongodb://192.168.200.206:27017
#Coolpy7 Core服务地址信息
BrokerHost: 192.168.200.201
BrokerPort: 1883
#MQTT连接信息
BrokerClientId: dbpoxy
BrokerUser: dypoxy
BrokerPassword: dypoxy
BrokerClearSession: true
#日志文件
LogFilePath: dbpoxy.log
#端访问相关配置信息
#操作token,通过此定义可进行安全校验,在指令发出端需把此token填写一致指令才会被接受
#如果填写空即不进入任何安全校验
AccessToken: password
#本实例的操作topic,指令发出端对应的发布地址,及qos消息质量控制
OpTopics:
Topic: dbpoxy/mongodb/get
Qos: 0

配置文件默认所有路径:/data/dbpoxy.yml

通过以上操作,我们已经得出一套完整的千万级MQTT消息系统。下一章介绍如何用客户端工具验证系统功能。

用户账户指南

当需要对接任何用户账号数据库时,请参阅 《Coolpy7(IOT)通用控制协议》一书,里边祥尽介绍如果通过协议实现对数据库的CURD操作。