Mongodb FailedToSatisfyReadPreference:找不到与读取首选项匹配的主机{mode:“primary”}

Mongodb FailedToSatisfyReadPreference:找不到与读取首选项匹配的主机{mode:“primary”},mongodb,kubernetes-helm,Mongodb,Kubernetes Helm,我想在我的项目中使用mongodb shard。我创建了一个舵图,部署到库伯内特斯集群 我使用本地运行的kind集群来测试它。配置服务器和碎片服务器正在正常运行。我能够在他们的mongo shell中执行命令。mongos服务器无法连接到config server中的副本集。我在mongos中收到以下错误消息 2020-04-17T13:33:31.579+0000 W SHARDING [replSetDistLockPinger] pinging failed for distribute

我想在我的项目中使用mongodb shard。我创建了一个舵图,部署到库伯内特斯集群

我使用本地运行的
kind
集群来测试它。配置服务器和碎片服务器正在正常运行。我能够在他们的mongo shell中执行命令。mongos服务器无法连接到config server中的副本集。我在mongos中收到以下错误消息

2020-04-17T13:33:31.579+0000 W  SHARDING [replSetDistLockPinger] pinging failed for distributed lock pinger :: caused by :: FailedToSatisfyReadPreference: Could not find host matching read preference { mode: "primary" } for set mongors1conf
2020-04-17T13:33:31.579+0000 W  SHARDING [mongosMain] Error initializing sharding state, sleeping for 2 seconds and trying again :: caused by :: FailedToSatisfyReadPreference: Error loading clusterID :: caused by :: Could not find host matching read preference { mode: "nearest" } for set mongors1conf
2020-04-17T13:33:31.579+0000 I  SHARDING [shard-registry-reload] Periodic reload of shard registry failed  :: caused by :: FailedToSatisfyReadPreference: could not get updated shard list from config server :: caused by :: Could not find host matching read preference { mode: "nearest" } for set mongors1conf; will retry after 30s
配置服务器上的日志如下

2020-04-17T13:33:11.578+0000 I  NETWORK  [listener] connection accepted from 10.244.0.6:34400 #5 (1 connection now open)
2020-04-17T13:33:11.578+0000 I  NETWORK  [conn5] received client metadata from 10.244.0.6:34400 conn5: { driver: { name: "NetworkInterfaceTL", version: "4.2.5" }, os: { type: "Linux", name: "Ubuntu", architecture: "x86_64", version: "18.04" } }
2020-04-17T13:33:11.589+0000 I  ACCESS   [conn5] Successfully authenticated as principal __system on local from client 10.244.0.6:34400
2020-04-17T13:33:38.197+0000 I  SHARDING [replSetDistLockPinger] Marking collection config.lockpings as collection version: <unsharded>
2020-04-17T13:33:38.202+0000 W  SHARDING [replSetDistLockPinger] pinging failed for distributed lock pinger :: caused by :: LockStateChangeFailed: findAndModify query predicate didn't match any lock document
2020-04-17T13:44:39.743+0000 I  CONTROL  [LogicalSessionCacheRefresh] Failed to create config.system.sessions: Cannot create config.system.sessions until there are shards, will try again at the next refresh interval
2020-04-17T13:44:39.743+0000 I  CONTROL  [LogicalSessionCacheRefresh] Sessions collection is not set up; waiting until next sessions refresh interval: Cannot create config.system.sessions until there are shards
2020-04-17T13:44:39.743+0000 I  SH_REFR  [ConfigServerCatalogCacheLoader-1] Refresh for collection config.system.sessions took 0 ms and found the collection is not sharded
2020-04-17T13:44:39.743+0000 I  CONTROL  [LogicalSessionCacheReap] Sessions collection is not set up; waiting until next sessions reap interval: Collection config.system.sessions is not sharded.
2020-04-17T13:44:42.570+0000 I  NETWORK  [conn5] end connection 10.244.0.10:37922 (0 connections now open)
2020-04-17T13:33:11.578+0000 I网络[listener]连接已从10.244.0.6:34400#5接受(1个连接现已打开)
2020-04-17T13:33:11.578+0000 I网络[conn5]从10.244.0.6:34400接收客户端元数据conn5:{驱动程序:{名称:“NetworkInterfaceTL”,版本:“4.2.5”},操作系统:{类型:“Linux”,名称:“Ubuntu”,体系结构:“x86_64”,版本:“18.04”}
2020-04-17T13:33:11.589+0000 I访问[conn5]通过客户端10.244.0.6:34400在本地成功验证为主体系统
2020-04-17T13:33:38.197+0000 I分片[replSetDistLockPinger]将集合配置锁定标记为集合版本:
2020-04-17T13:33:38.202+0000 W分片[replSetDistLockPinger]对分布式锁pinger的ping失败::原因::LockStateChangeFailed:FindModify查询谓词与任何锁文档都不匹配
2020-04-17T13:44:39.743+0000 I控件[LogicalSessionCacheRefresh]未能创建config.system.sessions:无法创建config.system.sessions,除非存在碎片,否则将在下一个刷新间隔重试
2020-04-17T13:44:39.743+0000 I控制[LogicalSessionCacheRefresh]会话集合未设置;正在等待下一个会话刷新间隔:在存在碎片之前,无法创建config.system.sessions
2020-04-17T13:44:39.743+0000 I shu REFR[ConfigServerCatalogCacheLoader-1]对集合config.system.sessions的刷新花费了0毫秒,并发现该集合未分片
2020-04-17T13:44:39.743+0000 I控制[LogicalSessionCacheEap]会话集合未设置;等待下一个会话收获间隔:集合config.system.sessions未被切分。
2020-04-17T13:44:42.570+0000 I网络[conn5]端部连接10.244.0.10:37922(0个连接现在打开)
我是mongodb的新手。把这张图表拼起来花了很多时间。我还检查了其他类似的问题


我无法进一步调试它

您的配置服务器副本集是:

  • 未运行(并非所有节点都已启动)
  • 不是副本集(replSetInitiate未执行或失败)
  • 从碎片节点引用不正确(错误的主机、ip或错误的副本集名称)
  • 已启动并正在运行,但由于防火墙规则,不允许您的碎片访问它
确保可以从运行碎片
mongod
s的计算机上从
mongo
shell访问副本集节点