minio對象存儲

做者:獨筆孤行@taocloud
minio是開源對象存儲產品,具備簡單、穩定、高性能特性。本文將近minio的基本配置的一些方法。minio有單點運行、糾刪碼、分佈式糾刪碼三種方式。單點運行配置簡單,只需啓動minio服務並指定相關數據目錄便可。在生產環境中經常使用的糾刪碼和分佈式糾刪碼兩種,糾刪碼類型是minio在單節點服務器配置多個數據盤做爲數據存放目錄的配置方式。分佈式糾刪碼是minio跨節點配置方式,全部節點的盤位組建糾刪碼,保證業務數據訪問的高可用。linux

1、 minio安裝
本地運行minioios

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

本地NAS運行miniogit

gluster v set fareyes disperse.eager-lock off
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=minio123
minio gateway nas /shared/nasvol

註解:此種方式適合在數據存儲目錄爲NAS目錄時的配置方法。github

2、配置minio服務
1.編輯 /etc/default/minio 配置文件,按照實際目錄配置 MINIO_VOLUMES、 MINIO_ACCESS_KEY 、 MINIO_SECRET_KEY 等參數,若是自定義minio佔用端口號,須要配置 MINIO_OPTS 參數,但通常使用默認端口號9000,因此無需配置該參數。但要確保 MINIO_VOLUMES 有讀寫權限。bash

cat /etc/default/minio 
#Volume to be used for Minio server.
MINIO_VOLUMES="/data/export1/minio"

#Use if you want to run Minio on a custom port.
#MINIO_OPTS="192.168.20.246:9199"

#Access Key of the server.
MINIO_ACCESS_KEY=minioaccesskey

#Access Key of the server.
MINIO_SECRET_KEY=miniosecretkey

2.在 /etc/systemd/system 目錄下,配置 minio.service 服務。服務器

cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

編輯 /etc/systemd/system/minio.service 文件,可採用默認 User=root 、Group=root參數,也可根據實際狀況配置此參數。curl

[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=root
Group=root

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/minio 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

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

3.將二進制minio軟件存放到/usr/local/bin/目錄下分佈式

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin

4.啓動或禁用minio.service服務ide

systemctl enable minio.service
systemctl disable minio.service

參考官方連接:
https://github.com/minio/minio-service/tree/master/linux-systemd性能

3、分佈式minio糾刪碼卷

前置條件:
1.要求至少4個磁盤
2.至少2個校驗盤
3.節點可支持最小2節點至最大32節點
4.全部節點間時間一致,不超過3s,可配置ntp時間同步。此條件很是重要,對性能影響明顯。
安裝minio(全部節點執行命令)

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
export MINIO_ACCESS_KEY=minioaccesskey
export MINIO_SECRET_KEY=miniosecretkey
./minio server http://192.168.20.2{7...8}/data/sd{a...b}/minio

./minio server http://192.168.20.2{7...8}/data/sd{a...b}/minio 命令表示:集羣兩節點ip地址爲192.168.20.27和192.168.20.28,磁盤目錄爲兩個節點的/data/sda/minio和/data/sdb/minio兩個目錄。其中/data/sda和/data/sdb分別爲磁盤的掛載目錄。

4、分佈式minio服務

全部前提要求同《3、分佈式minio糾刪碼卷》內容。本章節內容爲將分佈式minio配置以服務方式運行。解決重啓後須要手動開啓服務的問題。
因爲配置分佈式minio,如下全部命令操做,須要在全部節點執行。
1.下載minio二進制文件,存放到/usr/local/bin/目錄下

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin

2.建立環境配置文件

cat <<EOT >> /etc/default/minio
# Remote volumes to be used for Minio server.
MINIO_VOLUMES=http://192.168.20.27/data/sda/minio \
http://192.168.20.27/data/sdb/minio \
http://192.168.20.28/data/sda/minio \
http://192.168.20.28/data/sdb/minio

# Use if you want to run Minio on a custom port.
#MINIO_OPTS="--address :9199"

# Access Key of the server.
MINIO_ACCESS_KEY=minioaccesskey

# Secret key of the server.
MINIO_SECRET_KEY=miniosecretkey
EOT

其中,MINIO_VOLUMES參數爲全部節點的全部磁盤目錄,用存放minio數據,要求有讀寫權限。MINIO_ACCESS_KEY和MINIO_SECRET_KEY爲認證方式,可採用文件中默認配置。
3.配置minio.service服務
下載minio.service 模板到 /etc/systemd/system/ 目錄

cd /etc/systemd/system/
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/distributed/minio.service

修改/etc/systemd/system/minio.service文件裏[Service]部分的User和Group參數爲root。

[Service]

User=root
Group=root

修改後,全文內容以下,其餘配置保持默認不變

[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=root
Group=root

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"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_ACCESS_KEY}\" ]; then echo \"Variable MINIO_ACCESS_KEY not set in /etc/default/minio\"; exit 1; fi"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_SECRET_KEY}\" ]; then echo \"Variable MINIO_SECRET_KEY not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/usr/local/bin/minio 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

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

4.啓動服務

systemctl enable minio.service
systemctl start minio.service

參考官方連接:
https://github.com/minio/minio-service/tree/master/linux-systemd/distributed
https://github.com/minio/minio-service/tree/master/linux-systemd

歡迎掃描關注本人公衆號,會定時分享IT技術文章,若有其它技術問題,可隨時諮詢。
minio對象存儲

相關文章
相關標籤/搜索