手把手教你搭建MinIO分布式集群
手把手教你搭建MinIO分布式集群
要求:
MinIO集群规格:2节点2个磁盘。
Minio域名:test_minio.com
数据目录:/opt/minio/data1,/opt/minio/data2
两节点证书保持一致
关闭防火墙
建议:参考英文官网
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分布式集群相关推荐
- Minio分布式集群搭建
一.分布式Minio快速入门 分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式Minio避免了单点故障. 1.分布式Mi ...
- Minio分布式集群搭建部署
分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你 ...
- minio分布式集群部署
minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.MinioMinio分布式模式可以帮 ...
- Minio分布式集群示例:8个节点,每节点1块盘
启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令. 注意 分布式Minio里所有的节点需要有同样的access秘钥 ...
- nginx搭建tomcat分布式集群
nginx搭建tomcat分布式集群 1. nginx使用80端口,所有对服务器80端口的访问都被nginx拦截.例: 127.0.0.1 www.jthinking.com 127.0.0.1 ad ...
- Storm环境搭建(分布式集群)
作为流计算的开篇,笔者首先给出storm的安装和部署,storm的第二篇,笔者将详细的介绍storm的工作原理.下边直接上干货,跟笔者的步伐一块儿安装storm. 原文链接:Storm环境搭建(分布式 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...
- 搭建hadoop分布式集群
搭建hadoop分布式集群 ~ jdk安装 ip修改 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none H ...
- hadoop搭建伪分布式集群(centos7+hadoop-3.1.1)
原文地址:https://www.cnblogs.com/zhengna/p/9316424.html Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本 2 ...
最新文章
- mysql和windows连接不上_问题-jdbc连接不上mysql,windows下开启两个mysql服务
- ecshop模板的原理分析
- 建议被降级降薪员工主动辞职?网友炸了!
- jupyter notebook 报错:TypeError: __init__() got an unexpected keyword argument ‘categorical_features‘
- Linux mysql设置密码
- Hanoi(汉诺)塔问题
- java反编译工具_安卓逆向之反编译工具的使用
- 从Hexo迁移到Hugo附送漂亮的Hugo Theme主题
- 《Python编程从入门到实践》记录之文件异常(try-except-else代码块)
- 伪数组转化真数组_ES6 数组方法
- 壁纸控、视觉控少不了高图网解决图片需求问题
- python发QQ邮件
- AI 时代,为什么程序员很贵?
- UE4下载与存储图片
- iOS开发打包上传报错ERROR ITMS-90096
- Unity开发VR项目(二)——SteamVR按键设置
- 双线一柱变色MACD指标
- 创业故事:挖人的手段
- 专门打游戏的手机精选:rog3散热好 续航好 玩游戏更好!
- 国外和国内高校官网的差异