这是本节的多页打印视图。 .
模块:MINIO
MinIO 是一个与 S3 兼容的对象存储服务,可以用来存储文档、图片、视频和备份。它支持原生的多节点多磁盘的高可用部署,可扩展、安全且易于使用。
Pigsty 中的 PGSQL 模块默认会使用本地 posix 文件系统存储备份,但您也可以选择使用 MinIO,或者外部的 S3 服务作为集中式的备份存储。 如果使用 MinIO 作为备份存储库,那么在部署 PGSQL 集群前应当首先初始化 MinIO 集群。请注意,单机部署的 MinIO 不应当用于生产环境。
MinIO 模块需要安装在 Pigsty 纳管的节点上(也就是安装了 NODE 模块的节点),因为生产环境中的 MinIO 必须要使用 SSL 证书,所以会用到节点上的 CA。
请注意:MinIO 服务必须通过域名与 HTTPS 访问,所以请务必确保: MinIO 服务域名(默认为 sss.pigsty) 正确指向 MinIO 服务器节点
- 您可以在内网的 DNS 服务器上添加一条记录
- 如果您启用了 Infra 节点上的 DNS 服务器,可以在
dns_records中添加记录 - 您也可以在
node_etc_hosts中添加静态解析记录
参考实例:
prod.yml配置文件
配置
在部署之前,你需要定义一个 MinIO 集群。MinIO 有一些参数可以配置。
单机单盘
参考:MinIO 单机单盘部署
定义一个单例 MinIO 实例非常简单:
单机模式下,唯一必要的参数是 minio_seq 和 minio_cluster,它们会唯一标识每一个 MinIO 实例。
单节点单磁盘模式仅用于开发目的,因此您可以使用一个普通的目录作为数据目录,该目录默认为 /data/minio。
请注意,在多盘或多节点模式下,如果使用普通目录作为数据目录,而不是真实磁盘挂载点,MinIO 将拒绝启动。
单机多盘
参考:MinIO 单机多盘部署
要在单节点上使用多块磁盘,你需要以 {{ prefix }}{x...y} 的格式指定 minio_data,该格式定义了一系列磁盘挂载点。
本例定义了一个带有4块磁盘的单节点 MinIO 集群:/data1、/data2、/data3 和 /data4。启动 MinIO 之前,你需要正确地挂载它们:
多机多盘
参考:MinIO 多机多盘部署
MinIO 多节点部署需要使用一个额外的 minio_node 参数:
在 minio_node 中的身份参数占位符 ${minio_cluster} 和 ${minio_seq} 将分别被替换为 minio_cluster 和 minio_seq 的值,并用作 MinIO 节点名称。
暴露服务
MinIO 默认使用 9000 端口提供服务。多节点 MinIO 集群可以通过任意一个节点来访问其服务。
多节点 MinIO 集群的高可用接入可以使用 L2 VIP 或 HAProxy 实现。例如,您可以选择使用 keepalived 在 MinIO 集群上绑定一个 L2 VIP,
或者使用由 NODE 模块的提供的 haproxy 组件,通过负载均衡器对外暴露 MinIO 服务。
下面是使用 HAProxy 对外暴露服务的一个例子:
访问服务
如果您想要访问上面通过 HAProxy 暴露的 MinIO,以 PGSQL 备份配置为例,可以修改 pgbackrest_repo 中的配置,添加新的备份仓库定义:
暴露管控
MinIO 默认通过 9001 端口提供Web管控界面。
将后台管理界面暴露给外部可能存在安全隐患。如果你希望这样做,请将 MinIO 添加到 infra_portal 并刷新 Nginx 配置。
查看 MinIO 示例配置 与专用的样例 Vagrantfile 来获取更多信息。
管理
下面是 MinIO 模块中常用的管理命令,更多问题请参考 FAQ:MINIO。
创建集群
客户端配置
要使用 mcli 客户端访问 minio 服务器集群,首先要配置服务器的别名(alias):
使用 mcli 可以管理 MinIO 中的业务用户,例如这里我们可以使用命令行创建两个业务用户:
MinIO mcli 的完整功能参考,请查阅文档: MinIO 客户端。
增删改查
您可以对MinIO中的存储桶进行增删改查
您也可以对存储桶内的对象进行增删改查
剧本
MinIO 模块提供了一个默认的剧本 minio.yml ,用于安装 MinIO 集群。但首先你需要定义它。
minio.yml
剧本 minio.yml 用于在节点上安装 MinIO 模块。
minio-id: 生成/校验 minio 身份参数minio_os_user: 创建操作系统用户 miniominio_install: 安装 minio/mcli 软件包minio_clean: 移除 minio 数据目录 (默认不移除)minio_dir: 创建 minio 目录minio_config: 生成 minio 配置minio_conf: minio 主配置文件minio_cert: minio SSL证书签发minio_dns: minio DNS记录插入
minio_launch: minio 服务启动minio_register: minio 纳入监控minio_provision: 创建 minio 别名/存储桶/业务用户minio_alias: 创建 minio 客户端别名(管理节点上)minio_bucket: 创建 minio 存储桶minio_user: 创建 minio 业务用户
监控
Pigsty 提供了两个与 MINIO 模块有关的监控面板:
MinIO Overview 展示了 MinIO 集群的整体监控指标。
MinIO Instance 展示了单个 MinIO 实例的监控指标详情
参数
MINIO 模块有 15 个相关参数:
| 参数 | 类型 | 级别 | 注释 |
|---|---|---|---|
minio_seq |
int | I | minio 实例标识符,必填 |
minio_cluster |
string | C | minio 集群名称,默认为 minio |
minio_clean |
bool | G/C/A | 初始化时清除 minio?默认为 false |
minio_user |
username | C | minio 操作系统用户,默认为 minio |
minio_node |
string | C | minio 节点名模式 |
minio_data |
path | C | minio 数据目录,使用 {x...y} 指定多个磁盘 |
minio_domain |
string | G | minio 外部域名,默认为 sss.pigsty |
minio_port |
port | C | minio 服务端口,默认为 9000 |
minio_admin_port |
port | C | minio 控制台端口,默认为 9001 |
minio_access_key |
username | C | 根访问密钥,默认为 minioadmin |
minio_secret_key |
password | C | 根密钥,默认为 minioadmin |
minio_extra_vars |
string | C | minio 服务器的额外环境变量 |
minio_alias |
string | G | minio 部署的客户端别名 |
minio_buckets |
bucket[] | C | 待创建的 minio 存储桶列表 |
minio_users |
user[] | C | 待创建的 minio 用户列表 |
1 - 指标列表
MINIO 模块包含有 79 类可用监控指标。
| Metric Name | Type | Labels | Description |
|---|---|---|---|
| minio_audit_failed_messages | counter | ip, job, target_id, cls, instance, server, ins |
Total number of messages that failed to send since start |
| minio_audit_target_queue_length | gauge | ip, job, target_id, cls, instance, server, ins |
Number of unsent messages in queue for target |
| minio_audit_total_messages | counter | ip, job, target_id, cls, instance, server, ins |
Total number of messages sent since start |
| minio_cluster_bucket_total | gauge | ip, job, cls, instance, server, ins |
Total number of buckets in the cluster |
| minio_cluster_capacity_raw_free_bytes | gauge | ip, job, cls, instance, server, ins |
Total free capacity online in the cluster |
| minio_cluster_capacity_raw_total_bytes | gauge | ip, job, cls, instance, server, ins |
Total capacity online in the cluster |
| minio_cluster_capacity_usable_free_bytes | gauge | ip, job, cls, instance, server, ins |
Total free usable capacity online in the cluster |
| minio_cluster_capacity_usable_total_bytes | gauge | ip, job, cls, instance, server, ins |
Total usable capacity online in the cluster |
| minio_cluster_drive_offline_total | gauge | ip, job, cls, instance, server, ins |
Total drives offline in this cluster |
| minio_cluster_drive_online_total | gauge | ip, job, cls, instance, server, ins |
Total drives online in this cluster |
| minio_cluster_drive_total | gauge | ip, job, cls, instance, server, ins |
Total drives in this cluster |
| minio_cluster_health_erasure_set_healing_drives | gauge | pool, ip, job, cls, set, instance, server, ins |
Get the count of healing drives of this erasure set |
| minio_cluster_health_erasure_set_online_drives | gauge | pool, ip, job, cls, set, instance, server, ins |
Get the count of the online drives in this erasure set |
| minio_cluster_health_erasure_set_read_quorum | gauge | pool, ip, job, cls, set, instance, server, ins |
Get the read quorum for this erasure set |
| minio_cluster_health_erasure_set_status | gauge | pool, ip, job, cls, set, instance, server, ins |
Get current health status for this erasure set |
| minio_cluster_health_erasure_set_write_quorum | gauge | pool, ip, job, cls, set, instance, server, ins |
Get the write quorum for this erasure set |
| minio_cluster_health_status | gauge | ip, job, cls, instance, server, ins |
Get current cluster health status |
| minio_cluster_nodes_offline_total | gauge | ip, job, cls, instance, server, ins |
Total number of MinIO nodes offline |
| minio_cluster_nodes_online_total | gauge | ip, job, cls, instance, server, ins |
Total number of MinIO nodes online |
| minio_cluster_objects_size_distribution | gauge | ip, range, job, cls, instance, server, ins |
Distribution of object sizes across a cluster |
| minio_cluster_objects_version_distribution | gauge | ip, range, job, cls, instance, server, ins |
Distribution of object versions across a cluster |
| minio_cluster_usage_deletemarker_total | gauge | ip, job, cls, instance, server, ins |
Total number of delete markers in a cluster |
| minio_cluster_usage_object_total | gauge | ip, job, cls, instance, server, ins |
Total number of objects in a cluster |
| minio_cluster_usage_total_bytes | gauge | ip, job, cls, instance, server, ins |
Total cluster usage in bytes |
| minio_cluster_usage_version_total | gauge | ip, job, cls, instance, server, ins |
Total number of versions (includes delete marker) in a cluster |
| minio_cluster_webhook_failed_messages | counter | ip, job, cls, instance, server, ins |
Number of messages that failed to send |
| minio_cluster_webhook_online | gauge | ip, job, cls, instance, server, ins |
Is the webhook online? |
| minio_cluster_webhook_queue_length | counter | ip, job, cls, instance, server, ins |
Webhook queue length |
| minio_cluster_webhook_total_messages | counter | ip, job, cls, instance, server, ins |
Total number of messages sent to this target |
| minio_cluster_write_quorum | gauge | ip, job, cls, instance, server, ins |
Maximum write quorum across all pools and sets |
| minio_node_file_descriptor_limit_total | gauge | ip, job, cls, instance, server, ins |
Limit on total number of open file descriptors for the MinIO Server process |
| minio_node_file_descriptor_open_total | gauge | ip, job, cls, instance, server, ins |
Total number of open file descriptors by the MinIO Server process |
| minio_node_go_routine_total | gauge | ip, job, cls, instance, server, ins |
Total number of go routines running |
| minio_node_ilm_expiry_pending_tasks | gauge | ip, job, cls, instance, server, ins |
Number of pending ILM expiry tasks in the queue |
| minio_node_ilm_transition_active_tasks | gauge | ip, job, cls, instance, server, ins |
Number of active ILM transition tasks |
| minio_node_ilm_transition_missed_immediate_tasks | gauge | ip, job, cls, instance, server, ins |
Number of missed immediate ILM transition tasks |
| minio_node_ilm_transition_pending_tasks | gauge | ip, job, cls, instance, server, ins |
Number of pending ILM transition tasks in the queue |
| minio_node_ilm_versions_scanned | counter | ip, job, cls, instance, server, ins |
Total number of object versions checked for ilm actions since server start |
| minio_node_io_rchar_bytes | counter | ip, job, cls, instance, server, ins |
Total bytes read by the process from the underlying storage system including cache, /proc/[pid]/io rchar |
| minio_node_io_read_bytes | counter | ip, job, cls, instance, server, ins |
Total bytes read by the process from the underlying storage system, /proc/[pid]/io read_bytes |
| minio_node_io_wchar_bytes | counter | ip, job, cls, instance, server, ins |
Total bytes written by the process to the underlying storage system including page cache, /proc/[pid]/io wchar |
| minio_node_io_write_bytes | counter | ip, job, cls, instance, server, ins |
Total bytes written by the process to the underlying storage system, /proc/[pid]/io write_bytes |
| minio_node_process_cpu_total_seconds | counter | ip, job, cls, instance, server, ins |
Total user and system CPU time spent in seconds |
| minio_node_process_resident_memory_bytes | gauge | ip, job, cls, instance, server, ins |
Resident memory size in bytes |
| minio_node_process_starttime_seconds | gauge | ip, job, cls, instance, server, ins |
Start time for MinIO process per node, time in seconds since Unix epoc |
| minio_node_process_uptime_seconds | gauge | ip, job, cls, instance, server, ins |
Uptime for MinIO process per node in seconds |
| minio_node_scanner_bucket_scans_finished | counter | ip, job, cls, instance, server, ins |
Total number of bucket scans finished since server start |
| minio_node_scanner_bucket_scans_started | counter | ip, job, cls, instance, server, ins |
Total number of bucket scans started since server start |
| minio_node_scanner_directories_scanned | counter | ip, job, cls, instance, server, ins |
Total number of directories scanned since server start |
| minio_node_scanner_objects_scanned | counter | ip, job, cls, instance, server, ins |
Total number of unique objects scanned since server start |
| minio_node_scanner_versions_scanned | counter | ip, job, cls, instance, server, ins |
Total number of object versions scanned since server start |
| minio_node_syscall_read_total | counter | ip, job, cls, instance, server, ins |
Total read SysCalls to the kernel. /proc/[pid]/io syscr |
| minio_node_syscall_write_total | counter | ip, job, cls, instance, server, ins |
Total write SysCalls to the kernel. /proc/[pid]/io syscw |
| minio_notify_current_send_in_progress | gauge | ip, job, cls, instance, server, ins |
Number of concurrent async Send calls active to all targets (deprecated, please use ‘minio_notify_target_current_send_in_progress’ instead) |
| minio_notify_events_errors_total | counter | ip, job, cls, instance, server, ins |
Events that were failed to be sent to the targets (deprecated, please use ‘minio_notify_target_failed_events’ instead) |
| minio_notify_events_sent_total | counter | ip, job, cls, instance, server, ins |
Total number of events sent to the targets (deprecated, please use ‘minio_notify_target_total_events’ instead) |
| minio_notify_events_skipped_total | counter | ip, job, cls, instance, server, ins |
Events that were skipped to be sent to the targets due to the in-memory queue being full |
| minio_s3_requests_4xx_errors_total | counter | ip, job, cls, instance, server, ins, api |
Total number of S3 requests with (4xx) errors |
| minio_s3_requests_errors_total | counter | ip, job, cls, instance, server, ins, api |
Total number of S3 requests with (4xx and 5xx) errors |
| minio_s3_requests_incoming_total | gauge | ip, job, cls, instance, server, ins |
Total number of incoming S3 requests |
| minio_s3_requests_inflight_total | gauge | ip, job, cls, instance, server, ins, api |
Total number of S3 requests currently in flight |
| minio_s3_requests_rejected_auth_total | counter | ip, job, cls, instance, server, ins |
Total number of S3 requests rejected for auth failure |
| minio_s3_requests_rejected_header_total | counter | ip, job, cls, instance, server, ins |
Total number of S3 requests rejected for invalid header |
| minio_s3_requests_rejected_invalid_total | counter | ip, job, cls, instance, server, ins |
Total number of invalid S3 requests |
| minio_s3_requests_rejected_timestamp_total | counter | ip, job, cls, instance, server, ins |
Total number of S3 requests rejected for invalid timestamp |
| minio_s3_requests_total | counter | ip, job, cls, instance, server, ins, api |
Total number of S3 requests |
| minio_s3_requests_ttfb_seconds_distribution | gauge | ip, job, cls, le, instance, server, ins, api |
Distribution of time to first byte across API calls |
| minio_s3_requests_waiting_total | gauge | ip, job, cls, instance, server, ins |
Total number of S3 requests in the waiting queue |
| minio_s3_traffic_received_bytes | counter | ip, job, cls, instance, server, ins |
Total number of s3 bytes received |
| minio_s3_traffic_sent_bytes | counter | ip, job, cls, instance, server, ins |
Total number of s3 bytes sent |
| minio_software_commit_info | gauge | ip, job, cls, instance, commit, server, ins |
Git commit hash for the MinIO release |
| minio_software_version_info | gauge | ip, job, cls, instance, version, server, ins |
MinIO Release tag for the server |
| minio_up | Unknown | ip, job, cls, instance, ins |
N/A |
| minio_usage_last_activity_nano_seconds | gauge | ip, job, cls, instance, server, ins |
Time elapsed (in nano seconds) since last scan activity. |
| scrape_duration_seconds | Unknown | ip, job, cls, instance, ins |
N/A |
| scrape_samples_post_metric_relabeling | Unknown | ip, job, cls, instance, ins |
N/A |
| scrape_samples_scraped | Unknown | ip, job, cls, instance, ins |
N/A |
| scrape_series_added | Unknown | ip, job, cls, instance, ins |
N/A |
| up | Unknown | ip, job, cls, instance, ins |
N/A |
2 - 常见问题
启动多节点/多盘MinIO集群失败怎么办?
在单机多盘或多机多盘模式下,如果数据目录不是有效的磁盘挂载点,MinIO会拒绝启动。
请使用已挂载的磁盘作为MinIO的数据目录,而不是普通目录。您只能在单机单盘模式下使用普通目录作为 MinIO 的数据目录,作为开发测试之用。
如何部署一个多节点/多盘MinIO集群?
如何向已有的MinIO集群中添加新的成员?
在部署之前,您最好规划MinIO集群容量,因为新增成员需要全局重启。
请参考这里:扩展MinIO部署
如何让PGSQL模块使用高可用MinIO作为备份目的地?
使用可选的负载均衡器和不同的端口访问HA MinIO集群。
这里有一个示例:访问MinIO服务
