手把手教你搭建MinIO分布式集群

要求:

  1. MinIO集群规格:2节点2个磁盘。

  2. Minio域名:test_minio.com

  3. 数据目录:/opt/minio/data1,/opt/minio/data2

  4. 两节点证书保持一致

  5. 关闭防火墙

建议:参考英文官网

1. Linux场景:MinIO分布式集群构建

1.1 规定MinIO的目录结构

[root@192 opt]# tree -f minio/
minio
├── minio/bin                              # 二进制文件目录
│   └── minio/bin/minio
├── minio/certs                            # 证书文件目录
│   ├── minio/certs/private.key            # 私钥文件
│   ├── minio/certs/public.crt             # 证书文件
├── minio/config                           # 配置文件目录
├── minio/data1                            # minio数据目录1
├── minio/data2                            # minio数据目录2
├── minio/log                              # 日志文件目录
│   └── minio/log/minio.log                # 日志文件
└── minio/run                              # 自定义脚本├── minio/run/create_cert.sh           # 生成证书脚本├── minio/run/minio.service            # minio service文件├── minio/run/stop.sh                  # minio服务停止脚本└── minio/run/start.sh                 # minio服务启动脚本8 directories, 9 files

1.2 定义minio.service和启动、停止脚本

  • minio.service文件
[Unit]
Description=Minio service
Documentation=This is a Minio Service.[Service]
Type=forking
# 启动服务时的等待的秒数,TimeoutStartSec 的值指定为 0,从而关闭超时检测。
TimeoutStartSec=10
# 工作目录
WorkingDirectory=/opt/minio
# 服务运行用户
User=root
# 服务运行用户组
Group=root
Restart=on-failure
RestartSec=15s
ExecStart=/opt/minio/run/start.sh
ExecStop=/opt/minio/run/stop.sh[Install]
WantedBy=multi-user.target
  • start.sh 启动脚本

注意调整CURRENT_IP的值为当前节点的IP地址。

#!/bin/bash
## MinIO启动脚本# 设置环境变量
# 设置HOME
export MINIO_HOME=opt/minio
# 默认配置文件目录${HOME}/.minio,默认会将配置信息生成到config.json文件
export MINIO_COFNIG_DIR=/${MINIO_HOME}/config
# TLS证书目录:
#    私钥private.key
#    证书public.crt
export MINIO_CERTS_DIR=/${MINIO_HOME}/certs
# 日志目录
export MINIO_LOG_PATH=/${MINIO_HOME}/log
# 访问凭证AK
export MINIO_ROOT_USER=minio_admin
# 访问凭证SK
export MINIO_ROOT_PASSWORD=minio_admin!@#
# 是否开启web访问,默认是开启
export MINIO_BROWSER=on
# 证书密码
export MINIO_CERT_PASSWD=admin123!@#
# 支持path-style访问,默认 http://mydomain.com/bucket/object
export MINIO_DOMAIN=test_minio.com
# MINIO的集群中各节点IP
export MINIO_HOST_1=192.168.8.109
export MINIO_HOST_2=192.168.8.120
export CURRENT_IP=$MINIO_HOST_2
# 39000 为API调用接口, 9000为web console接口
# 启动minio
nohup  /${MINIO_HOME}/bin/minio server \--config-dir ${MINIO_COFNIG_DIR} \--certs-dir ${MINIO_CERTS_DIR} \--address ${CURRENT_IP}:39000 --console-address ":9000" \https://${MINIO_HOST_1}/${MINIO_HOME}/data1 https://${MINIO_HOST_1}/${MINIO_HOME}/data2 \https://${MINIO_HOST_2}/${MINIO_HOME}/data1 https://${MINIO_HOST_2}/${MINIO_HOME}/data2 \>> ${MINIO_LOG_PATH}/minio.log 2>&1 &
  • stop.sh 停止脚本
#!/bin/bash
## MinIO停止脚本
ps -ef | grep  minio | grep -v 'grep' | awk '{print $2}'| xargs kill -9if $? != 0;thenecho "minio service stop failed."exit 1
fi

1.3 生成https证书文件,参考英文官网 3.2.2 Generate a private key with RSA

因为这里创建的MinIO的规格是2节点2个磁盘,所以中创建证书时SANs中IP为本地IP和另一节点IP, DNS信息为节点的网关地址或者域名地址。

create_cert.sh 证书生成脚本,执行过程中需要自定义域名、证书路径、证书密码、另一节点IP。

#!/bin/bash
# 用来生成pem证书文件
# sh create_cert.sh
set -e# 从外界读取输入参数到指定变量
function read_input() {read -p "please input $1 parms:" $2
}
# 初始化输入参数
function init_input_param() {read_input "cert domain" "DOMAIN"read_input "cert path" "CERT_PATH"read_input "cert password" "PASSWORD"read_input "peer ip" "PEER_IP"readonly IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}')readonly DNS=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $4}' | awk -F"/" '{print $1}')
}# 生成openssl.conf文件
function generate_openssl_config() {cat > ${CERT_PATH}/openssl.conf <<-EOF[req]distinguished_name = req_distinguished_namex509_extensions = v3_reqprompt = no[req_distinguished_name]C = CNST = VAL = SomewhereO = MyOrgOU = MyOUCN = ${DOMAIN}[v3_req]subjectAltName = @alt_names[alt_names]IP.1 = 127.0.0.1IP.2 = ${IP}IP.3 = ${PEER_IP}DNS.1 = ${DNS}DNS.2 = ${DOMAIN}
EOF
}# openssl 生成私钥
function generate_private_key() {# 生成长度为2048的私钥openssl genrsa -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private-pkcs8.key 2048# 转换为PCKS-1openssl rsa -passin pass:${PASSWORD} -in ${CERT_PATH}/private-pkcs8.key -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private.key
}# 生成自签名文件
function generate_self_sign_cert() {openssl req -new -x509 -nodes -days 730 -keyout ${CERT_PATH}/private.key -passout pass:${PASSWORD} -out ${CERT_PATH}/public.crt -config ${CERT_PATH}/openssl.conf
}# 清除
function clean() {rm -rf ${CERT_PATH}/openssl.confrm -rf ${CERT_PATH}/private-pkcs8.key
}# 执行流程
function main() {init_input_paramgenerate_openssl_configgenerate_private_keygenerate_self_sign_certclean
}main

执行命令: sh create_cert.sh,输入以下参数,如图所示:

1.4 验证MinIO分布式集群

执行以下命令,注册系统服务,并启动服务

mv /opt/minio/run/minio.service /etc/systemd/system/
chmod 755 /etc/systemd/system/minio.service
chmod 755 /opt/minio/run/*
# 开机自启minio.service
systemctl enable minio.service
# 刷新服务
systemctl daemon-reload
# 启动服务
systemctl start minio.service

通过web 浏览器登录console端:https://192.168.8.109:9000/login

查看minio.log日志

若1.4执行失败,可在所有节点执行如下命令清理环境,重试。

rm -rf /opt/minio/log/*
rm -rf /opt/minio/data1
rm -rf /opt/minio/data2
rm -rf /opt/minio/config
mkdir -p /opt/minio/data1
mkdir -p /opt/minio/data2
mkdir -p /opt/minio/config
systemctl start minio

1.5 FAQ

1.5.1 错误: x509: cannot validate certificate for 192.168.8.109 because it doesn’t contain any IP SANs

API: SYSTEM()
Time: 13:13:42 UTC 03/06/2022
Error: Read failed. Insufficient number of disks online (*errors.errorString)
5: cmd/prepare-storage.go:266:cmd.connectLoadInitFormats()
4: cmd/prepare-storage.go:326:cmd.waitForFormatErasure()
3: cmd/erasure-server-pool.go:91:cmd.newErasureServerPools()
2: cmd/server-main.go:640:cmd.newObjectLayer()
1: cmd/server-main.go:491:cmd.serverMain()
Waiting for a minimum of 2 disks to come online (elapsed 52s)

Unable to read ‘format.json’ from https://192.168.8.109:39000/opt/minio/data1: Post “https://192.168.8.109:39000/minio/storage/opt/minio/data1/v43/readall?disk-id=&file-path=format.json&volume=.minio.sys”: x509: cannot validate certificate for 192.168.8.109 because it doesn’t contain any IP SANs

Unable to read ‘format.json’ from https://192.168.8.109:39000/opt/minio/data2: Post “https://192.168.8.109:39000/minio/storage/opt/minio/data2/v43/readall?disk-id=&file-path=format.json&volume=.minio.sys”: x509: cannot validate certificate for 192.168.8.109 because it doesn’t contain any IP SANs

原因分析:生成证书时,SANs中IP信息不正确导致。

解决办法:使用ip -a查看机器IP,填写正确SANs信息,重新生成证书。

手把手教你搭建MinIO分布式集群相关推荐

  1. Minio分布式集群搭建

    一.分布式Minio快速入门         分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式Minio避免了单点故障. 1.分布式Mi ...

  2. Minio分布式集群搭建部署

    分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你 ...

  3. minio分布式集群部署

    minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.MinioMinio分布式模式可以帮 ...

  4. Minio分布式集群示例:8个节点,每节点1块盘

    启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令. 注意 分布式Minio里所有的节点需要有同样的access秘钥 ...

  5. nginx搭建tomcat分布式集群

    nginx搭建tomcat分布式集群 1. nginx使用80端口,所有对服务器80端口的访问都被nginx拦截.例: 127.0.0.1 www.jthinking.com 127.0.0.1 ad ...

  6. Storm环境搭建(分布式集群)

    作为流计算的开篇,笔者首先给出storm的安装和部署,storm的第二篇,笔者将详细的介绍storm的工作原理.下边直接上干货,跟笔者的步伐一块儿安装storm. 原文链接:Storm环境搭建(分布式 ...

  7. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...

  8. 搭建hadoop分布式集群

    搭建hadoop分布式集群 ~ jdk安装 ip修改 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none H ...

  9. hadoop搭建伪分布式集群(centos7+hadoop-3.1.1)

    原文地址:https://www.cnblogs.com/zhengna/p/9316424.html Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本 2 ...

最新文章

  1. mysql和windows连接不上_问题-jdbc连接不上mysql,windows下开启两个mysql服务
  2. ecshop模板的原理分析
  3. 建议被降级降薪员工主动辞职?网友炸了!
  4. jupyter notebook 报错:TypeError: __init__() got an unexpected keyword argument ‘categorical_features‘
  5. Linux mysql设置密码
  6. Hanoi(汉诺)塔问题
  7. java反编译工具_安卓逆向之反编译工具的使用
  8. 从Hexo迁移到Hugo附送漂亮的Hugo Theme主题
  9. 《Python编程从入门到实践》记录之文件异常(try-except-else代码块)
  10. 伪数组转化真数组_ES6 数组方法
  11. 壁纸控、视觉控少不了高图网解决图片需求问题
  12. python发QQ邮件
  13. AI 时代,为什么程序员很贵?
  14. UE4下载与存储图片
  15. iOS开发打包上传报错ERROR ITMS-90096
  16. Unity开发VR项目(二)——SteamVR按键设置
  17. 双线一柱变色MACD指标
  18. 创业故事:挖人的手段
  19. 专门打游戏的手机精选:rog3散热好 续航好 玩游戏更好!
  20. 国外和国内高校官网的差异

热门文章

  1. 数字媒体播放器音频格式
  2. 基于vue的开源个人主页
  3. 用C语言编程网上购物系统,华中科技大学C语言课程设计报告 -- 网上购物管理系统.pdf...
  4. 0.html是病毒吗,感染HTML.LOWZONE.F病毒,杀不 – 手机爱问
  5. 【FreeRTOS-中断实验】
  6. 智慧高速公路?重点如下
  7. 基于JAVA的学生考勤管理系统可行性分析
  8. QT 多国语言详细步骤
  9. CSS布局篇——flex布局
  10. redis中有key但是删不掉_Redis大 key的发现与删除方法全解析