Appearance
说明:当前文档升级内容为v2.6.1
升级到v2.7.0
版本升级
升级提示:在开始“版本升级”之前,我们强烈建议您在技术部门同事的指导下进行版本升级。 由于安装过程可能涉及到复杂的配置和系统环境要求,专业指导可以帮助您避免潜在的技术问题,确保升级过程顺利进行。 如果您有任何疑问或需要帮助,请随时联系我们的技术支持团队。
整个升级过程分别以下三步:
- 备份数据
- 升级
- 服务回退【针对升级失败的情况下】
1.备份数据
我们强烈建议以下两种备份数据方式都执行。
1.1 虚拟机快照备份
不同的虚拟机软件,使用快照功能不一样,以 vmware 为例,如下图所示,进行快照备份。
1.2 数据卷备份:
- 在没有变更挂卷目录的情况下,只需要执行
cp -r /home/chatbot /home/chatbot_back_2.6.1
进行备份即可 - 已经变更挂卷目录的情况下,需要将所有的卷目录进行备份。例如:Mysql 的挂卷目录变更为:
/var/lib/data/mysql
, 则需要执行命令:cp -r /var/lib/data/mysql /var/lib/data/mysql_back_2.6.1
1.3 docker-compose 文件备份
执行cp docker-compose.yaml docker-compose-v2.6.1.yaml.back
备份当前文件
2. 升级
2.1 升级所需资源
在升级之前,需要确保服务器上的可用资源足够。以下是升级所需的资源
可用cpu >=4C memory>=8G
剩余磁盘空间>20G
2.2 下载更新所需的文件
下载所需的 docker-compose.yaml 文件以及升级的 sql 文件
wget --content-disposition "https://nbagent.ai/api/docs/files?version=v2.7.0&upgrade=true"
2.3 更新数据库
更新 Mysql 服务可以通过多种方式进行更新,以下介绍两种常用的方式进行数据库的更新。
可以通过 Mysql 管理工具如
HeiDiSQL
等软件,连接 Mysql,通过导入v2.7.0-upgrade.sql
脚本,执行升级。如下图所示,通过HeiDiSQL
软件升级的图片:也可以通过容器方式执行升级,以下是通过容器升级方式加载 sql 语句升级。
bash# 1.copy 升级脚本到 mysql 容器中 docker cp v2.7.0-upgrade.sql mysql:/ #2. 进入到容器中 docker exec -it mysql bash #3.设置本次的字符串,并进入到 mysql 命令行中。如果mysql容器本身是utf-8格式则无需设置 echo "export LANG='C.UTF-8'" >> ~/.bashrc ; bash ;echo $LANG mysql -uroot -pyourchatbotpassword #4.在命令行中执行 source /v2.7.0-upgrade.sql
当脚本执行全部都 ok,即可说明本次 Mysql 的数据库层面已经升级成功。
2.4 更新服务配置
通过下载最新版本的 docker-compose 文件,对比两个 docker-compose 文件的内容,从而手动修改,进行更新。通过下面的命令下载最新版本的 docker-compose 文件。
bash
wget --content-disposition "https://nbagent.ai/api/docs/files?version=v2.7.0"
也可以直接按下面的方式更新 docker-compose.yaml 文件,以下是各个服务更新的具体内容。
chatbot-server 服务
更新镜像到v2.7.0, 并增加
RAG_DB
,MCP_GATEWAY_SERVER
等环境变量yamlimage: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-server:v2.7.0 environment: # 新增环境变量 - RAG_DB=milvus # 向量数据库的类型,旧版本为faiss,增加支持milvus - MCP_GATEWAY_SERVER=http://mcp-gateway:8080
chatbot-agent 服务
更新镜像到 v2.7.0版本,增加如下环境变量
yamlimage: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-agent:v2.7.0 environment: # 新增环境变量 RAG_DB: milvus # 向量数据库的类型,旧版本为faiss,增加支持milvus MILVUS_URI: http://{your_ip_or_host}:19530 MCP_GATEWAY_SERVER: http://mcp-gateway:8080 # agent会调用mcpgateway启动的mcp服务,所以此处只能填写服务名称
chatbot-web服务更新
更新镜像到 v2.7.0版本
yamlimage: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-ui:v2.7.0
新增mcp服务
yamlmcp-gateway: container_name: mcp-gateway image: registry.cn-shenzhen.aliyuncs.com/nb-agent/mcp-gateway:v1.0 privileged: true ports: - "18080:8080" # - "51000-51200:51000-51200" # Port range for gateway instances environment: - HOST=0.0.0.0 - PORT=8080 - DEBUG=false - LOG_LEVEL=INFO - GATEWAY_PORT_START=41000 - GATEWAY_PORT_END=65000 - COMMAND_TIMEOUT=30 - CORS_ORIGINS=* - REDIS_URL=redis://:Nopassredis^^NexP@{your_ip_or_host} # npm以及uvx安装MCP服务时镜像加速地址 - NPM_CONFIG_REGISTRY=https://registry.npmmirror.com - UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple #volumes: # - /var/run/docker.sock:/var/run/docker.sock # If needed for container management restart: unless-stopped healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8080/health" ] interval: 30s timeout: 10s retries: 3 # start_period: 40s
新增milvus向量数据库配套服务
yamletcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.18 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://etcd: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: minio/minio:RELEASE.2024-05-28T17-19-04Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin ports: - "9001:9001" - "9000: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 standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.5.14 command: [ "milvus", "run", "standalone" ] security_opt: - seccomp:unconfined environment: MINIO_REGION: us-east-1 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 # tart_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio"
4. 启动并更新服务
在 docker-compose.yaml 文件所在目录,使用以下命令启动所有服务
docker-compose up -d
本次更新完成
服务回退
如遇到不可抗拒等因素,导致当前升级失败,可执行服务回退操作。
使用快照恢复旧版本服务。
停止相应的服务,执行数据恢复,然后重新恢复服务:
bash# 停止服务 docker-compose down # 将备份数据恢复 cp -r /home/chatbot_back_2.6.1 /home/chatbot cp docker-compose-v2.6.1.yaml.back docker-compose.yaml # 重新启动服务 docker-compose up -d