这段时间正在做一个基于webrtc 技术的项目,其中就涉及到了 signal 服务器的搭建, 因为都是长链接, 相对于比较重的websocket,我选择更轻量级的 mqtt 协议来进行SDP 和 ICE 信息的传输,
参考了目前市面上实现了mqtt协议的服务,最后选择了 vernemq 这一个开源的服务来实现, 地址如下: https://vernemq.com/,
好处就是一个是开源的服务,另一个就是基于分布式的,当然还有一些其他的。
接下来就是搭建了,这个其实官方文档写的已经很详细了,有docker安装,也有下载二进制安装, 还有直接下载源码编译安装。这边我主要是用docker安装和二进制安装两种方式
1. docker 安装
文档如下:https://vernemq.com/docs/installation/docker.html
我的环境是centos7,在已经安装docker的环境下,直接执行
1 | docker run -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" --name vernemq1 -d erlio/docker-vernemq |
因为默认是有权限校验的,所以通过 DOCKER_VERNEMQ_ALLOW_ANONYMOUS 将权限关掉,允许任何人可以连上来。
实际安装的log如下:
1 | [root@VM_156_200_centos ~]# docker run -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" --name vernemq1 -d erlio/docker-vernemq |
这样就跑起来了,查看一下命令看下,可以看到已经跑出来了
1 | [root@VM_156_200_centos ~]# docker ps |
我们知道vernemq是有分布式的,因此这边再建一个节点进入进去,命令如下:
1 | docker run -e "DOCKER_VERNEMQ_DISCOVERY_NODE=<IP-OF-VERNEMQ1>" --name vernemq2 -d erlio/docker-vernemq |
首先我们找到 vernemq1 节点的 ip 地址, 通过这个指令 docker inspect <containername/cid> | grep \”IPAddress\”
具体的操作log如下:
1 | [root@VM_156_200_centos ~]# docker inspect f4a4c6601eba | grep \"IPAddress\" |
得到 ip 为: 172.17.0.5
接下来就加进去:
1 | [root@VM_156_200_centos ~]# docker run -e "DOCKER_VERNEMQ_DISCOVERY_NODE=172.17.0.5" --name vernemq2 -d erlio/docker-vernemq |
这样就建了两个节点了。
如果我们叫检查整个集群的状态的话,用这个:
1 | [root@VM_156_200_centos ~]# docker exec vernemq1 vmq-admin cluster show |
当然 vernemq 也有提供一个 http 的管理后台:
具体可以看这个: https://vernemq.com/docs/http-administration/
如果要执行 vernemq 指令的话, 可以用这种方式来执行
1 | [root@VM_156_200_centos ~]# docker exec vernemq1 vernemq ping |
前半部分是 docker 指定要执行指令的容器, 后面半部分的 vernemq ping 就是正常的要执行的指令
2. 二进制rpm包 安装
之所以后面又重新用 rpm包安装是因为之前用docker安装的时候,每次启动的时候,都要输入一大堆的配置项,感觉不太方便,所以后面就直接装全局的服务了,这样子可以直接读取和修改配置文件,会显得比较方便
通过 https://vernemq.com/downloads/index.html 下载一个 rpm 文件
选择 redhat 系列的
然后直接解压安装
1 | [root@VM_156_200_centos ~]# rpm -Uvh vernemq-1.3.1-1.el7.centos.x86_64_\(1\).rpm |
安装完之后,就会有一个 vernemq 目录
这时候就可以启动了
1 | [root@VM_156_200_centos vernemq]# service vernemq start |
用一下 ping 指令
1 | [root@VM_156_200_centos vernemq]# vernemq ping |
成功了。
配置文件在这边
1 | [root@VM_156_200_centos vernemq]# cd /etc/vernemq/ |
总结: 这个就是安装过程,那么就下来就是使用了,当然是结合权限校验来使用,下一篇会讲怎么用权限校验: webrtc 的 signal 服务器 VerneMQ 的权限校验