【问题标题】:Unable to mount azure file shares as mongodb volume in azure container instances无法在 azure 容器实例中将 azure 文件共享挂载为 mongodb 卷
【发布时间】:2020-01-17 07:49:20
【问题描述】:

我正在尝试使用 azure 容器实例设置 mongo 数据库实例并将其安装在 Azure 文件共享上。

我们收到以下错误:

[initandlisten] WiredTiger error (1) [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
W  STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
F  STORAGE  [initandlisten] Reason: 1: Operation not permitted
F  -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 789
[initandlisten] 

***aborting after fassert() failure

AZ 命令我使用以下命令来创建存储帐户、文件共享和容器实例:

az storage account create -g $resourcegroup -n $storageaccount --sku Standard_LRS

az storage share create --name $mongofileshare --account-name $storageaccount

az container create --resource-group $resourcegroup --name $containername --image mongo:latest --dns-name-label $DNSName --ports 27017 --protocol TCP --environment-variables 'MONGO_INITDB_ROOT_USERNAME=admin' 'MONGO_INITDB_ROOT_PASSWORD=*******' --location westeurope --azure-file-volume-account-name $storageaccount --azure-file-volume-account-key '**********' --azure-file-volume-share-name 'mongofileshare' --azure-file-volume-mount-path '/data/db'

【问题讨论】:

  • 请给出您如何将 Mongo DB 部署到容器实例以及如何将 Azure 文件共享挂载到实例。
  • @CharlesXu 用 AZ 命令更新了问题。
  • 该问题还有更多更新吗?它解决了你的问题吗?如果是,请采纳。

标签: mongodb azure azure-container-instances


【解决方案1】:

导致您遇到错误的原因是,将 Azure 文件共享挂载到容器实例会覆盖挂载点中的所有文件。警告显示here

将 Azure 文件共享装载到容器实例类似于 Docker 绑定挂载。请注意,如果您将共享挂载到容器中 存在文件或目录的目录,这些文件或 目录被挂载遮住,并且在挂载时无法访问 容器运行。

因此不建议将 Azure 文件共享挂载到包含用于初始化 Mongo DB 的文件的现有目录。推荐目录将喜欢路径/var/logs/

【讨论】:

  • 那有什么azure服务可以用来获取Mongo DB设置的持久化数据。
  • @Santhosh 你可以使用AKS and Azure File Share,它可以获取Mongo DB设置的持久化数据。
  • @Santhosh 这个问题还有更多更新吗?它解决了你的问题吗?如果是,请采纳。
  • 感谢您的回答,我可以按照以下步骤使用 Azure 文件共享设置 mongo DB:jussiroine.com/2019/02/…
  • 我仍然面临这个问题。我将音量更改为 /var/lib/mongodb 对我来说仍然是个问题。我在另一篇文章中尝试了您的建议,将启动命令放入命令行而不是 docker compose,仍然是同样的问题
【解决方案2】:

非常感谢上面的@Charles Xu 和@Santhosh,你们拯救了我的一天。在这里,我用我为 AKS、mongoDB 和 Azure Fileshare 工作的 yaml 总结了他们的解决方案:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo-db
  template:
    metadata:
      labels:
        app: mongo-db
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: mongo-db
        image: mongo:latest
        command: ["mongod"] # Note here
        args: ["--dbpath=/data/mongoaz"] # Note here 
        ports:
        - containerPort: 27017
          name: redis
        resources:
          requests:
            cpu: 250m
          limits:
            cpu: 500m
        volumeMounts:
        - name: db-vol
          mountPath: /data/mongoaz
      volumes:
      - name: db-vol
        persistentVolumeClaim:
          claimName: my-db-pvc

【讨论】:

  • 很高兴它有帮助。
  • @Duc - 是否可以为您的镜像提供 Dockerfile:mongo:latest?
  • 我使用的是 MongoDB 的官方图片,它是here
【解决方案3】:

更新:

如果您可以使用 Helm,它会容易得多。在此处查看 MongoDB 的 Bitnami 图表:

https://github.com/bitnami/charts/tree/master/bitnami/mongodb

不会有这种头疼的问题

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2021-11-10
    • 2020-12-28
    • 2018-04-15
    • 2019-09-10
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多