Ansible + Docker 部署 MinIO 集群

news/2025/9/28 14:32:10/文章来源:https://www.cnblogs.com/dataverse/p/19116599

Ansible + Docker 部署 MinIO 集群

1. 准备工作

1.1 主机列表

IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构
10.0.0.13 arc-pro-dc01
my.registry.com
16 1 500GB CentOS 7.9.2009 x86_64
10.0.0.16 arc-pro-dc04 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.17 arc-pro-dc05 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.18 arc-pro-dc06 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.19 arc-pro-dc07 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.20 arc-pro-dc08 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.21 arc-pro-dc09 8 2 500GB CentOS 7.9.2009 x86_64

1.2 已安装服务

版本 arc-pro-dc01 arc-pro-dc04 arc-pro-dc05 arc-pro-dc06 arc-pro-dc07 arc-pro-dc08 arc-pro-dc09
Ansible 2.9.27
Harbor v2.13.2
Docker 28.1.1
Docker Compose v2.39.2

说明:

  • 每个服务器的 IP 均是静态的
  • 每个服务器的防火墙都已关闭
  • 每个服务器的 SELINUX 已经禁用
  • 每个服务器均存在一个管理员用户 admin,该用户可以免密码执行 sudo 命令;
  • 在 arc-pro-dc01 机器上,可以使用 admin 用户免密码 ssh 到其他机器;
  • 服务器之间的时间同步;
  • 所有操作均使用 admin 用户完成;
  • 私有镜像仓库地址:https://my.registry.com:10443。

为使集群满足以上要求,参考下列文章进行配置:

  • 使用 VMware Workstation 安装 CentOS-7 虚拟机
  • 用 Ansible 批量完成 CentOS 7 操作系统基础配置
  • 使用 Ansible 批量安装 Docker
  • Docker 私有镜像仓库 Harbor 安装部署带签名认证

1.3 集群规划

版本 arc-pro-dc04 arc-pro-dc05 arc-pro-dc0 6 arc-pro-dc07 arc-pro-dc08 arc-pro-dc09
MinIO RELEASE.2025-09-07T16-13-09Z

每台机器使用一个数据目录:/data/minio/data

1.4 镜像准备

找一个可以连接互联网的、已经安装了 docker 的服务器,下载镜像

docker pull minio/minio:RELEASE.2025-09-07T16-13-09Z
docker image save minio/minio:RELEASE.2025-09-07T16-13-09Z -o minio.RELEASE.2025-09-07T16-13-09Z.tar.gz

将 nifi.1.28.1.tar.gz 上传到本集群任意一台服务器,导入镜像:

docker load minio.RELEASE.2025-09-07T16-13-09Z.tar.gz
docker tag minio/minio:RELEASE.2025-09-07T16-13-09Z my.registry.com:10443/library/minio/minio:RELEASE.2025-09-07T16-13-09Z
# 上传到私服
docker push my.registry.com:10443/library/minio/minio:RELEASE.2025-09-07T16-13-09Z

2. Ansible 文件

2.1 Ansible 目录结构

说明:在 arc-pro-dc01 机器上,执行 ansible 命令的基础目录为 /home/admin/ansible

$ tree /home/admin/ansible/
/home/admin/ansible/
├── ansible.cfg
├── hosts
└── minio   ├── docker-compose.yml.j2
    └── start-minio-container.yml

2.2 ansible.cfg

[defaults]
inventory=./hosts
host_key_checking=False

2.3 hosts

[minio]
arc-pro-dc04
arc-pro-dc05
arc-pro-dc06
arc-pro-dc07
arc-pro-dc08
arc-pro-dc09

2.4 docker-compose.yml.j2

services:minio:image: my.registry.com:10443/library/minio/minio:RELEASE.2025-09-07T16-13-09Zrestart: unless-stoppedcontainer_name: miniohostname: {{ inventory_hostname }}network_mode: hostenvironment:MINIO_VOLUMES: "http://arc-pro-dc0{4...9}:9000/root/minio/data"MINIO_ROOT_USER: "minioadmin"MINIO_ROOT_PASSWORD: "minioadmin123"volumes:- {{ data_dir }}:/root/minio/datacommand: server --console-address ":9090"

说明:

  • MINIO_ROOT_USER:管理员用户名
  • MINIO_ROOT_PASSWORD:管理员密码(最少 8 位)
  • MINIO_VOLUMES:集群地址和数据目录,arc-pro-dc0{4...9} 代表从 arc-pro-dc04 到 arc-pro-dc09 这 6 台机器,每个 minio 容器内的数据盘都是 /root/minio/data

2.5 start-minio-container.yml

---
- name: Start Minio Containerhosts: miniobecome: truegather_facts: falsevars:minio_owner: adminminio_group: admincompose_file_dir: /opt/app/miniodata_dir: /data/minio/datatasks:- name: Remove old minio container if existscommand: docker rm -f minioignore_errors: true- name: Remove minio directories if they existfile:path: "{{ item }}"state: absentloop:- "{{ compose_file_dir }}"- "{{ data_dir }}"- name: Create minio directoriesfile:path: "{{ item }}"state: directoryowner: "{{ minio_owner }}"group: "{{ minio_group }}"mode: '0755'loop:- "{{ compose_file_dir }}"- "{{ data_dir }}"- name: Deploy docker-compose.ymltemplate:src: docker-compose.yml.j2dest: "{{ compose_file_dir }}/docker-compose.yml"owner: "{{ minio_owner }}"group: "{{ minio_group }}"mode: '0644'- name: Start minio containercommand: docker-compose -f {{ compose_file_dir }}/docker-compose.yml up -d

3. 部署

在 arc-pro-dc01(Ansible 管理节点) 服务器执行

$ pwd
/home/admin/ansible# 部署并启动 Minio 集群
$ ansible-playbook nifi/start-minio-container.yml

查看任一一个节点的容器日志,查看登录信息:docker logs minio

INFO: IAM load(startup) finished. (duration: 4.164028ms)
---------------------------
MinIO Object Storage Server
Copyright: 2015-2025 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2025-09-07T16-13-09Z (go1.24.6 linux/amd64)API: http://10.0.0.16:9000  http://172.17.0.1:9000  http://172.18.0.1:9000  http://127.0.0.1:9000 
WebUI: http://10.0.0.16:9090 http://172.17.0.1:9090 http://172.18.0.1:9090 http://127.0.0.1:9090        Docs: https://docs.min.io
---------------------------
# 这里说建议内核版本升级到 4.0 以上,生产环境要考虑升级
WARN: Detected Linux kernel version older than 4.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x linux kernel version for best performance

5. 访问页面

访问任一节点:

  • http://10.0.0.16:9090
  • http://10.0.0.17:9090
  • http://10.0.0.18:9090
  • http://10.0.0.19:9090
  • http://10.0.0.20:9090
  • http://10.0.0.21:9090

image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​​万用表与电流探头测量电流信号的技术对比分析​​

万用表与电流探头在电流测量中各有优势:万用表适合小电流、精度高,但需断电;电流探头非接触、适合大电流和高频信号。在电子测量领域,电流测量是电路调试、性能评估和故障诊断的基础工作。万用表和电流探头作为两种…

flink运行时架构 - --

运行组件: 最核心的是管理者jobManager和实际干活的taskManager

WPF Canvas mark triangle, circle, and retangle, then save the whole canvas as jpg file

Install-Package Wpf.Prism; private void SaveAsJpgCommandExecuted(){var dpi=VisualTreeHelper.GetDpi(this);RenderTargetBitmap rtb=new RenderTargetBitmap((int)(cvs.ActualWidth*dpi.DpiScaleY), (int)(cvs.Ac…

网站开发毕业设计周志wordpress sae 主题

BP神经网络 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。总结(BP神经网络和深度学习在本质上有以下区别) 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。 BP神经网络(误差反…

北京牛鼻子网站建设公司m3u8插件 wordpress

重点: 1.程序项目做出来了,需要打包发布给用户。如何打包是关键。 2.采用InstallShield软件进行发布。 步骤一:创建一个依赖三方库配置环境的bat文件的项目。 (主要测试三方库打包 和如果有bat文件,需要先创建环境&…

自动遍历测试利器:开源工具AppCrawler 配置全解析

Appcrawler是一个基于自动遍历的App爬虫工具,支持Android和IOS,支持真机和模拟器。最大的特点是灵活性高,可通过配置来设定遍历的规则。 配置文件格式 执行参数与配置文件 capability设置:与appium完全一致 testca…

得帆云ETL全新版本升级驱动数据高效流转

在数字化浪潮持续深化的背景下,数据已成为企业核心战略资产,高效的数据处理与集成能力,更是企业在数据驱动时代构筑竞争优势的关键支撑。 得帆云基于对技术创新的持续深耕及客户业务需求的深度洞察,正式推出ETL系统…

集成微信的企业网站管理系统凌河建设网站

一、Hadoop 1.x 和 2.x 的区别 二、HDFS架构 1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件…

挖同行墙脚!有稳定供应商的客户怎么下手构建?

挖同行墙脚!有稳定供应商的客户怎么下手构建?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

兰州网站优化服务企业建立网站

闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。 闭包的形式主要有三种: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封…

开源技术崛起:中国如何构建数字经济时代的创新基础设施

开源技术崛起:中国如何构建数字经济时代的创新基础设施 在数字经济成为全球竞争新赛道的今天,开源技术已从单纯的软件开发模式跃升为国家战略级创新基础设施。中国开发者群体规模突破900万大关,本土代码托管平台通过…

250928

目录JT-JY5T2S1-1JT-JY5T2S1-2FT-(JY&VOAs) JT-JY5T2S1-1Good morning, North College Library, How can i help you? I was wondering if it will possible to join the library? Are you a student in North C…

解析网站dnshtml5做网站心得体会

232.用栈实现队列 232. 用栈实现队列 简单 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列…

北京做网站比较好的公司兼容ie8的网站模板

文章目录 1 SQLite1.1 世界上最流行的数据库1.1 SQLite简介1.2 插入语句1.3 查询数据1.4 更新数据1.5 删除数据2 DuckDB2.1 DuckDB简介2.2 DuckDB与Python结合使用2.2.1 创建表2.2.2 分析语句2.2.3 导出为parquet文件2.3 Windows中使用DuckDB3 参考附录1 SQLite Python的一个特…

地图商业授权共享 - no

地图商业授权共享 百度、高德、腾讯三大地图商业授权起步都是:5万元/年。 小企业难顶。 有需要的老铁,可以付费共享,好商量。加WX:E2E188

DevOps平台选型指南:数字化转型中的技术决策关键

DevOps平台选型指南:数字化转型中的技术决策关键 在数字化转型浪潮席卷全球的当下,DevOps平台已经从单纯的技术工具演变为企业技术架构的战略性组成部分。随着云计算、微服务架构和持续交付理念的普及,企业面临着如…

window 安全模式卸载任何软件

win+R 命令行 输入msconfig 打开系统配置 切换到引导页签,勾选安全引导后选择重启,重启后即为安全模式 安全模式下找到软件所在的文件目录,暴力删除即可,一次删除不干净,多重启几次删除就好了I have a dream : San…

定制笔记本电脑工厂排名:从基础代工到联合设计全面分析 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

题解:qoj1261 Inv

题意:给出 \(n,k\),求满足 \(p(p(i)) = i\) 且逆序对数等于 \(k\) 的排列数量对 \(2\) 取模。 做法: 对 \(2\) 取模,很神秘的东西,考虑找找性质。 注意到 \(p,p^{-1}\) 逆序对数一样,且满足条件的 \(p\) 满足 \(…