AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[mongodb](server)

Martin Hope
grenade
Asked: 2023-03-29 23:04:07 +0800 CST

两个证书文件的虚拟串联

  • 6

mongod 需要一个 certificateKeyFile ,它是证书和私钥的组合。

certbot 管理有效期不能超过 3 个月的 tls 证书的季度更新。成功运行 certbot 更新的结果是创建新的证书文件,这些文件可以通过位于/etc/letsencrypt/live/$(hostname -f).

有没有一种方法可以创建包含以下输出的符号链接、命名管道或循环设备:

cat /etc/letsencrypt/live/$(hostname -f)/{fullchain,privkey}.pem

我不想创建一个包含连接结果的实际文件,因为每次 certbot 扩展证书有效性时都必须更新该文件,并且 mongod 在 certbot 进行更新和某些自动化创建之间的任何时间段内都会被破坏包含 mongod 预期格式的证书的新串联。

我想到的一个解决方案是在 certbot 更新证书后使用 systemd 依赖链重新启动 mongod,并在 mongod.service 单元上使用 ExecStartPre 来创建串联的 certificateKeyFile。但如果有一种方法可以创建某种动态表示所需文件的串联,我就不需要这些了。

有任何想法吗?

mongodb
  • 1 个回答
  • 24 Views
Martin Hope
editor
Asked: 2022-12-10 07:49:49 +0800 CST

Archlinux 上的 MongoDB,无需从源代码编译

  • 5

我似乎找不到适用于 Arch 的预编译包。我相信我已经尝试了所有 debian 风格的软件包,但都无济于事。不再有主动管理的 mongodb 包。从源代码编译显然需要几百个空间。有没有办法在不从源代码编译的情况下为 MongoDB 在 Arch 上获取二进制文件?

mongodb
  • 1 个回答
  • 29 Views
Martin Hope
knm
Asked: 2021-11-19 05:32:43 +0800 CST

循环法的高可用性 - rsync 和数据库复制或集群?

  • 0

我有一台机器(centos7),安装了 Apache、PHP、MariaDB 和 Nginx、Nodejs、MongoDB,并被许多不同的域使用。

我想创建一个工作镜像,但无法在 2 个选项之间做出决定:

  1. rsync 静态网站、服务器和配置文件 + mariadb 和 mongodb 复制
  2. 集群由 2 台机器组成,带有一些 proxmox 或其他免费技术(对我来说是新主题)

我希望它们都提供文件,例如 master-master sync ,因此它们可以分别处理约 50% 的请求。

您会建议哪个更有效并推荐您选择的软件/系统吗?

apache-2.2 high-availability node.js mongodb mariadb
  • 2 个回答
  • 219 Views
Martin Hope
Howins
Asked: 2021-11-08 13:50:38 +0800 CST

如何仅授权来自 MongoDB Atlas 集群的 Fargate ECS 服务的 IP

  • 1

我有一个 ECS Fargate 服务映射到 AWS 上的 Application Load Balancer。在此服务中,有几个任务经常被杀死并重新启动。这些任务应该能够连接到 MongoDB Atlas 集群。

我应该将哪个 IP 列入我的 Atlas 集群的白名单?我的服务是否可以有一个弹性 IP 或一系列 IP,以在我的 Mongo Atlas 集群中只允许我的服务的 IP?

对不起,如果这个问题很简单,我在 AWS 上的 ECS、ALB 和网络上有点挣扎。

networking amazon-web-services amazon-ecs amazon-alb mongodb
  • 1 个回答
  • 593 Views
Martin Hope
Pierre Lovergne
Asked: 2021-08-15 12:52:12 +0800 CST

如何将后端连接到 mongodb docker 容器

  • 0

我在 docker hub / mongodb 上制作了这个 docker-compose 文件,然后我使用docker-compose up -d非常标准的命令来启动容器。

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

bf4a595a508d   mongo-express   "tini -- /docker-ent…"   About an hour ago   Up About an hour   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   intake-app_mongo-express_1
b5fcc2d2386d   mongo           "docker-entrypoint.s…"   About an hour ago   Up About an hour   27017/tcp                                   intake-app_mongo_1

现在我正在尝试将我的后端连接到它。

使用 postresql 它会像 postgresql://root:example@localhost:8081/db_name

mongo 会怎样?

PS:我可以在我的网络浏览器中通过 http://localhost:8081 连接到数据库,但我无法从命令行使用mongo.

connection mongodb
  • 1 个回答
  • 1966 Views
Martin Hope
Green
Asked: 2021-05-27 00:24:53 +0800 CST

NVMe 上的 MongoDB 在生产中

  • 6

我正在设置我的数据库生产环境,我有一些问题。服务器有两个 NVMe 磁盘,但它们不能用于硬件 RAID 控制器。我需要带有 NVMe 的 RAID 吗?

在生产中将它们用作JBOD就足够了吗?或者我应该使用软件 RAID 1/0(这是 MongoDB 建议的 RAID)?否则,我必须移除 NVMe 驱动器并订购 SATA 接口以在 RAID 硬件控制器中使用。

raid nvme mongodb
  • 3 个回答
  • 779 Views
Martin Hope
smark91
Asked: 2021-05-14 01:50:47 +0800 CST

如何获取 mongod 实例的公共证书信息

  • 0

在使用 MongoDB 实例的 Let's Encrypt 自动更新证书的过程中,我想知道该实例提供的特定证书。

有没有办法获取例如到期日期或任何其他信息?

ssl mongodb
  • 3 个回答
  • 204 Views
Martin Hope
Mr.Dobby
Asked: 2021-04-21 20:37:35 +0800 CST

无法连接到 127.0.0.1:27017,连接被拒绝

  • 1

所以我目前正在尝试为我的 centos 机器设置 mongodb 在本地运行和托管。但是当我尝试连接时,我得到了这个:

#mongo
MongoDB shell version v3.4.24
connecting to: mongodb://127.0.0.1:27017
2021-04-20T22:06:51.585+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2021-04-20T22:06:51.585+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed

我现在已经阅读了很多关于它的内容。

  • 用户 mongod 是 /var/lib/monogodb 的所有者
  • 文件 /var/lib/mongodb/mongod.lock 不存在
  • 重新启动服务器导致此问题。

我认为(个人)认为这与 iptables 有关。当我启动 mongodb 服务时,我得到了这个:

# service mongod status
Redirecting to /bin/systemctl status mongod.service
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2021-04-20 22:05:26 UTC; 27s ago
     Docs: https://docs.mongodb.org/manual
  Process: 1772 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=51)
  Process: 1770 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1768 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1766 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

Apr 20 22:05:25 Server-Elf systemd[1]: Starting MongoDB Database Server...
Apr 20 22:05:25 Server-Elf mongod[1772]: about to fork child process, waiting until server is ready for connections.
Apr 20 22:05:25 Server-Elf mongod[1772]: forked process: 1774
Apr 20 22:05:26 Server-Elf mongod[1772]: ERROR: child process failed, exited with error number 51
Apr 20 22:05:26 Server-Elf systemd[1]: mongod.service: Control process exited, code=exited status=51
Apr 20 22:05:26 Server-Elf systemd[1]: mongod.service: Failed with result 'exit-code'.
Apr 20 22:05:26 Server-Elf systemd[1]: Failed to start MongoDB Database Server.

iptables 设置:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

/etc/mongod.conf 显示:net: bindIp: 127.0.0.1

即使在停止 iptables 之后错误仍然存​​在。我很迷茫 非常感谢帮助。非常感谢你提前

centos iptables mongodb
  • 1 个回答
  • 2269 Views
Martin Hope
Amaimersion
Asked: 2021-02-05 07:06:43 +0800 CST

pymongo + flask + gunicorn:“connect=False”时第一次操作前“Authentication failed”

  • 0

我正在使用 MongoDB Atlas。我有这个 URL 用于连接:mongodb+srv://<LOGIN>:<PASSWORD>@<URL>/<DB>?retryWrites=true&w=majority&authSource=admin。

我正在使用这个堆栈:flask、gunicorn、pymongo、mongoengine(我不认为它是相关的,因为 mongoengine 实际上使用 pymongo)。

独角兽配置:

  • 同步工作者,
  • 线程 = 1,
  • 工人数 = 8

连接时,我正在使用,connect=False因为 pymongo 本身不是分叉安全的。connect=False它将在第一次操作之前连接到数据库。它需要设置为False,因为 gunicorn 使用 pre-fork 模型。

但我面临以下情况:

  1. 在第一次请求(端点进行一些数据库操作)时,我收到此错误:pymongo.errors.OperationFailure: Authentication failed., full error: {'ok': 0, 'errmsg': 'Authentication failed.', 'code': 8000, 'codeName': 'AtlasError'}
  2. 在第二次请求时,一切都很好(即,数据库操作已成功完成)。
  3. 如果你按F5多次,那么有时你会出现“验证失败”的错误,有时一切都会好起来的。

如果我准备好connect=True了,一切都会好起来的。我从未见过此“身份验证失败”错误。

但后来我收到了这个警告信息:UserWarning: MongoClient opened before fork. Create MongoClient only after forking. See PyMongo's documentation for details: https://pymongo.readthedocs.io/en/stable/faq.html#is-pymongo-fork-safe。

所以,显然,connect需要设置为False.

我接受了两名工人的测试。看起来会出现这种情况:

  1. 假设我有两个具有以下 pid 的 gunicorn 同步工作者:22429 和 22430。
  2. 我收到请求。工人 22429 处理它。一切都很好,因为它是第一个工作人员,看起来它成功地建立了数据库连接。
  3. 我按 F5,工人 22429 再次处理它,一切都很好。
  4. 我再次按 F5,现在工人 22430 处理它。它会引发错误“身份验证失败”。
  5. 我再次按 F5,工人 22430 处理它。现在一切都很好,因为那个工人已经建立了联系。
  6. 现在,我所有的工人(我只有两个)都连接到数据库。无论我按 F5 多少次,每个请求都会成功完成。

但为什么它发生在第一次请求上?来自 pymongo:“如果 connect=False,则在第一次操作时连接。”。如果我理解正确,pymongo 应该在实际第一次操作之前连接,成功完成连接,然后才执行该操作。

那为什么我的第一个数据库操作对每个工人都失败了?我应该如何处理这个?

gunicorn mongodb flask
  • 1 个回答
  • 916 Views
Martin Hope
Matt Winckler
Asked: 2020-09-26 21:47:35 +0800 CST

MongoDB root 用户无法访问配置数据库

  • 0

我正在尝试使用mongodump. 这需要访问config数据库,而我的 mongo 用户没有,尽管担任该root角色。(根据我对内置角色文档的理解,拥有该角色的用户root应该能够备份实例上的所有数据库。)

当我尝试运行时mongodump,我收到此错误:

root@mongo-db1:/srv/mongo# mongodump --username=rcroot --password="secret" --out=/var/backups/20200925
2020-09-26T05:40:20.138+0000    Failed: error counting config.system.indexBuilds: not authorized on config to execute command { count: "system.indexBuilds", query: {}, $readPreference: { mode: "secondaryPreferred" }, $db: "config" }

所以显然我的用户无权访问config. 这是我的用户:

rs0:PRIMARY> db.getUser("rcroot")
{
        "_id" : "admin.rcroot",
        "userId" : UUID("81fc86ff-6d12-4d23-83ab-7fc2591516a2"),
        "user" : "rcroot",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                },
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

如果我以 root 用户登录到mongoshell 并尝试访问config数据库中的任何内容,我会收到与上述类似的错误。我确实启用了身份验证,因为我从mongod标志--auth开始:

mongod --auth --replSet rs0 --keyFile /data/db/keyfile --enableMajorityReadConcern false

所以我的问题是:我需要做什么才能授予该用户root对我的 mongo 实例上所有数据库的真正访问权限?

mongodb
  • 1 个回答
  • 1309 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve