• docker swarm 部署minio集群


    docker swarm 布署minio集群

    Minio 集群至少需要四个节点,因此至少安装 4 台虚拟机。主机名随意,最好以数字后缀区分,方便识别。

    前提条件

    节点目录如下:

    192.168.20.245 master245
    192.168.20.253 node253
    192.168.20.252 node252
    192.168.20.247 node247
    

    主节点执行以下命令:

    [root@master245 ~]# docker swarm init --advertise-addr 192.168.20.245
    
    • 记录此处生成的token,后续节点加入需用到。

    从节点分别执行以下命令:

    [root@node253 ~]# docker swarm join --token SWMTKN-1-0djcl7ux0xg1hl366sgc1yohxc56wva55i8lggzc8hxh1uw487-39l3r4d0huc6fd1ktwotxx71f 192.168.20.245:2377
    

    节点列表如下:

    [root@master245 minio]# docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    yzq5drjkhurkx8b0qydzecxo9 *   master245           Ready               Active              Leader              19.03.11
    piipiswdy5bgvewtdt7brer16     node247             Ready               Active                                  19.03.8
    ozth72jm8rtq5wca6xgm9gc9r     node252             Ready               Active                                  19.03.8
    pvic27dwckvuefq777frk9ee4     node253             Ready               Active                                  19.03.11
    

    删除节点

    # master
    [root@master245 ~]# docker node update --availability drain node252 
    # node
    [root@node252 ~]# docker swarm leave --force   
    # master           
    root@master245 ~]# docker node rm --force node252
    

    主节点生成密钥,手动生成接口使用的 access key 和 secret key

    • 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。
    [root@master245 minio]# echo "minioadmin" | docker secret create access_key -
    jdhw6gnannlfhicvnjv7kiibh
    [root@master245 minio]# echo "12345678" | docker secret create secret_key -
    szd7nzce95aeibrvn30keeapr
    
    • 此处密码长度最小为8位。

    节点打标签,绑定容器与节点之间一一对应的关系,主节点执行。

    [root@master245 minio]# docker node update --label-add minio1=true yzq5drjkhurkx8b0qydzecxo9
    yzq5drjkhurkx8b0qydzecxo9
    [root@master245 minio]# docker node update --label-add minio2=true piipiswdy5bgvewtdt7brer16
    piipiswdy5bgvewtdt7brer16
    [root@master245 minio]# docker node update --label-add minio3=true ozth72jm8rtq5wca6xgm9gc9r
    ozth72jm8rtq5wca6xgm9gc9r
    [root@master245 minio]# docker node update --label-add minio4=true pvic27dwckvuefq777frk9ee4
    pvic27dwckvuefq777frk9ee4
    

    Stack compose 文件

    修改主机名hostname,标签等参数。

    部署minio分布式服务,主节点执行

    • 通过FTP或lrzsz工具上传修改后的docker-compose-secrets.yaml文件到当前目录。
    • 分布式Minio使用的磁盘里必须是干净的,里面没有数据。
    • 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。
    [root@master245 ~]# yum -y install lrzsz
    # 上传
    rz
    # 下载
    sz filename
    
    [root@master245 minio]# docker stack deploy --compose-file=docker-compose-secrets.yaml minio_stack5
    Creating network minio_stack5_minio_distributed
    Creating service minio_stack5_minio3
    Creating service minio_stack5_minio4
    Creating service minio_stack5_minio1
    Creating service minio_stack5_minio2
    

    查看执行结果

    [root@master245 minio]# docker stack ps minio_stack5
    ID                  NAME                    IMAGE                                      NODE                DESIRED STATE       CURRENT STATE                     ERROR               PORTS
    pce2wnrvh3k1        minio_stack5_minio2.1   minio/minio:RELEASE.2020-06-03T22-13-49Z   node247             Running             Preparing 13 seconds ago                              
    s6h6kryczbuy        minio_stack5_minio1.1   minio/minio:RELEASE.2020-06-03T22-13-49Z   master245           Running             Preparing 29 seconds ago                              
    wat061fy3is5        minio_stack5_minio4.1   minio/minio:RELEASE.2020-06-03T22-13-49Z   node253             Running             Preparing 41 seconds ago                              
    2twtxfbnftge        minio_stack5_minio3.1   minio/minio:RELEASE.2020-06-03T22-13-49Z   node252             Running             Starting less than a second ago 
    
    [root@master245 minio]# docker service ls
    ID                  NAME                  MODE                REPLICAS            IMAGE                                      PORTS
    5g8jq3002in5        minio_stack5_minio1   replicated          1/1                 minio/minio:RELEASE.2020-06-03T22-13-49Z   *:9001->9000/tcp
    yvqc4mt08uep        minio_stack5_minio2   replicated          1/1                 minio/minio:RELEASE.2020-06-03T22-13-49Z   *:9002->9000/tcp
    4kss16v7h2pz        minio_stack5_minio3   replicated          1/1                 minio/minio:RELEASE.2020-06-03T22-13-49Z   *:9003->9000/tcp
    ppgqku1q61lo        minio_stack5_minio4   replicated          1/1                 minio/minio:RELEASE.2020-06-03T22-13-49Z   *:9004->9000/tcp
    
    • 如果不出意外,在四个节点上都会分别运行一个 docker 容器。

    验证

    • 验证是否部署成功,使用浏览器访问Minio服务或者使用 MinIO Client mc。多个节点的存储容量和就是分布式Minio的存储容量。

    删除集群

    [root@master245 minio]# docker stack rm minio_stack5
    Removing service minio_stack5_minio1
    Removing service minio_stack5_minio2
    Removing service minio_stack5_minio3
    Removing service minio_stack5_minio4
    Removing network minio_stack5_minio_distributed
    

    注意事项

    • 默认情况下Docker Compose file使用的是最新版的MinIO server的Docker镜像,你可以修改image tag来拉取指定版本的MinIO Docker image
    • 默认情况下会创建4个minio实例,你可以添加更多的MinIO服务(最多总共16个)到你的MinIO Comose deployment。添加一个服务。
      • 复制服务定义并适当地更改新服务的名称。
      • 更新每个服务中的命令部分。
      • 更新要为新服务公开的端口号。 另外,请确保分配给新服务的端口尚未使用。
    • 默认情况下,MinIO服务使用的是local volume driver. 更多配置选项,请访问Docker documentation
    • Docker compose file中的MinIO服务使用的端口是9001到9004,这允许多个服务在主机上运行。更多配置选项,请访问Docker documentation
    • Docker Swarm默认使用的是ingress做负载均衡,你可以跟据需要配置external load balancer based

    负载均衡代理

  • 相关阅读:
    WSP部署错误—SharePoint管理框架中的对象“SPSolutionLanguagePack Name=0”依赖其他不存在的对象
    Elevate Permissions To Modify User Profile
    Error with Stsadm CommandObject reference not set to an instance of an object
    ASP.NET MVC3添加Controller时没有Scaffolding options
    测试使用Windows Live Writer写日志
    配置TFS 2010出现错误—SQL Server 登录的安全标识符(SID)与某个指定的域或工作组帐户冲突
    使用ADO.NET DbContext Generator出现错误—Unable to locate file
    CSS
    HTML DIV标签
    数据库
  • 原文地址:https://www.cnblogs.com/lenovo_tiger_love/p/13050511.html
Copyright © 2020-2023  润新知