docker - semitech:部署 docker 容器时,weaviate 扩展存储连接被拒绝
问题描述
我正在尝试使用以下 docker-compose 堆栈部署 weaviate docker 容器。cotainner 已部署,但我收到日志消息连接被拒绝存储引擎,如下所示。帮助 !
{"action":"extensions_retrieve_all","error":"Get http://weaviate:8080/v1/modules/text2vec-contextionary/extensions-storage/: dial tcp 172.19.0.2:8080: connect: connection refused","level":"error","msg":"","time":"2021-09-07T06:42:31Z"}
version: '2'
services:
weaviate:
image: semitechnologies/weaviate:1.2.1
ports:
- 8080:8080
restart: on-failure:0
environment:
CONTEXTIONARY_URL: contextionary:9999
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
DEFAULT_VECTORIZER_MODULE: 'text2vec-contextionary'
ENABLE_MODULES: text2vec-contextionary
contextionary:
environment:
OCCURRENCE_WEIGHT_LINEAR_FACTOR: 0.75
EXTENSIONS_STORAGE_MODE: weaviate
EXTENSIONS_STORAGE_ORIGIN: http://weaviate:8080
NEIGHBOR_OCCURRENCE_IGNORE_PERCENTILE: 5
ENABLE_COMPOUND_SPLITTING: 'false'
image: semitechnologies/contextionary:en0.16.0-v1.0.2
解决方案
简短的回答
这只是启动期间的一个临时时序问题,无需担心,只要所有组件准备就绪后错误不会重复。
PS:您使用的 Weaviate 版本 ( v1.2.0
) 已经很旧了,在撰写此消息时最新版本是v1.7.0
。您可以使用Weaviate Customizer使用最新版本生成所需的配置。
长答案
您正在使用的 Weaviate 设置由两个组件组成,即 Weaviate 核心数据库和模块contextionary
提供的推理容器text2vec-contextionary
。
容器是有状态的weaviate
(因为它是数据库),模块容器通常是无状态的,以便更容易扩展。但是,该text2vec-contextionary
模块具有一个功能,可以使用新概念进行扩展,并且这些概念需要存储在某个地方。如果模块需要第三方存储,可以使用内部模块 API 的持久化函数。该text2vec-contextionary
模块利用该功能并将其存储的扩展公开给此内部 API ( GET /v1/modules/text2vec-contextionary/extensions-storage
) 上的推理容器。这允许推理容器通过在该 URL 上访问 Weaviate 作为持久性数据库。
您在启动过程中看到的是两个容器都是独立启动的。如果contextionary
推理容器比 Weaviate Core 数据库稍快,它会立即尝试联系前三秒尚未准备好的 Weaviate。
如果您查看以下日志(取自docker-compose.yml
您在上面发布的内容),您可以看到两件事:
- 第一个红色箭头表示
contextionary
容器开始尝试访问weaviate
容器的时间点 - 第二个红色箭头表示
weaviate
容器完全启动的时间点。请注意,此时该错误不再发生。
这意味着 3 个将状态从持久性数据库同步到contextionary
容器的请求都失败了,但所有后续请求(因为您在第二个红色箭头后不再看到错误)都成功了,现在一切都可以使用了。
推荐阅读
- html - 滚动捕捉全屏始终滚动 2 部分
- reactjs - 使用 useSelector 钩子将每个子 React 组件的状态分开
- c++ - 穿山甲 - s_cam vs d_cam - 需要帮助了解差异
- spring - 登录后的springboot主页
- neo4j - Neo4j,密码。条件合并
- java - 单击 JMenuItem 时如何在 JLabel 上显示图标?
- apache-spark - “java.io.IOException: Failed to delete Spark temp dir”是否会影响您的 spark 结果?
- python - setup.cfg 使用“入口点必须按组列出”声明控制台脚本错误
- java - 为什么 Firebase 在使用 phoneNumb 登录期间不发送身份验证 OTP?如何处理这些异常..?
- python - 如何从 python 脚本调用共享库(.so 文件)?