minio单机、集群部署
minio单节点单磁盘和多节点多磁盘部署
minio简介
MinIO是一个高性能对象存储软件,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。MinIO使用 纠删码(Erasure Coding(纠删码)) 来保证高可用
minio支持单节点单硬盘、单节点多硬盘、多节点多硬盘部署方式。本文介绍单节点单硬盘和多节点多硬盘方式。
minio支持二进制部署、docker安装、kubernetes安装等等方式。本文说明二进制命令安装方式。
单节点单磁盘方式部署
前置条件
- 确认9000和9001端口是否占用,如果占用请换其它接口
- 确认服务器和外网是否联通,如果不通可以提前下载(打开网址找到对应的服务器)minio然后上传
部署
1. 以下方式二选一:
- 上传下载的minio 到 /usr/local/bin/
- 服务器直接执行命令
#linux 服务器
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
sudo mv minio /usr/local/bin/ #移动到目录
2. 赋权
chmod +x minio
3. 创建使用目录
mkdir /home/minio/data && chmod 755 -R /home/minio/data #创建使用目录
4. 启动(root用户)
说明:
如果想用其它用户启动,则需要先切换的指定用户
前台启动:
# 进入启动目录
cd /usr/local/bin/
# 直接启动(用户密码默认为 minioadmin)
./minio server /usr/software/minio/data
# 指定登录信息启动
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin ./minio server /home/minio/data
后台启动:
# 进入启动目录
cd /usr/local/bin/
nohup ./minio server /usr/software/minio/data /usr/software/minio/minio.log 2>&1 &
# 指定登录信息启动
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin nohup ./minio server /home/minio/data /home/local/minio/execminio/minio.log 2>&1
# 指定登录信息和日志
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin nohup ./minio server /home/minio/data 日志目录 2>&1
5. 访问
浏览器访问地址:9001即可;如果不能访问请查看防火墙是否关闭。
多节点多磁盘部署
说明: 假定2个节点分别是192.168.56.111和192.168.56.112 每个节点四个磁盘分别是/opt/data1 /opt/data2 /opt/data3 /opt/data4
前置条件
1. 确认9000(minio通信使用)和9001端口是否占用,如果占用请换其它接口
2. 四块新磁盘(每块大小最好一致),或者一个磁盘四个分区(大小相同)
linux扩容
博主在部署时没有可用磁盘,所以扩容了下,以下是Oracle VM VirtualBox 扩容步骤
1. 关闭服务器
2. 按图操作
3. 按图操作
4. 启动虚拟机分配空间
# 查看磁盘
lsblk # 我的是 sdb磁盘
# 分区
fdisk /dev/sdb
# 1. 按n 新增分区;
# 2. 按p主分区;
# 3.键入分区号,不填就是默认1-4递增
# 4.设置起始柱面,直接回车默认值就行;
# 5.设置大小+/-数字和单位(如:+1G表示分G)回车
# 键入w保存分区信息
# 重复上述操作一共分4个区 格式化后就是 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
硬盘目录解析:
/dev/sda1 # s:硬件接口类型(sata/scsi);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/dev/hda1 # h:硬件接口类型(IDE硬盘);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/dev/vda1 # v:硬件接口类型(虚拟硬盘);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/etc/fstab文件说明:
<file system>: 要挂载的分区或存储设备
<dir>: 挂载的目录位置
<type>: 挂载分区的文件系统类型,比如:ext3、ext4、xfs、swap
<options>: 挂载使用的参数有哪些
<dump>: dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
<pass>: fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
3. 设置时钟同步
4. 提前下载好安装包放入服务器 /usr/local/bin/(直接在线安装也可以)然后执行 chmod +x minio
5. 关闭防火墙
firewall-cmd --permanent --zone=public --add-port=9000/tcp #9000 关闭防火墙 参数 permanent可用永久关闭
firewall-cmd --permanent --zone=public --add-port=9001/tcp #9000关闭防火墙
firewall-cmd --reload
6. 格式化上述磁盘为xfs
mkfs.xfs /dev/sdb1 -L DISK1 #格式化 /dev/sdb 起别名为DISK1;
mkfs.xfs /dev/sdb1 -L DISK2 #格式化 /dev/sdb 起别名为DISK2;
mkfs.xfs /dev/sdb1 -L DISK3 #格式化 /dev/sdb 起别名为DISK3;
mkfs.xfs /dev/sdb1 -L DISK4 #格式化 /dev/sdb 起别名为DISK4;
7. 挂载
mount /dev/sdb1 /opt/data1 #/dev/sdb1挂载到/data1
mount /dev/sdb2 /opt/data2 #/dev/sdb1挂载到/data2
mount /dev/sdb3 /opt/data3 #/dev/sdb1挂载到/data3
mount /dev/sdb4 /opt/data4 #/dev/sdb1挂载到/data4
#永久挂载
vi /etc/fstable
#写入 noatime表示文件修改时不记录时间
#<file system> <mont point> <type> <options> <dump> <pass>
LABEL=DISK1 /opt/data1 xfs defaults,noatime 0 2
LABEL=DISK2 /opt/data2 xfs defaults,noatime 0 2
LABEL=DISK3 /opt/data3 xfs defaults,noatime 0 2
LABEL=DISK4 /opt/data4 xfs defaults,noatime 0 2
8. 编辑配置文件
# 如果没有可以新建,保证/etc/systemd/system/mini.service 和 /usr/lib/systemd/system/minio.service(推荐)只有一份否则会冲突
vi /usr/lib/systemd/system/minio.service
#粘入下述内容修改三个变量
AssertFileIsExecutable #minio安装目录
WorkingDirectory #修改为执行时想放入的目录
ExecStart #minio安装目录
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/
[Service]
WorkingDirectory=/opt
User=root
Group=root
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/ server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
9. 变量文件
#变量文件
vi /etc/default/minio
# MINIO_VOLUMES="http://192.168.56.111:9000/opt/data1/minio http://192.168.56.111:9000/opt/data2/minio http://192.168.56.111:9000/opt/data3/minio http://192.168.56.111:9000/opt/data4/minio http://192.168.56.112:9000/opt/data1/minio http://192.168.56.112:9000/opt/data2/minio http://192.168.56.112:9000/opt/data3/minio http://192.168.56.112:9000/opt/data4/minio "
MINIO_VOLUMES="http://192.168.56.111:9000/opt/data{1...4}/minio http://192.168.56.112:9000/opt/data{1...4}/minio" # 和上面二选一
MINIO_OPTS="--console-address :9001" #访问端口 9001
MINIO_ROOT_USER=minioadmin #登录名
MINIO_ROOT_PASSWORD=minioadmin #登录密码
MINIO_SERVER_URL="http://192.168.56.111:9000" #minio通信地址,这个每个服务器一定要一样; 一般线上会配置为nginx代理的那台服务器
10. 其它服务部署
步骤5~9在其它机器同样部署,理论上直接拷贝就行。
11. 后续配置
#将服务设置为每次开机启动
systemctl enable minio.service
#重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载
systemctl daemon-reload
#启动服务
systemctl start minio
#停止服务
systemctl stop minio
#重启服务
systemctl restrat minio
#查看服务状态
systemctl status minio
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)