MQTT--Apollo服务器(二)

一、MQTT简介

  MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备。
1.轻量级的消息订阅和发布(publish/subscribe)协议
2.建立在TCP/IP协议之上
3.IoT,internet of things,物联网,MQTT在这方面应用较多。

MQTT协议是针对如下情况设计的:
M2M(Machine to Machine) communication,机器端到端通信,比如传感器之间的数据通讯。

因为是Machine to Machine,需要考虑:
Machine,或者叫设备,比如温度传感器,硬件能力很弱,协议要考虑尽量小的资源消耗,比如计算能力和存储等
M2M可能是无线连接,网络不稳定,带宽也比较小
MQTT协议的架构,用一个示例说明。比如有1个温度传感器(1个Machine),2个小的显示屏(2个Machine),显示屏要显示温度传感器的温度值。
显示器需要先通过MQTT协议subscribe(订阅)一个比如叫temperature的topic(主题)。

协议里还有2个主要的角色:
client,客户端 broker。
服务器端。
  它们是通过TCP/IP协议连接的。因为MQTT是协议,所以不能拿来直接用的,就好比HTTP协议一样。需要找实现这个协议的库或者服务器来运行。
MQTT官网:http://mqtt.org/
开源MQTT服务中间件有:
1)EMQX:github 4882 stars
2)Mosquitto:github 1645 stars
3)Apollo:ActiveMQ的升级版,github 109 stars,但是该项目已经有3~4年没有更新。而其号称的老版本ActiveMQ反而更新更加频繁。

二、Apollo服务器搭建

Apollo以ActiveMQ原型为基础,是一个更快、更可靠、更易于维护的消息代理工具。Apache称Apollo为最快、最强健的STOMP(Streaming Text Orientated Message PRotocol,流文本定向消息协议)服务器. 它采用一个完全不同的消息分发架构,同ActiveMQ一样支持多种协议。如STOMP,AMQP,MQTT,Openwire,SSL和WebSockets。

  1. 下载
    地址:http://archive.apache.org/dist/activemq/activemq-apollo/
    下载:2.1.7版本
    2.1.7版本
# 下载
[root@localhost ~]# wget http://archive.apache.org/dist/activemq/activemq-apollo/1.7.1/apache-apollo-1.7.1-unix-distro.tar.gz

# 解压
[root@localhost ~]# tar -zxvf apache-apollo-1.7.1-unix-distro.tar.gz -C /usr/local
  1. 创建实例
# 创建broker实例
[root@localhost ~]# cd /usr/local/apache-apollo-1.7.1/

[root@localhost apache-apollo-1.7.1]# ./bin/apollo create testbroker
Creating apollo instance at: testbroker
Generating ssl keystore...

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

You can now start the broker by executing:  

   "/usr/local/apache-apollo-1.7.1/testbroker/bin/apollo-broker" run

Or you can setup the broker as system service and run it in the background:

   sudo ln -s "/usr/local/apache-apollo-1.7.1/testbroker/bin/apollo-broker-service" /etc/init.d/
   /etc/init.d/apollo-broker-service start

#  查看实例配置文件
[root@localhost apache-apollo-1.7.1]# ls testbroker/etc/
apollo.xml  black-list.txt  groups.properties  keystore  log4j.properties  login.config  users.properties

  1. 配置详解

users.properties:
用来配置可以使用服务器的用户以及相应的密码。
其在文件中的存储方式是:用户名=密码,如:
admin=password
表示新增一个用户,用户名是:admin,密码是:password

groups.properties:
持有群体的用户映射,可以通过组而不是单个用户简化访问控制列表。
可以为一个定义的组设置多个用户,用户之间用“|”隔开,如:
admins=admin|lily
表示admins组中有admin和lily两个用户

black-list.txt:
用来存放不允许连接服务器的IP地址,相当于黑名单类似的东西。
例如:10.20.9.147
表示上面IP不能够连接到服务器。

login.config:
是一个服务器认证的配置文件,为了安全apollo1.6版本提供了认证功能,只有相应的用户名和正确的密码才能够连接
服务器。

  1. 服务器主配置文件:apollo.xml
    该配置文件用于控制打开的端口,队列,安全,虚拟主机设置等。
    1、认证:可以使用来配置是否需要连接认证,如果将其属性enable设置为false表示不用认证,任何人都可以连接服务器,默认为true
    2、access_rule:可以在broker或者virtual_host中用于定义用户对服务器资源的各种行为。如:
    表示群组users里面的用户可以对服务器资源进行的操作有:connect 、create、 destroy、 send 、receive 、consume。

详细的操作说明见:
http://activemq.apache.org/apollo/documentation/user-manual.html
3、message stores:默认情况下apollo使用的是LevelDB store,但是推荐使用BDB store(跨平台的)只能够实用其中一种。使用LevelDB store的配置是:


默认有提供不用任何修改。使用BDB store需要到网站下jar包支持http://download.oracle.com/maven/com/sleepycat/je/5.0.34/je-5.0.34.jar,将jar包放在服务器的lib目录下面,然后将配置文件改成:即可。

4、connector:用于配置服务器支持的链接协议以及相应的端口。如:

[root@localhost testbroker]# vi etc/apollo.xml 

 
表示支持tcp链接,使用的端口是61613,链接限制是2000,自动侦听的协议是mqtt协议。



  1. 启动测试
# 切换到实例目录
[root@localhost apache-apollo-1.7.1]# cd testbroker/
[root@localhost testbroker]# 
# 启动apollo
#启动
[root@localhost testbroker]# ./bin/apollo-broker run

    _____                .__  .__
   /  _  \ ______   ____ |  | |  |   ____
  /  /_\  \\____ \ /  _ \|  | |  |  /  _ \
 /    |    \  |_> >  <_> )  |_|  |_(  <_> )
 \____|__  /   __/ \____/|____/____/\____/
         \/|__|  Apache Apollo (1.7.1)


Loading configuration file '/usr/local/apache-apollo-1.7.1/testbroker/etc/apollo.xml'.
INFO  | OS     : Linux 3.10.0-514.el7.x86_64
INFO  | JVM    : OpenJDK 64-Bit Server VM 1.8.0_222 (Oracle Corporation)
INFO  | Apollo : 1.7.1 (at: /usr/local/apache-apollo-1.7.1)
INFO  | OS is restricting the open file limit to: 100000
INFO  | Starting store: leveldb store at /usr/local/apache-apollo-1.7.1/testbroker/data
INFO  | Accepting connections at: tcp://0.0.0.0:61613
INFO  | Accepting connections at: tls://0.0.0.0:61614
INFO  | Accepting connections at: ws://0.0.0.0:61623/
INFO  | Accepting connections at: wss://0.0.0.0:61624/
INFO  | Administration interface available at: https://127.0.0.1:61681/
INFO  | Administration interface available at: http://127.0.0.1:61680/

# 后台启动
[root@localhost testbroker]# ./bin/apollo-broker  &

# 启动成功,查看apollo进程 
[root@localhost ~]# ps -ef|grep apollo

启动后,访问http://192.168.36.102:61680/
或者https://192.168.36.102:61681。
默认用户:admin / password


web管理

web管理

你可能感兴趣的:(MQTT--Apollo服务器(二))