首页 > 其他分享 >minio桶自动挂载

minio桶自动挂载

时间:2023-02-02 18:00:11浏览次数:30  
标签:minio param name 自动 path 挂载 s3fs

前言

  • minio单节点容器部署
  • s3fs本地挂载minio桶(单个)
  • linux环境 ubuntu or debain
  • python3.8.10

中间耦合过多。但是,linux开机自启(systemctl外还有别的实现方式)通过python脚本运行linux命令。在以后可能是一个不错的选择。 实现 通过s3fs将minio桶上存储的路径挂载到某个路径下。linux重启在minio启动后自动挂载。

minio

docker-compose

容器部署

version: '3'

services:
 minio:
    image: 'minio/minio:latest'
    container_name: minio
    restart: always
    command: server /data --console-address ":9001"
    environment:
      - MINIO_ROOT_USER=minioadmin
      - MINIO_ROOT_PASSWORD=minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"

s3fs

安装

sudo apt install s3fs

配置

配置minio账号密码

echo AccessKey:SecretKey > xx/passwd-s3fs
chmod 600 xx/.passwd-s3fs

手动挂载

s3fs -o passwd_file=/xx/.passwd-s3fs -o url=http://ip:9000 -o allow_other -o no_check_certificate -o use_path_request_style -o umask=000 minio桶名称 挂载路径

linux服务器重启自动挂载minio桶

ubuntu/debian 适用

方法

systemctl开机自启,运行python脚本。

在路径**/usr/lib/systemd/system** or /etc/systemd/system 配置minio.service文件。

[Unit]
Description=minio
Documentation=empty

[Service]
Type=oneshot
PIDFile=/run/minio.pid
ExecStartPre=
# python脚本
ExecStart=/usr/bin/python3 xx/minio_bucket_monut.py.py
ExecReload=
ExecStop=
PrivateTmp=true

[Install]
WantedBy=multi-user.target

设置开启自启动

systemctl enable minio.service

python脚本

  • 监测minio容器状态为运行
  • 挂载minio桶
  • 可以重启部分容器
  • 脚本默认循环 600 次 每次等待1s

minio_bucket_monut.py

import subprocess
from time import sleep


def execute(command):
    """执行"""
    try:
        return subprocess.getoutput(command)
    except Exception as e:
        print(e)


def run_linux(
        minio_container_name,
        minio_pw_path,
        minio_url,
        bucket_name,
        mount_path,
        containers: [list, tuple] = None,
        sleep_num=1,
        count=600
):
    """
    linux 开机启动 python 脚本 监控 docker容器状态
    :param minio_container_name: minio 容器名称
    :param minio_pw_path:  minio 用户名密码和账号文件路径
    :param minio_url: minio服务url
    :param bucket_name: 挂载minio桶名称
    :param mount_path: 挂载地址
    :param containers: 重启容器名称
    :param sleep_num: 循环一次睡眠时间
    :param count: 循环次数

    sleep_num * count = 监听最长时间 s
    :return:
    """
    # sudo docker inspect --format '{{.Name}} {{.State.Running}} 容器名称' -> '/minio true'

    c1 = "sudo docker inspect --format '{{.State.Running}}' %s" % minio_container_name
    c2 = f"s3fs -o passwd_file={minio_pw_path} -o url={minio_url} -o allow_other -o no_check_certificate " \
         f"-o use_path_request_style -o umask=000 {bucket_name} {mount_path}"
    i = 0
    while i < count:
        res = execute(c1)
        if not res:
            break
        if res == 'true':
            # 挂载 s3fs
            execute(c2)
            # 重启 容器
            if containers is not None:
                for ite in containers:
                    execute(
                        'sudo docker restart %s' % ite
                    )
            break

    sleep(sleep_num)
    i += 1


if __name__ == '__main__':
    conf = {
        'minio_container_name': 'minio',
        'minio_pw_path': '/xx/.passwd-s3fs',
        'minio_url': 'http://ip:9000',
        'bucket_name': 'bucket_name',
        'mount_path': 'mount_path',
        'containers': ['容器名称1', '容器名称2'],
    }
    run_linux(**conf)

标签:minio,param,name,自动,path,挂载,s3fs
From: https://blog.51cto.com/u_14967494/6033832

相关文章

  • AC 自动机
    概述自动机是一种接受一个有序序列并对之进行判定的数学模型。一般来讲,自动机可以抽象为一个有向图,点为状态,边为某种转移。许多字符串算法的本质和关键,都是利用自......
  • App自动化测试|adb版本过低的报错提示
    adb版本过低的报错Anunknownserver-sideerroroccurredwhileprocessingthecommand.Originalerror:Anunknownserver-sideerroroccurredwhileprocessingthe......
  • 自动化运维:如何构建和部署前端应用
    在这篇文章中,我将向您展示如何管理依赖项以及使用Gulp构建前端应用程序,并将其安全地部署到服务器。前端部署不再那么简单了回想过去,一切都很简单:你只需将HTML上传到服务......
  • 自动化运维:如何构建和部署前端应用
    在这篇文章中,我将向您展示如何管理依赖项以及使用Gulp构建前端应用程序,并将其安全地部署到服务器。前端部署不再那么简单了回想过去,一切都很简单:你只需将HTML上传到服务器,可......
  • 提高效率工具-开发环境代码自动跳IDE
    在日常开发中,当项目组件特别多或者刚接手一个项目时,可能需要花费一定时间去查找页面元素/组件对应的代码。下面就来分享几个插件,通过这些插件,点击页面元素就可以直接跳转到......
  • mule app mvn 自动化部署
    前置条件jdk8mvn5.5anypointstudio7.4部署cdmule_app_projectmvncleanpackage-DattachMuleSources-DlightweightPackagemvniinstall参考pom.xml点......
  • 转投高通平台,大众展露主导自动驾驶的野心
    2022年,英特尔几乎以亏本的价格推动Mobileye上市,成为市场上的一大看点。出现这种情况的原因,除了整个美国自动驾驶大环境不好,和Mobileye接连失去几个大客户......
  • 公共字段自动填充
    公共字段自动填充在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间和修改人等字段。这些字段属于公共字段,也就是很多表中都有......
  • i.MX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2
    i.IMX6ULL-问题解决:NFS挂载失败-VFS:Unabletomountrootfsonunknown-block(2,0)开发环境:移植的linux5.4.7.0ubuntu1804x64arm-linux-gnueabihf-gccv7.5NFS方式......
  • github与jenkins相结合实现push代码后自动部署
    首先在settings里面设置  jenkins-token记得设置勾选  至此github设置完成jenkins  credentials:选择私钥复制进去,github上放置公钥  将之前的gith......