Skip to content

说明:当前文档升级内容为v2.2升级到v2.3.1

版本升级

升级提示:在开始“版本升级”之前,我们强烈建议您在技术部门同事的指导下进行版本升级。 由于安装过程可能涉及到复杂的配置和系统环境要求,专业指导可以帮助您避免潜在的技术问题,确保升级过程顺利进行。 如果您有任何疑问或需要帮助,请随时联系我们的技术支持团队。

整个升级过程分别以下三步:

  • 备份数据
  • 升级
  • 服务回退

1.备份数据

我们强烈建议以下两种备份数据方式都执行。

1.1 虚拟机快照备份

不同的虚拟机软件,使用快照功能不一样,以 vmware 为例,如下图所示,进行快照备份。

1733134361213

1.2 数据卷备份:

  • 在没有变更挂卷目录的情况下,只需要执行cp -r /home/chatbot /home/chatbot_back_2.2进行备份即可
  • 已经变更挂卷目录的情况下,需要将所有的卷目录进行备份。例如:Mysql 的挂卷目录变更为:/var/lib/data/mysql, 则需要执行命令:cp -r /var/lib/data/mysql /var/lib/data/mysql_back_2.2

1.3 docker-compose 文件备份

执行cp docker-compose.yaml docker-compose-v2.2.yaml.back备份当前文件

2. 升级

2.1 升级所需资源

在升级之前,需要确保服务器上的可用资源足够。以下是升级所需的资源

可用cpu >=4C  memory>=8G 可选:GPU>=8G
剩余磁盘空间>40G

2.2 下载更新所需的文件

下载所需的 docker-compose.yaml 文件以及升级的 sql 文件

wget http://nbagent.ai/api/docs/v2.2-v2.3.1-upgrade.sql

2.3 更新数据库

更新 Mysql 服务可以通过多种方式进行更新,以下介绍两种常用的方式进行数据库的更新。

  • 可以通过 Mysql 管理工具如HeiDiSQL等软件,连接 Mysql,通过导入v2.2-v2.3.1-upgrade.sql脚本,执行升级。如下图所示,通过HeiDiSQL软件升级的图片:

    1733135853572

  • 也可以通过容器方式执行升级,以下是通过容器升级方式加载 sql 语句升级。

    bash
    # 1.copy 升级脚本到 mysql 容器中
    docker cp v2.2-v2.3.1-upgrade.sql mysql:/
    
    #2. 进入到容器中
    docker exec -it mysql bash
    
    #3.设置本次的字符串,并进入到 mysql 命令行中
    echo "export LANG='C.UTF-8'" >> ~/.bashrc ; bash ;echo $LANG
    mysql -uroot -pyourchatbotpassword
    
    #4.在命令行中执行
    source /v2.2-v2.3.1-upgrade.sql

    当脚本执行全部都 ok,即可说明本次 Mysql 的数据库层面已经升级成功。

2.4 更新服务配置

通过下载最新版本的 docker-compose 文件,对比两个 docker-compose 文件的内容,从而手动修改,进行更新。通过下面的命令下载最新版本的 docker-compose 文件。

wget http://nbagent.ai/api/docs/docker-compose-v2.3.1.yaml

也可以直接按下面的方式更新 docker-compose.yaml 文件,以下是各个服务更新的具体内容。

  • chatbot-server 服务

    更新镜像到v2.3.1版本,同时增加环境变量和挂卷信息,具体内容如下:

    yaml
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-server:v2.3.1-community
    environment:
    # 新增以下环境变量
      - SECRET_KEY=8hW691DzKSHrEG222qYCv1m4rcHRQRbqr4KlaFkjZa0c1     # chatbot-server的 jwt secret,pageplug 集成需要
      - LOG_LEVEL=DEBUG
      - TEACH_DB=/data/teach_db      # 可教性存储路径
      - PAGEPLUG_SERVER=http://{your_ip_or_host}:30080     # pageplug 服务地址
      - PAGEPLUG_CHATBOT_TOKEN_NAME=chatbot_token    # 访问 pageplug token 的 key
      - CHATBOT_KEY=3kuuVcM0CUC1hpnq            # 第三方应用接入的 key
      - ROBOT_HOST=http://{your_ip_or_host}:7777        # 集成第三方应用企业微信、钉钉机器人的服务,该服务只能部署到外网
      - CHATBOT_WEB_SERVER=http://{your_ip_or_host}:3000      # chatbot-web 的服务地址
    volumes:
      - /home/chatbot/chatbot-agent/files:/data/uploads     # 文件上传存储路径卷
      - /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db    # 向量数据库卷
      # 新增以下卷
      - /home/chatbot/chatbot-agent/teach_db:/data/teach_db    # 可教性数据卷
  • chatbot-agent 服务

    更新镜像到 v2.3.1版本,同时增加环境变量和挂卷信息,具体内容如下:

    yaml
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/agent:v2.3.1-community
    environment:
      # 增加下列环境变量
      FLASH_RERANK_MODEL_NAME: "ms-marco-MiniLM-L-12-v2"
      LLM_TIMEOUT: "600"
      VIDEO_CHAT_SERVER: "{your_ip_or_host}:8090"  # video-chat 视频处理服务地址
    volumes:
      - /home/chatbot/chatbot-agent/files:/data/uploads   # 文件上传存储路径卷
      - /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db   # 向量数据库卷
      - /home/chatbot/chatbot-agent/teach_db:/data/teach_db   # 可教性数据卷
      # 新增以下挂卷信息
      - /home/chatbot/chatbot-agent/chromadb:/data/chromadb   # 微调数据卷
  • 新增 video-chat 服务。

    video-chat 服务是一款视频处理成文本服务,支持使用 cpu 和 GPU 两种方式进行处理。

    当使用 cpu 方式处理视频时,则使用镜像:registry.cn-shenzhen.aliyuncs.com/nb-agent/video-chat:v1.0-cpu,当服务器支持 GPU 处理时,则使用镜像:registry.cn-shenzhen.aliyuncs.com/nb-agent/video-chat:v1.0-cuda. 显卡要求为英伟达显卡,并且 GPU 内存>=8G

    完整的 video-chat 服务的 yaml 文件如下:

yaml
    video-chat:
      # 根据机器配置,选择 gpu 或这 cpu 版本的镜像
      # image: registry.cn-shenzhen.aliyuncs.com/nb-agent/video-chat:v1.0-cuda  # GPU 版本的镜像
      image: registry.cn-shenzhen.aliyuncs.com/nb-agent/video-chat:v1.0-cpu   # CPU 版本镜像
      container_name: video-chat
      ports:
        - 8090:8090
      restart: always
      environment:
        UPLOAD_FOLDER: "/data/uploads"   # 文件路径
        LOG_LEVEL: "develop"
        REDIS_URL: "redis://:redis@{your_ip_or_host}" # redis 服务
        WHISPER_PATH: "/faster-whisper-large-v3"
        USE_GPU: "false"   # 是否使用 GPU,true 使用 GPU,请使用 gpu 版本的镜像
        CHATBOT_KEY: "3kuuVcM0CUC1hpnq"   # 第三方访问 chatbot-server 的 key
        CHATBOT_SERVER: "http://{your_ip_or_host}:5000"  # chatbot-server 服务地址
        CPU_THREADS: "6"   # 当使用 cpu 时,配置 cpu 解析单个视频的 cpu 线程数
        NUM_WORKERS: "6"   # 当使用 cpu 时,配置并行处理视频的进程数量。推荐一个线程 cpu 使用一个 worker
        SHARE_FILES: "true"   # 是否使用共享数据卷,如果在同一台机器上,则配置 true,不再同一台机器上则使用 false
      volumes:
        - /home/chatbot/chatbot-agent/files:/data/uploads

挂卷信息说明:

当 SHARE_FILES: "true" 时,表示使用共享卷,与 chatbot-agent 和 chatbot-server 服务共享。当该服务部署在其他机器上【与 chatbot-agent 和 chatbot-server 不再同一台机器】时,则参数 SHARE_FILES: "false" 。共享卷配置如下:

volumes:
  - /home/chatbot/chatbot-agent/files:/data/uploads
  • 新增 robot-agent 服务

    robot-agent 服务是集成企业微信、钉钉机器人与 chatbot-server 相关 API 的服务,通过该服务,就可以将应用发布到企业微信和钉钉上。通过与企业微信机器人或者钉钉机器人对话,就能实现与 NebulaAI 应用上的所有功能。要体验该功能,必须将该服务发布到外部网络环境,且能正常访问 chatbot-server、msyql 等其他服务。完整的 robot-agent 服务如下:

    yaml
      robot-agent:
        image: registry.cn-shenzhen.aliyuncs.com/nb-agent/robot-agent:test.20241119165243
        container_name: robot-agent
        ports:
          - "7777:8080"
        restart: always
        environment:
        - SPRING_DATASOURCE_URL=jdbc:mysql://{your_ip_or_host}/robot_agent?serverTimezone=UTC  # mysql 配置信息
          - SPRING_DATASOURCE_USERNAME=root
          - SPRING_DATASOURCE_PASSWORD=yourchatbotpassword
          - NEBULAAI_HTTP_URL=http://{your_ip_or_host}   # 访问 chatbot-server 服务配置
          - NEBULAAI_WS_URL=ws://{your_ip_or_host}   # 访问 chatbot-server websocket 相关服务配置
          - NEBULAAI_KEY=3kuuVcM0CUC1hpnq    # 访问 hatbot-server 服务的 key
  • chatbot-web 服务更新

    更新镜像以及新增 ROBOT_AGENT_SERVER 环境变量

    yaml
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-ui:v2.3.1
    environment:
      # 新增环境变量
      ROBOT_AGENT_SERVER: "http://{your_ip_or_host}:7777"  # 集成第三方应用企业微信、钉钉机器人的服务,该服务只能部署到外网
  • 新增 pageplug 服务

    PAGEPLUG_CHATBOT_BASE64_ENCODED_SECRET_KEY 环境变量是 chatbot-server 的 jwt token 的秘钥的 base64 编码

    yaml
      pageplug:
        image: registry.cn-shenzhen.aliyuncs.com/nb-agent/pageplug-ee:chatbot_202409271605
        container_name: pageplug
        ports:
          - "30080:80"
          - "32017:27017"
        volumes:
          - /home/stacks:/appsmith-stacks
        restart: unless-stopped
        environment:
          - PAGEPLUG_CHATBOT_OFFICIAL_WORKSPACE_ID=66ebbd1858fb1943e10a665e
          - PAGEPLUG_CHATBOT_DEPLOY=true
          - PAGEPLUG_CHATBOT_DEFAULT_USER_PASSWORD=chatbotpwd  # 使用 chatbot-server 账号访问 pageplug 页面时的初始密码
          - PAGEPLUG_CHATBOT_BASE64_ENCODED_SECRET_KEY=OGhXNjkxRHpLU0hyRUcyMjJxWUN2MW00cmNIUlFSYnFyNEtsYUZralphMGMx   # chatbot-server 的 jwt base64 字符串
          - PAGEPLUG_LICENSE_KEY=rgC+4eVz2xqWkVGXFA7jVYWmisE8CfgAgJzqfd+0E3yj5cZz6k7NT5Ii3fcwFgKl9ZFLAVPyGtObSxia3H9ArMpZwoCSW5/knsnqVWtQZbH8+oZsXrKPx1vEOI4qG8o
  • redis 服务以及 mysql 服务

    redis 服务无需更新。mysql 服务数据库脚本升级后,可以将镜像更新到registry.cn-shenzhen.aliyuncs.com/nb-agent/mysql:8.0.34-v2.3.1 ,同时在 docker-compose.yaml 文件 mysql 服务中,增加 mysql 配置文件挂卷信息以及两个环境变量,如下所示:

        volumes:
          - /home/chatbot/mysql:/var/lib/mysql
          # 新增配置文件挂载
          - /home/chatbot/mysql_conf/my.cnf:/etc/mysql/conf.d/my.cnf
        environment:
          MYSQL_ROOT_PASSWORD: "yourchatbotpassword"
          # 新增以下两个环境变量
          MYSQL_INITDB_CHARSET: "utf8mb4"
          MYSQL_INITDB_COLLATE: "utf8mb4_unicode_ci"

4. 启动并更新服务

在 docker-compose.yaml 文件所在目录,使用以下命令启动所有服务

docker-compose up -d

5. 访问服务

5.1 打开浏览器:首先,请确保您的计算机已经连接到互联网。

5.2 输入地址:在浏览器的地址栏中输入以下格式的网址来访问服务:

http://{ip地址或者域名}:{chatbot-web的监听端口}

例如,如果您的服务器IP地址是 10.10.0.4,并且服务监听在端口3000上,那么您应该输入:

http://10.10.0.4:3000

5.3 登录:在服务页面上,您将看到一个登录界面。请使用以下默认账号和密码进行登录:

账号:chatbot
密码:yourchatbotpassword

请确保在输入 IP 地址、域名和端口时保持准确无误。 如果遇到无法访问的情况,请检查网络连接,并确认服务器是否已经启动且监听在正确的端口上。 如果问题依旧,请尝试重启服务或联系技术支持获取帮助。

服务回退

如遇到不可抗拒等因素,导致当前升级失败,可执行服务回退操作。

  1. 使用快照恢复旧版本服务。

  2. 停止相应的服务,执行数据恢复,然后重新恢复服务:

    bash
    # 停止服务
    docker-compose down
    
    # 将备份数据恢复
    cp -r  /home/chatbot_back_2.2 /home/chatbot
    cp docker-compose-v2.2.yaml.back  docker-compose.yaml
    
    # 重新启动服务
    docker-compose up -d