IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 信创环境下分布式文件存储MinIO集群部署 -> 正文阅读

[系统运维]信创环境下分布式文件存储MinIO集群部署

背景

本次项目涉及20+台服务器的部署,技术包括 Nacos 注册中心集群、 GateWay 网关服务集群、 达梦8 关系型数据库服务集群、 MinIO 分布式文件存储服务集群、 Redis 缓存服务集群、 WebSocket 服务端消息推送集群、 Quartz 定时任务服务集群、 Nginx+KeepAlived 反向代理高可用集群、监控服务集群等。这里主要记录下分布式文件存储服务集群以及缓存服务集群的搭建过程。

云服务资源

  • 172.27.204.115
  • 172.27.204.101
  • 172.27.204.110
  • 172.27.204.151

系统信息

# 查看系统内核信息
[root@sx-std-oss-220420-0001 opt]# uname -a
Linux sx-std-oss-220420-0001.novalocal 4.19.90-17.ky10.aarch64 #1 SMP Sun Jun 28 14:27:40 CST 2020 aarch64 aarch64 aarch64 GNU/Linux

# 查看系统版本信息
[root@sx-std-oss-220420-0001 opt]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

Note:以下所有操作分别在4台主机上操作,文件传输: scp minio root@172.27.204.151:/opt/

挂载

在4台主机上创建目录并挂载。

mkdir -p /data/minio
mount /dev/vda1 /data/minio

编写启动脚本

  • 新建脚本
cd /opt
vi start-minio.sh

#!/bin/bash
export MINIO_ACCESS_KEY=Hello
export MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLE
 
/opt/minio server \
http://172.27.204.115/data/minio http://172.27.204.101/data/minio \
http://172.27.204.110/data/minio http://172.27.204.151/data/minio
  • 赋予执行权限
chmod +x start-minio.sh

chmod +x minio

编写服务脚本

  • 新建脚本
vi /lib/systemd/system/minio.service
 
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
 
[Service]
WorkingDirectory=/opt/
ExecStart=/opt/start-minio.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
  • 验证系统服务
systemctl list-unit-files | grep minio
systemctl enable minio
systemctl list-unit-files | grep minio

systemctl status minio
systemctl start minio

关闭防火墙

由于四台主机之间需要进行通信,这里直接关掉了防火墙。

systemctl status firewalld
systemctl stop firewalld

配置桶权限

可以直接登录 MinIO 提供的控制台进行可视化的配置,不过由于我们在信创环境下没有申请开放对应端口,所有通过 mc 命令行客户端进行配置。

这里记录一个实际中因开放了匿名下载文件权限之后,可以遍历所有对象存储目录的问题的解决方法。

  • 可下载

2022-06-18-Download.jpg

  • 可遍历整个桶

2022-06-18-ListBucket.jpg

  • MinIO权限

MinIO 的权限其实就是关于文件、桶的 CRUD 的配置,基于AWS的对象存储规则,配置文件为 JSON 格式。

# 开放匿名下载权限
[root@sx-std-oss-220420-0001 opt]# mc policy set download name-it/local

# 查看下默认的下载权限的JSON文件
[root@sx-std-oss-220420-0001 minio_policy]# mc policy get-json name-it/local
{
 "Statement": [
  {
   "Action": [
    "s3:ListBucket",
    "s3:GetBucketLocation"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::local"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::local/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

可以看到,默认的 download 可以列出桶里的文件列表: GetBucketLocation ,我们把这个权限去掉。

新建一个 custom-local.json ,写入以下内容(与默认生成的配置相比,仅去掉了 GetBucketLocation )。

{
 "Statement": [
  {
   "Action": [
    "s3:GetBucketLocation"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::local"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::local/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

使用我们自定义的权限 JSON 文件。

[root@sx-std-oss-220420-0001 minio_policy]# mc policy set-json custom-local.json name-it/local
  • 可下载,但不可遍历桶下的文件目录

2022-06-18-AccessDenied.jpg

mc常用命令

mc 命令行客户端的使用可参考官方文档,这里附上之前华为云上操作 MinIOmc 客户端常用的命令。

mc常用命令清单

[root@ecs-c8ee-0011  ~]# cd /opt/minio 
[root@ecs-c8ee-0011  minio]# wget https://dl.min.io/client/mc/release/linux-amd64/mc
[root@ecs-c8ee-0011  minio]# mv ./mc /usr/local/bin/ 
[root@ecs-c8ee-0011  minio]# mc config host ls 
-bash: /usr/local/bin/mc: 权限不够
[root@ecs-c8ee-0011  minio]# cd /usr/local/bin 
[root@ecs-c8ee-0011  bin]# chmod +x mc 

# 查看服务列表
mc config host ls
# 新增服务
mc config host add name-it http://localhost:9000 HelloWorld wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLE
Added name-it successfully.
# 密码要求至少八位。
mc config host add name-it http://localhost:9000 HelloWorld

# 删除服务
mc config host remove name-it

# 查看服务信息
mc admin info name-it

# 查看服务下的桶以及桶下的文件
mc ls name-it
mc ls name-it/bucketname

# 下载文件
mc cp name-it/bucketname/filename /tmp

# 删除文件
mc rm name-it/bucketname/filename

# 上传文件
mc cp test.txt name-it/bucketname
mc ls name-it/bucketname

# 创建桶
mc mb name-it/new-bucketname
mc ls name-it

# 删除桶
mc rb name-it/new-bucketname
mc ls name-it

# 强制删除(当桶中有文件,而且想删除)
mc rb --force name-it/new-bucketname
mc ls name-it

# 查看服务下桶的容量
mc du name-it

mc du name-it/bucketname

# 添加用户
mc admin user add name-it user1
mc admin user add name-it user2 12345678

# 列出用户
mc admin user list name-it

# 禁用用户
mc admin user disable name-it user2
mc admin user list name-it

# 启用用户
mc admin user enable name-it user2
mc admin user list name-it

mc admin user info name-it user2

# 删除用户
mc admin user remove name-it user2

# 策略管理
mc admin policy list name-it

mc admin policy info name-it readonly

mc admin policy info name-it writeonly

mc admin policy info name-it readwrite

# 写策略配置文件
# 应用文件
mc admin policy add name-it bucket2-admin-role your-config.json

mc admin policy list name-it

mc admin user info name-it user2

# 关联策略到用户
mc admin policy set name-it bucket2-admin-role user=user2

mc admin user info name-it user2

# 通过Web Console验证user2的权限

# 解绑权限
mc admin policy unset name-it bucket2-admin-role user=user2

mc admin user info name-it user2

帮助

关于 mc 客户端的使用,当遇到不会用的命令时,可通过 --help 参数,查看帮助文档。

Reference

https://docs.min.io/minio/baremetal/reference/minio-mc.html


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:26:09  更:2022-06-25 18:29:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 17:38:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码