GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04にSeaweedFSクラスターをインストールして構成する方法

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

終了したら、次のステップに進むことができます。

マスター用のsystemdサービスファイルを作成する

まず、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"}]}

終了したら、次のステップに進むことができます。

海藻FSにアクセス

これで、URL http:// your-server-ip:8080 / 7,016bad1bc0を使用してSeaweedFSにアクセスし、SeaweedFSオブジェクトストアに保存したファイルを表示できます。

先ほどアップロードしたファイルは上の画面で確認できます。

結論

おめでとう!これで、Ubuntu20.04サーバーにSeaweedFSクラスターが正常にインストールおよび構成されました。詳細については、SeaweedFSのドキュメントページをご覧ください。ご不明な点がございましたら、お気軽にお問い合わせください。


Ubuntu
  1. Ubuntu18.04にRedisをインストールして構成する方法

  2. Ubuntu18.04にRedmineをインストールして設定する方法

  3. Ubuntu18.04にSambaをインストールして設定する方法

  1. Ubuntu20.04にRedisをインストールして構成する方法

  2. Ubuntu20.04にJenkinsをインストールして構成する方法

  3. Ubuntu16.04にAskbotをインストールして構成する方法

  1. Ubuntu14.04にMongoDBをインストールして構成する方法

  2. Ubuntu16.04にSolr6をインストールして構成する方法

  3. Ubuntu16.04にGitLabをインストールして構成する方法