SeaweedFS adalah sistem file terdistribusi sumber terbuka, sederhana, dan sangat skalabel untuk menyimpan dan menyajikan miliaran file dengan cepat. Ini sangat mirip dengan sistem file lain termasuk, Ceph, GlusterFS, dan HDFS. Itu dapat dengan mudah diintegrasikan dengan cloud dan mencapai waktu akses yang cepat tanpa perubahan sisi klien. Ini memiliki serangkaian fitur yang kaya termasuk, Kegagalan server master otomatis, Kedaluwarsa TTL entri otomatis, Pemrosesan paralel, Menangani file besar dan kecil, Akses latensi rendah ke file apa pun, dan banyak lagi.
Dalam tutorial ini, kami akan menunjukkan cara mengatur cluster SeaweedFS di server Ubuntu 20.04.
Prasyarat
- Server yang menjalankan server Ubuntu 20.04.
- Kata sandi root dikonfigurasi di server.
Memulai
Sebelum memulai, disarankan untuk memperbarui paket sistem Anda ke versi terbaru. Anda dapat memperbaruinya dengan perintah berikut:
apt-get update -y
Setelah semua paket diperbarui, Anda perlu menginstal beberapa dependensi lain yang diperlukan di server Anda. Anda dapat menginstal semuanya dengan menjalankan perintah berikut:
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
Setelah menginstal semua dependensi, Anda juga perlu menginstal Golang di sistem Anda. Anda dapat menginstalnya dengan perintah berikut:
apt-get install golang -y
Setelah penginstalan selesai, Anda dapat melanjutkan ke langkah berikutnya.
Instal SeaweedFS
Secara default, SeaweedFS tidak tersedia di repositori default Ubuntu 20.04. Jadi, Anda perlu mengunduh dan mengompilasinya dari sumbernya.
Pertama, unduh SeaweedFS versi terbaru dari repositori Git menggunakan perintah berikut:
git clone https://github.com/chrislusf/seaweedfs.git
Setelah unduhan selesai, ubah direktori ke SeaweedFS dan instal dengan perintah berikut:
cd ~/seaweedfs
make install
Perintah di atas akan menginstal biner SeaweedFS di dalam direktori ~/go/bin/. Sekarang, salin biner yang diinstal ke direktori /usr/loca/bin dengan perintah berikut:
cp ~/go/bin/weed /usr/local/bin/
Selanjutnya, verifikasi versi SeaweedFS yang terinstal dengan perintah berikut:
weed version
Anda akan mendapatkan output berikut:
version 30GB 2.14 4211601e linux amd64
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Buat File Layanan Systemd untuk Master
Pertama, Anda perlu membuat file layanan systemd untuk mengelola layanan SeaweedFS. Anda dapat membuatnya dengan menjalankan perintah berikut:
nano /etc/systemd/system/seaweedmaster.service
Tambahkan baris berikut:
[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
Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, jalankan layanan SeaweedFS dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start seaweedmaster
systemctl enable seaweedmaster
Anda dapat memverifikasi status master SeaweedFS dengan perintah berikut:
systemctl status seaweedmaster
Anda akan mendapatkan output berikut:
? 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>
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Buat dan Mulai Server Volume
Pada titik ini, server master dimulai dan menunggu volume. Pertama, buat dua direktori volume dengan perintah berikut:
mkdir /mnt/{vol1,vol2}
Selanjutnya, buat file layanan systemd untuk mengelola Volume1 dengan perintah berikut:
nano /etc/systemd/system/seaweedvolume1.service
Tambahkan baris berikut:
[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
Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, mulai layanan Volume1 dan aktifkan untuk memulai saat reboot sistem:
systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service
Anda dapat memverifikasi status layanan Volume1 dengan perintah berikut:
systemctl status seaweedvolume1
Anda akan mendapatkan output berikut:
? 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
Selanjutnya, buat file layanan systemd untuk Volume2 dengan perintah berikut:
nano /etc/systemd/system/seaweedvolume2.service
Tambahkan baris berikut:
[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
Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, mulai layanan Volume2 dan aktifkan untuk memulai saat reboot sistem:
systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service
Anda dapat memverifikasi status layanan Volume2 dengan perintah berikut:
systemctl status seaweedvolume2
Anda akan mendapatkan output berikut:
? 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
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Tulis File Contoh ke Volume
Pertama, Anda perlu mengirim permintaan HTTP POST, PUT, atau GET untuk mendapatkan ID file dan URL server volume. Anda dapat melakukannya dengan perintah berikut:
curl http://localhost:9333/dir/assign
Anda akan melihat ID file dan URL server volume pada output berikut:
{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}
Selanjutnya, tambahkan file sampel bernama file1.png ke volume menggunakan ID file dan URL volume seperti yang ditunjukkan di bawah ini:
curl -F [email protected]/root/file1.png http://69.87.216.36:8080/7,016bad1bc0
Anda akan mendapatkan output berikut:
{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}
Setelah file Anda diunggah ke volume, Anda dapat membacanya dengan perintah berikut:
curl http://69.87.216.36:9333/dir/lookup?volumeId=7
Anda akan mendapatkan output berikut:
{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Akses SeaweedFS
Anda sekarang dapat mengakses SeaweedFS menggunakan URL http://your-server-ip:8080/7.016bad1bc0 untuk melihat file yang Anda simpan di penyimpanan objek SeaweedFS:
Anda dapat melihat file yang telah Anda unggah sebelumnya di layar di atas.
Kesimpulan
Selamat! Anda telah berhasil menginstal dan mengkonfigurasi cluster SeaweedFS di server Ubuntu 20.04. Untuk informasi selengkapnya, kunjungi halaman dokumentasi SeaweedFS. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.