gpt4 book ai didi

mongodb - 副本集配置无效或者我们不是它的成员,在 kubernetes 中运行

转载 作者:行者123 更新时间:2023-12-02 00:52:18 25 4
gpt4 key购买 nike

我已从 here 发布了此问题

我在 kubernetes 环境中运行分片 mongodb,有 3 个分片,每个分片上有 3 个实例。由于某些原因,我的 mongodb 实例已重新安排到另一台机器上。

问题是当一个 mongodb 实例被重新安排到另一个实例时,其副本配置将失效。导致以下错误。

            > rs.status()
{
"state" : 10,
"stateStr" : "REMOVED",
"uptime" : 2110,
"optime" : Timestamp(1448462710, 6),
"optimeDate" : ISODate("2015-11-25T14:45:10Z"),
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93
}
>

这是配置

            > rs.config().members
[
{
"_id" : 0,
"host" : "mongodb-shard2-service:27038",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 1,
"host" : "shard2-slave2-service:27039",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 2,
"host" : "shard2-slave1-service:27033",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
}
]

以及重新调度的 mongodb 实例的 db.serverStatus() 示例

            > db.serverStatus()
{
"host" : "mongodb-shard2-master-ofgrb",
"version" : "3.0.7",
"process" : "mongod",
"pid" : NumberLong(8),

我希望我说得有道理..因为,我很快就会在现场制作中使用它..谢谢!!

最佳答案

对于那些想要使用旧方式设置 mongo 的人(使用 ReplicationControllers 或 Deployments 而不是 PetSet),问题似乎出在 kubernetes 服务的主机名分配延迟上。解决方案是在容器入口点添加 10 秒的延迟(在启动实际的 mongo 之前):

spec:
containers:
- name: mongo-node1
image: mongo
command: ["/bin/sh", "-c"]
args: ["sleep 10 && mongod --replSet rs1"]
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-storage1
mountPath: /data/db

相关讨论:https://jira.mongodb.org/browse/SERVER-24778

关于mongodb - 副本集配置无效或者我们不是它的成员,在 kubernetes 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com