centos 7分散配置minioファイルクラスタ


目次
一、分布式Minioの概要
1.分散Minioのメリット
2.クラスタ時間の同期
二、Minio分布式クラスタ構築
1、Minioを取得する
2、ホスト名及びhostsの変更
3、システムの最大ファイル数の修正
4、ディレクトリの作成
5、クラスタ起動ファイル
6、minio.service
7、バイナリファイルのアップロード
8、権限の変更
9、クラスタの起動
10、エージェントクラスタ
11、テスト

一、分布式Minioの概要


分散Minioでは、複数のハードディスク(異なるマシンでも)をオブジェクトストレージサービスとして構成できます.HDDが異なるノードに分散されているため、分散Minioは単一の障害を回避します.

1.分散Minioのメリット


ビッグデータの分野では、通常の設計コンセプトは中心なしと分散型です.Minio分散モードは、実際の物理的な場所を考慮することなく、高可用性のオブジェクトストレージサービスを構築するのに役立ちます.
データ保護
分散Minioは、複数のノードのダウンタイムとビット減衰bit rotを防止するためにerasure code(削除符号)を採用しています.
分散Minioには少なくとも4つのノードが必要であり,分散Minioを用いて自動的に削除符号化機能を導入した.
高可用性
スタンドアロンMinioサービスには単一の障害があります.逆に、Nノードの分散Minioであれば、N/2ノードがオンラインであれば、データは安全です.ただし、新しいオブジェクトを作成するには、少なくともN/2+1ノードQuarumが必要です.
たとえば、8ノードのMinioクラスタでは、各ノードにディスクが1つあり、4ノードがダウンタイムしてもこのクラスタは読み取り可能ですが、データを書くには5ノードが必要です.
制限
分散Minioシングルテナントには、最低4ディスク、最大16ディスクの制限があります(削除コードに制限されています).この制限はMinioの簡潔さを確保し、伸縮性を維持します.マルチテナント環境を構築する必要がある場合は、複数のMinioインスタンスを管理するために、編成ツール(Kubernetes)を簡単に使用できます.
分散Minioの制限を遵守すれば、異なるノードとノードごとにいくつかのディスクを組み合わせることができます.たとえば、2つのノード、各ノード4つのディスク、または4つのノード、各ノード2つのディスクなどを使用できます.
コンシステンシ
Minioは分散モードとシングルマシンモードで、すべての読み書き操作がread-after-write整合性モデルに厳格に準拠している.

2.クラスタ時間の同期


クラスタ内のすべてのマシンの時間は3秒を超えてはいけません.まずntpタイムサーバをインストールする必要があります.簡単です.
https://blog.csdn.net/ct_666/article/details/112598442

二、Minio分布式クラスタ構築


ディスク領域の表示、適切なインストールディレクトリの選択
df -h

生産環境最小4ノード
ノード
IP
データディレクトリ
minio1    
192.168.44.10   
/home/minio/data
minio2    
192.168.44.11   
/home/minio/data
minio3    
192.168.44.12   
/home/minio/data
minio4    
192.168.44.13   
/home/minio/data

1、Minioを取得する


https://dl.min.io/server/minio/release/linux-amd64/minio

2、ホスト名及びhostsの変更

#  
hostnamectl set-hostname minio1
hostnamectl set-hostname minio2
hostnamectl set-hostname minio3
hostnamectl set-hostname minio4
#  
cat >> /etc/hosts <

3、システムの最大ファイル数の修正

#  
echo "*   soft    nofile  65535" >> /etc/security/limits.conf
echo "*   hard    nofile  65535" >> /etc/security/limits.conf

4、ディレクトリの作成


起動スクリプトおよびバイナリファイルディレクトリrunデータストレージディレクトリdataプロファイルディレクトリ/etc/minio
#  
mkdir -p /home/minio/{run,data} && mkdir -p /etc/minio

5、クラスタ起動ファイル

vim /home/minio/run/run.sh

MINIO_ACCESS_KEY:ユーザー名、最小5文字MINIO_SECRET_KEY:パスワード、パスワードは簡単に設定できない.そうしないとminioは起動に失敗する.長さは最小8文字である.config-dir:クラスタプロファイルディレクトリを指定する.
#  
#!/bin/bash
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=admin#2020

/home/minio/run/minio server --config-dir /etc/minio \
http://192.168.44.10/home/minio/data \
http://192.168.44.11/home/minio/data \
http://192.168.44.12/home/minio/data \
http://192.168.44.13/home/minio/data \

6、minio.service


WorkingDirectory:バイナリ・ファイル・ディレクトリExecStart:クラスタ起動スクリプトの指定
#  
cat > /usr/lib/systemd/system/minio.service <

7、バイナリファイルのアップロード


ダウンロードしたminioバイナリファイルを/home/minio/runディレクトリにアップロード

8、権限の変更


関連するすべてのファイルまたはディレクトリに権限を追加
サービスファイルバイナリファイルクラスタ起動スクリプト
#  
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /home/minio/run/minio && chmod +x /home/minio/run/run.sh

9、クラスタの起動

#  
systemctl daemon-reload
systemctl start minio && systemctl enable minio
systemctl disable firewalld && systemctl stop firewalld 

#  4 , :
[root@minio1 conf]# systemctl status minio
● minio.service - Minio service
   Loaded: loaded (/usr/lib/systemd/system/minio.service; enabled; vendor preset: disabled)
   Active: active (running) since   2021-01-13 16:07:08 CST; 9h ago
     Docs: https://docs.minio.io/
 Main PID: 6196 (run.sh)
   CGroup: /system.slice/minio.service
           ├─6196 /bin/bash /home/minio/run/run.sh
           └─6221 /home/minio/run/minio server --config-dir /etc/minio http://192.168.44.10/home/minio/data http://192.168.44.11/home/minio/data http://192.168.44.12/home/minio/data http://192.168.44.13/hom...

1  13 18:19:02 minio1 run.sh[6196]: Endpoint:  http://192.168.44.10:9000  http://127.0.0.1:9000
1  13 18:19:02 minio1 run.sh[6196]: Browser Access:
1  13 18:19:02 minio1 run.sh[6196]: http://192.168.44.10:9000  http://127.0.0.1:9000
1  13 18:19:02 minio1 run.sh[6196]: Object API (Amazon S3 compatible):
1  13 18:19:02 minio1 run.sh[6196]: Go:         https://docs.min.io/docs/golang-client-quickstart-guide
1  13 18:19:02 minio1 run.sh[6196]: Java:       https://docs.min.io/docs/java-client-quickstart-guide
1  13 18:19:02 minio1 run.sh[6196]: Python:     https://docs.min.io/docs/python-client-quickstart-guide
1  13 18:19:02 minio1 run.sh[6196]: JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
1  13 18:19:02 minio1 run.sh[6196]: .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
1  13 18:19:02 minio1 run.sh[6196]: Waiting for all MinIO IAM sub-system to be initialized.. lock acquired

10、エージェントクラスタ


生産環境はNginxを用いてクラスタアドレスをエージェントし,対外的に入口を統一する必要がある.ここでnginxは192.168.44.10に配備されるため、ポートは9000を使用することができず、9001ポートを使用し、デフォルトでは負荷等化ラウンドメカニズムを採用し、4つのアドレスを平均転送する.
#  nginx 9001
upstream minio{
        server 192.168.44.10:9000;
        server 192.168.44.11:9000;
        server 192.168.44.12:9000;
        server 192.168.44.13:9000;
}
server {
        listen 9001;
        server_name minio;
        location / {
                proxy_pass http://minio;
                proxy_set_header Host $http_host;
                client_max_body_size 1000m;
        }
}

11、テスト


ブラウザはminioクラスタエージェントアドレス+9001ポートにアクセスし、ユーザー名パスワードは上述の起動ファイルrunである.shで設定した
:9001
この配置方式では、1台のマシンの許容誤差があります.
ダウンタイム=1の場合、読み書き可能、ダウンタイム=2の場合、読み書き不可、ダウンタイム>2の場合、クラスタは使用できません