BISHENG平台ARM架构部署手册

0 阅读9分钟

BISHENG平台ARM架构部署手册

  1. 引言

  1. 编写目的

本手册旨在为系统管理员、运维工程师及技术支持人员提供一套完整、详细的 BISHENG平台在ARM架构环境下的部署指南。随着国产化软硬件生态的发展,越来越多的业务系统需要适配基于ARM架构的服务器与操作系统。为了确保BISHENG平台能够在ARM平台上稳定、高效地运行,本文档从实际部署需求出发,详细说明了软硬件环境准备、依赖组件安装、服务配置与启动等关键步骤,帮助用户快速完成平台的部署与验证工作。

同时,本手册也为后续系统的维护、升级和故障排查提供了参考依据,提升平台在ARM架构下的可维护性与稳定性,助力实现平台全面适配国产化技术路线的目标。

注:本手册只包含BISHENG平台核心服务部署,不包含OCR及其他模型部署!

  1. 适用范围

本手册适用于使用基于ARM架构服务器及操作系统(如鲲鹏CPU,以及Centos、Ubuntu、麒麟Kylin操作系统)进行BISHENG平台部署、运维和管理的相关人员。适用于以下场景:

  • BISHENG平台在ARM架构环境中的首次安装与部署;
  • 平台版本升级、环境适配及故障排查等升级维护工作。

本手册也可作为开发人员、测试人员及相关技术支持团队参考文档,确保BISHENG平台在ARM架构下的兼容性、稳定性和性能表现满足实际业务需求。


  1. 系统概述

  1. 软件简介

应用名称版本功能
bisheng-backend2.0.3-armBISHENG后端服务
bisheng-frontend2.0.3-armBISHENG前端服务
mysql8.0.39-linuxarm64数据库
redis7.2.4-linuxarm64持久化存储
onlyoffice8.2.0-linuxarm64word文档生成
elasticsearch8.12.2-linuxarm64搜索和分析引擎
etcdv3.5.13-linuxarm64存储 Milvus 的配置信息和服务发现与状态监控
minioRELEASE.2023-04-28T18-11-17Z-linuxarm64对象存储
milvusv2.3.21-linuxarm64向量存储
bisheng-unstructured-armrelease提供非结构化数据的解析能力
  1. 架构图

  1. 部署环境说明

CPU型号- Kunpeng-920-arm64架构(仅限运行毕昇核心服务)
虚拟CPU核数- 32虚拟核
内存- 256G
磁盘- SSD 1T*1
操作系统- Kylin Linux Advanced Server V10 (Tercel)
Docker- Docker 20.10.9+
  • Docker Compose version v2.20.3 | | 客户端浏览器 | 毕昇平台内含有文件溯源展示、word在线编辑功能,需要高级浏览器提供底层能力支持,chrome 建议至少 v92+ 。建议使用最新版浏览器,以免功能无法正常使用。 |
  1. 部署方式

本文档部署方式为docker-compose部署,如果是k8s部署请参考:毕昇组件在K8S上部署的yaml配置参考


  1. 部署前准备

  1. 环境要求

  • 操作系统版本

只支持ARM架构操作系统:Centos、Ubuntu、麒麟Kylin操作系统

  • 硬件配置要求(CPU、内存、磁盘)

虚拟CPU核数: 32核

内存:256G

磁盘:1TB

  • 网络配置

建议关闭服务器本地防火墙

如果有其他网络安全组的限制,需要按照以下要求开通端口:

应用名称端口号是否需要开放端口
backend7860
frontend3001
mysql3306
redis6379
onlyoffice8701
elasticsearch9200
etcd2379
minio9100、9000
milvus19530
bisheng-unstructured10001
  • 依赖环境

需要安装docker+docker-compose

  • 用户权限要求

建议使用root用户部署,如果不能使用root用户,当前用户需要有sudo权限

  1. 安装包获取

  • docker环境安装包
通过网盘分享的文件:docker.zip
链接: https://pan.baidu.com/s/1IrwkbdbVeKzyEWJkx1pfNg?pwd=6jd2 提取码: 6jd2
  • 镜像获取路径
# 登陆到毕昇提供的私有镜像仓库
docker login cr.dataelem.com -u docker -p dataelem
# 从毕昇私有镜像仓库下载所需的镜像,其中frontend和backend镜像可以相应替换成最新版本,其他镜像较少更新
docker  pull  cr.dataelem.com/dataelement/bisheng-frontend:v2.0.3-arm64 
docker  pull cr.dataelem.com/dataelement/bisheng-backend:v2.0.3-arm64 
docker  pull  cr.dataelem.com/bisheng-milvus:v2.3.21-linuxarm64
docker  pull  cr.dataelem.com/bisheng-mysql:8.0.39-linuxarm64
docker  pull  cr.dataelem.com/bisheng-redis:7.2.4-linuxarm64
docker  pull  cr.dataelem.com/bisheng-etcd:v3.5.13-linuxarm64
docker  pull  cr.dataelem.com/bisheng-elasticsearch:8.12.2-linuxarm64
docker  pull  cr.dataelem.com/bisheng-minio:RELEASE.2023-04-28T18-11-17Z-linuxarm64
docker  pull  cr.dataelem.com/documentserver:7.2.1-arm64
docker  pull  cr.dataelem.com/dataelement/bisheng-unstructured-arm:release
  • 下载BISHENG代码
# 如果系统中有git命令,可以直接下载毕昇代码
git clone https://github.com/dataelement/bisheng.git
# 进入安装目录
cd bisheng/docker

# 如果系统没有没有git命令,可以下载毕昇代码zip包
wget https://github.com/dataelement/bisheng/archive/refs/heads/main.zip
# 解压并进入安装目录
unzip main.zip && cd bisheng-main/docker

  1. 部署步骤

  1. 基础环境配置

#永久关闭 SELinux
vim /etc/selinux/config
#将文件中的SELINUX=enforcing改为SELINUX=disabled
#保存更改并退出编辑器
#更改需要重启系统才能生效
sudo reboot

#临时关闭 SELinux
sudo setenforce 0

#临时和永久关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

#下载docker安装包,并解压
unzip docker.zip
cd docker
#使用root用户,或者sudo 执行install_docker.sh脚本
bash install_docker.sh

#执行成功后执行以下命令可以返回详细版本信息即为成功
[root@ecs-8b0f docker]# docker -v
Docker version 20.10.9, build c2ea9bc
[root@ecs-8b0f docker]# docker-compose -v
Docker Compose version v2.20.3

#至此运行BISHENG平台需要基础环境安装完成

2. ## 修改配置文件

  • BISHENG平台核心组件配置修改
#下载好BISHENG代码或者压缩包并解压进入
cd bisheng-main/docker
#修改docker-compose.yml配置文件内容
#修改内容较多,可以直接复制以下配置
services:
  mysql:
    container_name: bisheng-mysql
    image: cr.dataelem.com/bisheng-mysql:8.0.39-linuxarm64
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "1234"  
      MYSQL_DATABASE: bisheng
      TZ: Asia/Shanghai
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/conf/my.cnf:/etc/mysql/my.cnf
      - ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/data:/var/lib/mysql
    healthcheck:
      test: ["CMD-SHELL", "exit | mysql -u root -p$$MYSQL_ROOT_PASSWORD"]
      start_period: 30s
      interval: 20s
      timeout: 10s
      retries: 4
    restart: on-failure

  redis:
    container_name: bisheng-redis
    image: cr.dataelem.com/bisheng-redis:7.2.4-linuxarm64
    user: root
    ports:
      - "6379:6379"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/redis:/data
      - ${DOCKER_VOLUME_DIRECTORY:-.}/redis/redis.conf:/etc/redis.conf
    command: redis-server /etc/redis.conf
    healthcheck:
      test: ["CMD-SHELL", 'redis-cli ping|grep -e "PONG|NOAUTH"']
      interval: 10s
      timeout: 5s
      retries: 3
    restart: on-failure

  elasticsearch:
    container_name: bisheng-elasticsearch
    image: cr.dataelem.com/bisheng-elasticsearch:8.12.2-linuxarm64
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - ELASTIC_PASSWORD=es123456!
      - xpack.security.enabled=false
      - xpack.security.http.ssl.enabled=false
      - TZ=Asia/Shanghai
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/es:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    healthcheck:
      test: ["CMD-SHELL", "curl -s -f http://localhost:9200/_cluster/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: on-failure

  backend:
    container_name: bisheng-backend
    image: cr.dataelem.com/dataelement/bisheng-backend:v1.1.1-arm
    ports:
      - "7860:7860"
    environment:
      TZ: Asia/Shanghai
      BS_MILVUS_CONNECTION_ARGS: '{"host":"milvus","port":"19530","user":"","password":"","secure":false}'
      BS_MILVUS_IS_PARTITION: 'true'
      BS_MILVUS_PARTITION_SUFFIX: '1'
      BS_ELASTICSEARCH_URL: 'https://elasticsearch:9200'
      BS_ELASTICSEARCH_SSL_VERIFY: '{"basic_auth": ("elastic", "es123456!"), "verify_certs": False}' 
      BS_MINIO_SCHEMA: 'false'
      BS_MINIO_CERT_CHECK: 'false'
      BS_MINIO_ENDPOINT: 'minio:9000'
      BS_MINIO_SHAREPOINT: 'minio:9000'
      BS_MINIO_ACCESS_KEY: 'minioadmin'
      BS_MINIO_SECRET_KEY: 'minioadmin'
      BISHENG_PRO: 'true'
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/config/config.yaml:/app/bisheng/config.yaml
      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/entrypoint.sh:/app/entrypoint.sh
      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/bisheng:/app/data
    security_opt:
      - seccomp:unconfined
    command: sh entrypoint.sh 
    restart: on-failure
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:7860/health"]
      start_period: 30s
      interval: 90s
      timeout: 30s
      retries: 3
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy

  frontend:
    container_name: bisheng-frontend
    image: cr.dataelem.com/dataelement/bisheng-frontend:v1.1.1-arm
    ports:
      - "3001:3001"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ${DOCKER_VOLUME_DIRECTORY:-.}/nginx/conf.d:/etc/nginx/conf.d
    restart: on-failure
    depends_on:
      - backend

  etcd:
    container_name: milvus-etcd
    image: cr.dataelem.com/bisheng-etcd:v3.5.13-linuxarm64
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: cr.dataelem.com/bisheng-minio:RELEASE.2023-04-28T18-11-17Z-linuxarm64
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9101:9001"
      - "9100:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  milvus:
    container_name: milvus-standalone
    image: cr.dataelem.com/bisheng-milvus:v2.3.21-linuxarm64
    command: ["milvus", "run", "standalone"]
    security_opt:
      - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"

  office:
    container_name: bisheng-office
    image: cr.dataelem.com/documentserver:7.2.1-arm64
    ports:
      - "8701:80"
    environment:
      TZ: Asia/Shanghai
      JWT_ENABLED: false
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/office/bisheng:/var/www/onlyoffice/documentserver/sdkjs-plugins/bisheng
    command: bash -c "supervisorctl restart all"
    restart: on-failure

#修改完成后:wq保存退出
  • bisheng-unstructured组件配置修改
#下载好BISHENG代码或者压缩包并解压进入
cd bisheng-main/docker
#修改image配置,改为arm镜像
services:
  bisheng-unstructured:
    container_name: bisheng-unstructured
    image: cr.dataelem.com/dataelement/bisheng-unstructured-arm:release
    ports:
      - "10001:10001"
    environment:
      # 填写ocr_sdk或rt服务的根地址
      # server_address: bisheng-rt:9001
      # 这里填 ocr_sdk 或 rt
      # server_type: ocr_sdk
      TZ: Asia/Shanghai
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng-uns/config.yaml:/opt/bisheng-unstructured/bisheng_unstructured/config/config.yaml
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:10001/health"]
      interval: 30s
      timeout: 20s
      retries: 3
    restart: on-failure
    
 #修改完成后:wq保存退出

3. ## 服务启动与验证

  • 启动服务命令(必须完成4.2修改配置文件之后再执行以下步骤)
#以下启动命令需要在 bisheng-main/docker 目录下执行
#BISHENG平台核心组件ls启动
docker-compose  up -d
#bisheng-unstructured组件启动
docker-compose -f docker-compose-uns.yml  up -d
  • 查看服务状态

执行docker ps -a|grep bisheng 命令查看服务状态,和下图一致即为启动成功

如果服务启动有问题,请先参考“6.常见问题处理”!!!

  • 访问BISHENG页面

浏览器访问IP:3001端口,进行登录(首次登录需要注册账号,首次注册的账号默认设置为管理员)


  1. 配置说明

  1. 配置unstructured

  1. 配置office

  • 工作流、助手、技能配置案例

应用案例/场景库


  1. 常见问题处理

  1. 毕昇Logo与产品名修改方法

毕昇Logo与产品名修改方法指南

  1. redis服务启动常见问题:

  • redis服务启动失败,查看日志时出现以下报错

解决方式:

   启用内存过提交(依次执行以下命令):

  sysctl vm.overcommit_memory=1

  echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf

  sudo sysctl -p

  修改redis.conf文件配置,并添加以下内容:

  ignore-warnings ARM64-COW-BUG

  修改redis配置文件权限:

     chown 999:999 redis/redis.conf

     chmod 664 redis/redis.conf

  执行完以上操作,重启redis容器!

  1. ES服务启动常见问题:

  • ES容器自动重启,查看日志出现以下错误:

解决方式:

如果已经关闭了SElinux 还会有以上报错那就是已经挂载的ES存储目录权限有问题,执行以下命令修改目录权限:

chown -R 1000:1000 ./data/es

chmod -R 755 ./data/es

修改完目录权限后重启ES服务:docker-compose up -d

  1. backend容器启动常见问题:

  • backend容器启动报错:

解决方式:

进入MySQL容器,手动创建对应的database和table

进入bisheng-mysql容器:docker exec -it bisheng-mysql bash

登录mysql:mysql -u root -p (默认密码是1234)

暂时无法在飞书文档外展示此内容

以上sql执行成功后,重启backend容器!

  1. 端口冲突

如果docker-compose启动时遇到端口冲突问题,可以通过修改yml文件中映射的端口来解决

修改以上部分为:xxx:19530 (xxx替换为需要配置的端口号,范围1-65535)

  1. 其他典型错误及解决办法

(正在收集中。。。。。。)


  1. 维护指南

  1. 升级流程

  2. 附录:

  1. 附录1:

#BISHENGS商业套件Gateway服务ARM镜像下载地址
docker  pull  cr.dataelem.com/bisheng-gateway:release-arm64
#部署文档
https://dataelem.feishu.cn/wiki/KNWrwK1DtiFli7klsLzczx7enNh?from=from_copylink