统一视频平台smarteye的高可用部署

发布时间: 2024-03-01 11:57:46

方案说明

user
                  | vip 192.168.88.30
------------------------------------
| node1(88.31)    | node2(88.32)   | node3(88.33)+master(88.30)

至少需要3台主机,因为docker swarm需要超过一半的manager在线才能正常工作。

  • 每个节点都部署docker+keepalived
  • docker swarm 集群方式部署bvservere服务,访问任意node节点IP都可以访问服务(docker swarm内部vip)。
  • 使用keepalived保证外部访问的vip是有效的节点。
  • bvservere的所有数据都写入到分布式文件系统中(cephfs等,挂载到每个主机"/var/bvdata"目录)。
  • 用户通过虚拟IP地址访问服务。
  • 当master主机故障后,新的master会绑定vip,docker swarm 会保证bvservere实例一直存在。并从分布式文件系统中恢复数据服务。

文件描述

文件名 说明
bvservere-x.x.x.tar bvservere的docker镜像包,部署脚本会自动导入该镜像。
runbvservere-swarm.sh bvservere的部署脚本。
keepalived.conf keepalived配置文件,需要根据实际系统信息修改文件中有注释的部分。

部署要求

  • CPU 4核+2.5GHZ 及以上 (根据并发在线设备数提高配置)
  • 内存 8G 及以上 (根据并发在线设备数提高配置)
  • 存储 100G及以上 (如果需要平台存储,根据文件保留时长和设备数添加空间)
  • 系统版本:满足 docker ceph 对系统版本要求。

部署步骤

以下步骤需要在所有主机上执行。

  1. 安装docker
  2. 部署ceph cephfs(可以是其它分布式文件系统),挂载分布式文件系统到 ”/var/bvdata/“

(可以是其它路径,但runbvservere-swarm时需要指定)

  1. 将部署相关文件拷贝到用户目录下(可以是其它目录)
  2. 修改keepalived.conf(主机ID、vip和网卡接口名)后拷贝到“/etc/keepalived/”目录下。
  3. $ chmod a+x runbvservere-swarm.sh # 给runbvservere-swarm.sh添加运行权限。
  4. $ ./runbvservere-swarm.sh load x.x.x # 加载服务镜像,每台主机上都要执行。
  5. 搭建swarm集群
# 1、 在某个将来作为管理节点的主机上执行
$ docker swarm init --advertise-addr 192.168.88.31  # 创建集群,IP为其它节点可访问IP
$ docker swarm join-token manager # 查看 添加manager到集群的命令和token

# 2、 在其它主机上执行上一步获得的添加manager命令,添加manager到集群(使用init打印的命令添加的是worker)。
$ docker swarm join --token SWMTKN-1-0v7mtmczxem83rms5ie4460d3sf406zx65xjkvy108x6dnkz7u-9xdpvzvncgb6cvvmp8472lcvt 192.168.88.31:2377 # 只是示例,要根据真实情况来
  1. $ ./runbvservere-swarm.sh create x.x.x /var/bvdata/ # 安装bvservere,只需要在一个管理节点上执行

脚本会执行删除所有版本镜像,导入bvservere-x.x.x.tar镜像,停止并删除bvservere容器,使用x.x.x镜像创建bvservere容器。
x.x.x为版本号(看bvservere-x.x.x.tar名称获得,默认0.0.1)
/var/bvdata 为bvservere数据目录,不指定时默认/var/bvdata/。指定的目录需要每个主机上都存在。

  1. 安装 keepalived,设置为开机启动。
  2. 通过vip访问系统,测试是否部署成功。
# 系统无法访问时,可以通过下面命令查看状态
$ systemctl status keepalived   # 查看keepalived状态
$ docker service ps bvservere  # 查看bvservere状态
$ docker node ls # 查看docker集群节点, docker node rm xxxxx 可以删除down的节点(docker swarm leave的节点)。
$ ip addr    # 查看IP地址(是否有vip)

后续升级

升级前一定要先在每个主机上导入最新的镜像文件。

  1. 导入最新的镜像文件,在每个服务器上依次执行下面的步骤。
    a. 将最新部署相关文件拷贝到到用户目录下(可以是其它目录),并cd到目录。
    b. $ ./runbvservere-swarm.sh load x.x.x # 加载服务镜像,每台主机上都要执行。
    c. $ docker images # 保险起见,查看对应版本的镜像是否存在。
  2. 升级bvservere服务,只需要在某个管理节点上执行一次
    a. $ ./runbvservere-swarm.sh update x.x.x # 更新servere。
    b. $ docker service ps bvservere # 保险起见,查看bvservere服务当前状态和镜像版本。

 

多源视频融合平台VMS/smarteye,免费的GB28181 server, 免费的RTMP推流server,RTSP server,车载机部标JT808,JT1078服务器、标准SIP服务器, https://www.besovideo.com/detail?t=2&i=1321

全面支持国产信创系统,在linux(麒麟、统信等信创系统)服务器上安装smarteye server的操作说明, https://www.besovideo.com/detail?t=1&i=248

关于融合通信~可视指挥调度平台VMS/smarteye的说明,https://www.besovideo.com/detail?t=1&i=304