标签: mongodb

如何制作一个安全的 MongoDB 服务器?

我希望我的网站使用 MongoDB 作为数据存储。我在我的开发环境中使用了 MongoDB 没有任何后顾之忧,但我担心公共服务器的安全性。

我的服务器是运行 Arch Linux 的 VPS。Web 应用程序也将在其上运行,因此它只需要接受来自 localhost 的连接。并且没有其他用户(通过 ssh 或其他方式)可以直接访问我的服务器。

我应该怎么做才能保护我的 MongoDB 实例?

security arch-linux mongodb

8
推荐指数
3
解决办法
2万
查看次数

MMS 从 uname 获取主机名并且无法连接到它

我正在尝试让10gen 的 MongoDB 监控服务监控我的 3 节点副本集。在 AWS VPC 中运行的副本集。每个节点都运行在不同的 [虚拟] 机器上。假设他们的 IP 是192.168.1.1(主要或次要)、192.168.1.2(主要或次要)、192.168.1.3(仲裁者)。

快速查看源代码,MMS 似乎可以获取运行它的机器的主机名,如下所示:

platform.uname()[1]
Run Code Online (Sandbox Code Playgroud)

对于我的 VPC EC2 实例,这会返回类似

ip-192-168-1-1
Run Code Online (Sandbox Code Playgroud)

MMS 然后尝试连接到此主机名,但无法解析。我宁愿只使用 IP 地址(因为它们总是静态的),但似乎platform.uname()[1]in的硬编码使用mmsAgent.py排除了这一点。

那么,有什么优雅的方法可以解决这个问题呢?黑客/etc/hosts?我不是为此设置 DNS 服务器。也许我只是误解了如何配置彩信。

amazon-ec2 mongodb

8
推荐指数
1
解决办法
2030
查看次数

如何从 yum-cron 中排除软件包而不是从手动“yum upgrade”中排除?

我刚刚浏览了我的服务器并安装了 yum-cron(然后启用了,chkconfig yum-cron on因为这似乎不会自动发生)。

现在我意识到我正在运行一个 MongoDB 集群,并且自动升级 mongo-server 包可能会破坏和/或损坏数据。

我已经考虑添加exclude=mongo*到我的yum.conf文件中以跳过所有 mongo 升级,但我希望仍然能够yum upgrade手动运行并更新所有包。

有没有一种巧妙的方法来实现这一目标?

linux yum mongodb

8
推荐指数
2
解决办法
6055
查看次数

为什么我看到许多 mongod 进程正在运行?

我正在运行一个 MongoDB 数据库。没有分片。当我运行 htop 时,我看到了很多 mongod 实例。这是正常的吗?每个连接都会创建一个单独的 mongod 进程吗?我应该担心吗?

出于某种原因,当我使用 top 时,只显示其中之一。这部分也令人困惑。

正如评论中所问,“ps axjf | grep mongod”的输出:

12858 12878 12877 12858 pts/0    12877 S+     500   0:00              \_ grep mongod
1  2691  2690  2690 ?           -1 Sl     497  70:54 /usr/bin/mongod -f /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)

top mongodb htop

7
推荐指数
1
解决办法
4322
查看次数

在另一台机器上使用 mongodb 工具(mongodump、mongorestore)

我有一个 mongodb 服务器(A)和一个 http 服务器(B)。我想在 http 服务器 (B) 上运行 mongodump 和 mongorestore 命令来备份服务器 B 上的数据。但是这些工具随 mongodb 安装一起提供,我不想将 mongodb 安装到我的 http 服务器上。

我怎样才能做到这一点?

linux backup backup-restoration mongodb

7
推荐指数
3
解决办法
3万
查看次数

在同一台服务器上安装多个 mongoDB 版本

我已经安装了 2.4 mongoDB 版本,我想与最近发布的 2.6 版本进行比较。

我想知道是否可以进行全新安装而不是更新以查看这两个版本是否可以在同一服务器中共存。

我现在正在使用 Linux red-hat 发行版。

谢谢。

linux installation redhat mongodb

7
推荐指数
1
解决办法
6364
查看次数

是否需要重新启动 MongoDB 才能重新加载 CRL?

我正在运行带有TLS/SSL的 MongoDB 副本集。我还使用 CRL 来阻止客户撤销证书。副本集成员的相关配置如下。

net:
    ssl:
        mode: requireSSL
        PEMKeyFile: /opt/member.pem
        clusterFile: /opt/member.pem
        CAFile: /opt/ca.pem
        CRLFile: /opt/crl.pem

security:
    clusterAuthMode: x509
Run Code Online (Sandbox Code Playgroud)

我的问题是:mongod每次更新磁盘上的 CRL 文件时是否都需要重新启动该过程?

mongodb

7
推荐指数
1
解决办法
850
查看次数

了解 MongoDB 日志中的 IXSCAN 和 COLLSCAN

我正在尝试通过一些 Mongo 日志进行 grep 以尝试找到我需要优化的缓慢操作。慢查询日志记录是默认的,记录操作超过 100 毫秒。

我认为可以肯定地说,一般来说,搜索 COLLSCANS 会显示需要注意的查询。不太清楚的是,如果 IXSCANS 是我应该搜索的细节。

考虑此处的 MongoDB 文档:

https://docs.mongodb.com/manual/reference/explain-results/#collection-scan-vs-index-use

我的理解是这是一种二元情况,查询是 COLLSCAN 或 IXSCAN。因此,如果我对 IXSCAN 进行 grep,我将查看所有不是 COLLSCANS 的慢查询。这是真的?

database-administration database-performance mongodb

7
推荐指数
1
解决办法
6723
查看次数

如何连接到代理后面的 MongoDB 副本集?

我在云服务上有一个 MongoDB 副本集。出于安全原因,副本集可用于云的内部网络。

我遵循了该云服务的指南,并在代理服务器上为副本集的每个成员设置了一个代理:

0.0.0.0:27017 -> member1-private-ip:27107
0.0.0.0:27018 -> member2-private-ip:27107
0.0.0.0:27019 -> member3-private-ip:27017
...
Run Code Online (Sandbox Code Playgroud)

我能够以独立模式从公共网络连接到副本集的每个成员:

mongoUri = new MongoClientURI("mongodb://usr:pwd@proxy-server-public-ip:27017/db")  ;
client = MongoClient(mongoUri);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以副本集模式连接它时:

mongoUri = new MongoClientURI("mongodb://usr:pwd@proxy-server-public-ip:27017,proxy-server-public-ip:27018,proxy-server-public-ip:27019/db?replicaSet=replcaSetName");
client = MongoClient(mongoUri);
Run Code Online (Sandbox Code Playgroud)

我会因连接错误而失败,因为复制集告诉驱动程序使用每个成员的内部地址(无法从公共网络访问)。

ps:我可以在代理服务器上以副本集模式连接到副本集。

如何连接到代理服务器后面的副本集?


更新:我在连接时使用代理服务器的公共地址。

mongodb

7
推荐指数
2
解决办法
1万
查看次数

由于管道损坏而无法进行 rsync

我正在尝试通过在两台服务器上停止 Mongo 然后运行以下命令来在生产服务器和开发环境之间镜像大型 Mongo 数据库:

rsync --archive --delete --recursive --verbose --compress --rsh "ssh -t -o StrictHostKeyChecking=no -i key.pem" remoteuser@remotehost:/var/lib/mongodb/ /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)

它运行良好几分钟,但随后因错误而停止:

receiving incremental file list
./
collection-228--5129329295041693519.wt
inflate returned -3 (0 bytes)
rsync error: error in rsync protocol data stream (code 12) at token.c(557) [receiver=3.1.1]
rsync: [generator] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [generator=3.1.1]
Run Code Online (Sandbox Code Playgroud)

谷歌搜索错误表明这是某种网络连接问题,但我能够很好地连接到两台服务器。

如果我重新运行该命令,它会在完全相同的文件处失败并显示相同的错误消息。是什么原因导致此错误以及如何修复它?

rsync mongodb

7
推荐指数
1
解决办法
2万
查看次数