SeaweedFSは、何十億ものファイルを高速に保存および提供する、オープンソースのシンプルで拡張性の高い分散ファイルシステムです。これは、Ceph、GlusterFS、HDFSなどの他のファイルシステムと非常によく似ています。クラウドと簡単に統合でき、クライアント側で変更を加えることなく、両方の高速アクセス時間を実現できます。自動マスターサーバーフェイルオーバー、自動エントリTTL有効期限、並列処理、大小のファイルの処理、任意のファイルへの低遅延アクセスなど、豊富な機能セットを備えています。
このチュートリアルでは、Ubuntu20.04サーバーでSeaweedFSクラスターをセットアップする方法を示します。
- Ubuntu20.04サーバーを実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
開始する前に、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドで更新できます:
apt-get update -y
すべてのパッケージが更新されたら、サーバーに他の必要な依存関係をインストールする必要があります。次のコマンドを実行して、それらすべてをインストールできます。
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
すべての依存関係をインストールした後、Golangをyorシステムにインストールする必要もあります。次のコマンドでインストールできます:
apt-get install golang -y
インストールが完了したら、次の手順に進むことができます。
SeaweedFSをインストールする
デフォルトでは、SeaweedFSはUbuntu20.04のデフォルトリポジトリでは使用できません。そのため、ソースからダウンロードしてコンパイルする必要があります。
まず、次のコマンドを使用して、Gitリポジトリから最新バージョンのSeaweedFSをダウンロードします。
git clone https://github.com/chrislusf/seaweedfs.git
ダウンロードが完了したら、ディレクトリをSeaweedFSに変更し、次のコマンドを使用してインストールします。
cd ~/seaweedfs
make install
上記のコマンドは、SeaweedFSバイナリを〜/ go /bin/ディレクトリ内にインストールします。次に、次のコマンドを使用して、インストールされたバイナリを/ usr / loca/binディレクトリにコピーします。
cp ~/go/bin/weed /usr/local/bin/
次に、次のコマンドを使用して、インストールされているSeaweedFSのバージョンを確認します。
weed version
次の出力が得られるはずです:
version 30GB 2.14 4211601e linux amd64
終了したら、次のステップに進むことができます。
まず、SeaweedFSサービスを管理するためのsystemdサービスファイルを作成する必要があります。次のコマンドを実行して作成できます:
nano /etc/systemd/system/seaweedmaster.service
次の行を追加します:
[Unit] Description=SeaweedFS Master After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/weed master WorkingDirectory=/usr/local/bin/ SyslogIdentifier=seaweedfs-master [Install] WantedBy=multi-user.target
ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、SeaweedFSサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start seaweedmaster
systemctl enable seaweedmaster
次のコマンドを使用して、SeaweedFSマスターのステータスを確認できます。
systemctl status seaweedmaster
次の出力が得られるはずです:
? seaweedmaster.service - SeaweedFS Master Loaded: loaded (/etc/systemd/system/seaweedmaster.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-09 08:30:06 UTC; 3s ago Main PID: 25740 (weed) Tasks: 10 (limit: 4691) Memory: 8.0M CGroup: /system.slice/seaweedmaster.service ??25740 /usr/local/bin/weed master Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 master_server.go:107] Volume Size Limit is 30000 MB Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 master_server.go:192] adminScripts: Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 master.go:122] Start Seaweed Master 30GB 2.14 4211601e at 0.0.0.0:9333 Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 raft_server.go:70] Starting RaftServer with 69.87.216.36:9333 Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 raft_server.go:129] current cluster leader: Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:06 25740 master.go:146] Start Seaweed Master 30GB 2.14 4211601e grpc server at> Dec 09 08:30:08 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:08 25740 masterclient.go:78] No existing leader found! Dec 09 08:30:08 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:08 25740 raft_server.go:154] Initializing new cluster Dec 09 08:30:08 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:08 25740 master_server.go:141] leader change event: => 69.87.216.36:9333 Dec 09 08:30:08 ubuntu2004 seaweedfs-master[25740]: I1209 08:30:08 25740 master_server.go:143] [ 69.87.216.36:9333 ] 69.87.216.36:9333 becomes>になります
終了したら、次のステップに進むことができます。
この時点で、マスターサーバーが起動し、ボリュームを待機しています。まず、次のコマンドを使用して2つのボリュームディレクトリを作成します。
mkdir /mnt/{vol1,vol2}
次に、次のコマンドを使用して、Volume1を管理するsystemdサービスファイルを作成します。
nano /etc/systemd/system/seaweedvolume1.service
次の行を追加します:
[Unit] Description=SeaweedFS Volume After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/weed volume -dir="/mnt/vol1" -max=10 -mserver="69.87.216.36:9333" -port=8081 WorkingDirectory=/usr/local/bin/ SyslogIdentifier=seaweedfs-volume [Install] WantedBy=multi-user.target
ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、Volume1サービスを開始し、システムの再起動時に開始できるようにします。
systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service
次のコマンドを使用して、Volume1サービスのステータスを確認できます。
systemctl status seaweedvolume1
次の出力が表示されます:
? seaweedvolume1.service - SeaweedFS Volume Loaded: loaded (/etc/systemd/system/seaweedvolume1.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-09 08:31:14 UTC; 4s ago Main PID: 25870 (weed) Tasks: 9 (limit: 4691) Memory: 7.3M CGroup: /system.slice/seaweedvolume1.service ??25870 /usr/local/bin/weed volume -dir=/mnt/vol1 -max=10 -mserver=69.87.216.36:9333 -port=8081 Dec 09 08:31:14 ubuntu2004 systemd[1]: Started SeaweedFS Volume. Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 file_util.go:23] Folder /mnt/vol1 Permission: -rwxr-xr-x Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 disk_location.go:154] Store started on dir: /mnt/vol1 with 0 volumes > Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 disk_location.go:157] Store started on dir: /mnt/vol1 with 0 ec shards Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 volume_grpc_client_to_master.go:52] Volume server start with seed mas> Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 volume.go:334] Start Seaweed volume server 30GB 2.14 4211601e at 0.0.> Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]: I1209 08:31:14 25870 volume_grpc_client_to_master.go:114] Heartbeat to: 69.87.216.36:9333
次に、次のコマンドを使用して、Volume2のsystemdサービスファイルを作成します。
nano /etc/systemd/system/seaweedvolume2.service
次の行を追加します:
[Unit] Description=SeaweedFS Volume After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/weed volume -dir="/mnt/vol2" -max=5 -mserver="69.87.216.36:9333" -port=8080 WorkingDirectory=/usr/local/bin/ SyslogIdentifier=seaweedfs-volume2 [Install] WantedBy=multi-user.target
ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、Volume2サービスを開始し、システムの再起動時に開始できるようにします。
systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service
次のコマンドを使用して、Volume2サービスのステータスを確認できます。
systemctl status seaweedvolume2
次の出力が得られるはずです:
? seaweedvolume2.service - SeaweedFS Volume Loaded: loaded (/etc/systemd/system/seaweedvolume2.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-09 08:32:03 UTC; 4s ago Main PID: 25921 (weed) Tasks: 10 (limit: 4691) Memory: 7.7M CGroup: /system.slice/seaweedvolume2.service ??25921 /usr/local/bin/weed volume -dir=/mnt/vol2 -max=5 -mserver=69.87.216.36:9333 -port=8080 Dec 09 08:32:03 ubuntu2004 systemd[1]: Started SeaweedFS Volume. Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 file_util.go:23] Folder /mnt/vol2 Permission: -rwxr-xr-x Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 disk_location.go:154] Store started on dir: /mnt/vol2 with 0 volumes> Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 disk_location.go:157] Store started on dir: /mnt/vol2 with 0 ec shar> Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 volume.go:334] Start Seaweed volume server 30GB 2.14 4211601e at 0.0> Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 volume_grpc_client_to_master.go:52] Volume server start with seed ma> Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]: I1209 08:32:03 25921 volume_grpc_client_to_master.go:114] Heartbeat to: 69.87.216.36:9333
終了したら、次のステップに進むことができます。
まず、ファイルIDとボリュームサーバーのURLを取得するために、HTTP POST、PUT、またはGETリクエストを送信する必要があります。次のコマンドで実行できます:
curl http://localhost:9333/dir/assign
次の出力にファイルIDとボリュームサーバーのURLが表示されます。
{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}
次に、以下に示すように、ファイルIDとボリュームURLを使用して、file1.pngという名前のサンプルファイルをボリュームに追加します。
curl -F [email protected]/root/file1.png http://69.87.216.36:8080/7,016bad1bc0
次の出力が得られるはずです:
{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}
ボリュームにファイルをアップロードしたら、次のコマンドでファイルを読み取ることができます。
curl http://69.87.216.36:9333/dir/lookup?volumeId=7
次の出力が得られるはずです:
{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}
終了したら、次のステップに進むことができます。
これで、URL http:// your-server-ip:8080 / 7,016bad1bc0を使用してSeaweedFSにアクセスし、SeaweedFSオブジェクトストアに保存したファイルを表示できます。
先ほどアップロードしたファイルは上の画面で確認できます。
おめでとう!これで、Ubuntu20.04サーバーにSeaweedFSクラスターが正常にインストールおよび構成されました。詳細については、SeaweedFSのドキュメントページをご覧ください。ご不明な点がございましたら、お気軽にお問い合わせください。