Cách cài đặt và cấu hình SeaweedFS Cluster trên Ubuntu 20.04

theanh

Administrator
Nhân viên
SeaweedFS là một hệ thống tệp phân tán mã nguồn mở, đơn giản và có khả năng mở rộng cao để lưu trữ và phục vụ hàng tỷ tệp nhanh chóng. Nó rất giống với các hệ thống tệp khác bao gồm Ceph, GlusterFS và HDFS. Nó có thể dễ dàng tích hợp với đám mây và đạt được cả thời gian truy cập nhanh mà không cần bất kỳ thay đổi nào ở phía máy khách. Nó có một bộ tính năng phong phú bao gồm, Tự động chuyển đổi dự phòng máy chủ chính, Tự động hết hạn TTL mục nhập, Xử lý song song, Xử lý tệp lớn và nhỏ, Truy cập độ trễ thấp vào bất kỳ tệp nào và nhiều tính năng khác.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập cụm SeaweedFS trên máy chủ Ubuntu 20.04.

Điều kiện tiên quyết​

  • Một máy chủ đang chạy máy chủ Ubuntu 20.04.
  • Mật khẩu gốc được cấu hình trên máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn nên cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
Mã:
apt-get update -y
Sau khi tất cả các gói được cập nhật, bạn sẽ cần cài đặt một số phụ thuộc bắt buộc khác trong máy chủ của mình. Bạn có thể cài đặt tất cả chúng bằng cách chạy lệnh sau:
Mã:
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
Sau khi cài đặt tất cả các phụ thuộc, bạn cũng cần cài đặt Golang trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install golang -y
Sau khi cài đặt hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt SeaweedFS​

Theo mặc định, SeaweedFS không có trong kho lưu trữ mặc định của Ubuntu 20.04. Vì vậy, bạn sẽ cần tải xuống và biên dịch nó từ nguồn.

Trước tiên, hãy tải xuống phiên bản mới nhất của SeaweedFS từ kho lưu trữ Git bằng lệnh sau:
Mã:
git clone https://github.com/chrislusf/seaweedfs.git
Sau khi tải xuống hoàn tất, hãy thay đổi thư mục thành SeaweedFS và cài đặt nó bằng lệnh sau:
Mã:
cd ~/seaweedfs
make install
Lệnh trên sẽ cài đặt nhị phân SeaweedFS bên trong thư mục ~/go/bin/. Bây giờ, hãy sao chép tệp nhị phân đã cài đặt vào thư mục /usr/loca/bin bằng lệnh sau:
Mã:
cp ~/go/bin/weed /usr/local/bin/
Tiếp theo, hãy xác minh phiên bản SeaweedFS đã cài đặt bằng lệnh sau:
Mã:
weed version
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
version 30GB 2.14 4211601e linux amd64
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo tệp dịch vụ Systemd cho Master​

Trước tiên, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ SeaweedFS. Bạn có thể tạo nó bằng cách chạy lệnh sau:
Mã:
nano /etc/systemd/system/seaweedmaster.service
Thêm các dòng sau:
Mã:
[Unit]Description=SeaweedFS MasterAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed masterWorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-master[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ SeaweedFS và cho phép dịch vụ này khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl startweedmaster
systemctl enableweedmaster
Bạn có thể xác minh trạng thái của SeaweedFS master bằng lệnh sau:
Mã:
systemctl statusweedmaster
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
?weedmaster.service - SeaweedFS Master Đã tải: đã tải (/etc/systemd/system/seaweedmaster.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ 4, 2020-12-09 08:30:06 UTC; 3 giây trước PID chính: 25740 (weed) Nhiệm vụ: 10 (giới hạn: 4691) Bộ nhớ: 8,0M CGroup: /system.slice/seaweedmaster.service ??25740 /usr/local/bin/weed master09/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 master_server.go:107] Giới hạn kích thước ổ đĩa là 30000 MB09/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 master_server.go:192] adminScripts:09/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 master.go:122] Khởi động Seaweed Master 30GB 2.14 4211601e tại 0.0.0.0:933309/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 raft_server.go:70] Khởi động RaftServer với 69.87.216.36:933309/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 raft_server.go:129] người dẫn đầu cụm hiện tại:09/12 08:30:06 ubuntu2004 algaefs-master[25740]: I1209 08:30:06 25740 master.go:146] Khởi động Seaweed Master 30GB 2.14 4211601e máy chủ grpc tại>09 tháng 12 08:30:08 ubuntu2004 algaefs-master[25740]: I1209 08:30:08 25740 masterclient.go:78] Không tìm thấy người lãnh đạo hiện tại!09/12 08:30:08 ubuntu2004 algaefs-master[25740]: I1209 08:30:08 25740 raft_server.go:154] Đang khởi tạo cụm mới09/12 08:30:08 ubuntu2004 algaefs-master[25740]: I1209 08:30:08 25740 master_server.go:141] sự kiện thay đổi người dẫn đầu: => 69.87.216.36:933309/12 08:30:08 ubuntu2004 algaefs-master[25740]: I1209 08:30:08 25740 master_server.go:143] [ 69.87.216.36:9333 ] 69.87.216.36:9333 trở thành>
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo và khởi động máy chủ ổ đĩa​

Lúc này, máy chủ chính đã được khởi động và đang chờ các ổ đĩa. Đầu tiên, tạo hai thư mục ổ đĩa bằng lệnh sau:
Mã:
mkdir /mnt/{vol1,vol2}
Tiếp theo, tạo một tệp dịch vụ systemd để quản lý Volume1 bằng lệnh sau:
Mã:
nano /etc/systemd/system/seaweedvolume1.service
Thêm các dòng sau:
Mã:
[Unit]Description=SeaweedFS VolumeAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed volume -dir="/mnt/vol1" -max=10 -mserver="69.87.216.36:9333" -port=8081WorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-volume[Cài đặt]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ Volume1 và cho phép dịch vụ này khởi động khi khởi động lại hệ thống:
Mã:
systemctl startweedvolume1.service
systemctl enableweedvolume1.service
Bạn có thể xác minh trạng thái của dịch vụ Volume1 bằng lệnh sau:
Mã:
systemctl statusweedvolume1
Bạn sẽ nhận được kết quả sau:
Mã:
? algaevolume1.service - SeaweedFS Volume Đã tải: đã tải (/etc/systemd/system/seaweedvolume1.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ tư 2020-12-09 08:31:14 UTC; 4 giây trước PID chính: 25870 (weed) Nhiệm vụ: 9 (giới hạn: 4691) Bộ nhớ: 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=808109/12 08:31:14 ubuntu2004 systemd[1]: Đã khởi động SeaweedFS Volume.09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 file_util.go:23] Thư mục /mnt/vol1 Quyền: -rwxr-xr-x09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 disk_location.go:154] Lưu trữ bắt đầu trên dir: /mnt/vol1 với 0 ổ đĩa >09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 disk_location.go:157] Lưu trữ bắt đầu trên dir: /mnt/vol1 với 0 ec shard09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 volume_grpc_client_to_master.go:52] Máy chủ khối lượng bắt đầu với hạt giống mas>09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 volume.go:334] Khởi động Seaweed volume server 30GB 2.14 4211601e tại 0.0.>09/12 08:31:14 ubuntu2004 algaefs-volume[25870]: I1209 08:31:14 25870 volume_grpc_client_to_master.go:114] Nhịp tim tới: 69.87.216.36:9333
Tiếp theo, tạo tệp dịch vụ systemd cho Volume2 bằng lệnh sau:
Mã:
nano /etc/systemd/system/seaweedvolume2.service
Thêm các dòng sau:
Mã:
[Unit]Description=SeaweedFS VolumeAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed volume -dir="/mnt/vol2" -max=5 -mserver="69.87.216.36:9333" -port=8080WorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-volume2[Cài đặt]WantedBy=multi-user.target
Lưu và đóng tệp sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, hãy khởi động dịch vụ Volume2 và cho phép dịch vụ này khởi động khi khởi động lại hệ thống:
Mã:
systemctl startweedvolume2.service
systemctl enableweedvolume2.service
Bạn có thể xác minh trạng thái của dịch vụ Volume2 bằng lệnh sau:
Mã:
systemctl statusweedvolume2
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
?weedvolume2.service - SeaweedFS Volume Đã tải: đã tải (/etc/systemd/system/seaweedvolume2.service; đã tắt; đã bật cài đặt trước của nhà cung cấp) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ 4, ngày 09 tháng 12 năm 2020 lúc 08:32:03 UTC; 4 giây trước PID chính: 25921 (weed) Nhiệm vụ: 10 (giới hạn: 4691) Bộ nhớ: 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=808009/12 08:32:03 ubuntu2004 systemd[1]: Đã khởi động SeaweedFS Volume.09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 file_util.go:23] Thư mục /mnt/vol2 Quyền: -rwxr-xr-x09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 disk_location.go:154] Lưu trữ bắt đầu trên dir: /mnt/vol2 với 0 ổ đĩa>09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 disk_location.go:157] Lưu trữ bắt đầu trên dir: /mnt/vol2 với 0 ec shar>09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 volume.go:334] Khởi động Seaweed volume server 30GB 2.14 4211601e tại 0.0>09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 volume_grpc_client_to_master.go:52] Máy chủ khối lượng bắt đầu với ma hạt giống>09/12 08:32:03 ubuntu2004 algaefs-volume2[25921]: I1209 08:32:03 25921 volume_grpc_client_to_master.go:114] Nhịp tim tới: 69.87.216.36:9333
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Ghi tệp mẫu vào ổ đĩa​

Đầu tiên, bạn sẽ cần gửi yêu cầu HTTP POST, PUT hoặc GET để lấy ID tệp và URL máy chủ ổ đĩa. Bạn có thể thực hiện bằng lệnh sau:
Mã:
curl http://localhost:9333/dir/assign
Bạn sẽ thấy ID tệp và URL máy chủ ổ đĩa trong đầu ra sau:
Mã:
{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}
Tiếp theo, thêm tệp mẫu có tên file1.png vào ổ đĩa bằng ID tệp và URL ổ đĩa như hiển thị bên dưới:
Mã:
curl -F file=@/root/file1.png http://69.87.216.36:8080/7,016bad1bc0
Bạn sẽ nhận được kết quả sau đầu ra:
Mã:
{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}
Sau khi bạn đã tải tệp lên ổ đĩa, bạn có thể đọc tệp đó bằng lệnh sau:
Mã:
curl http://69.87.216.36:9333/dir/lookup?volumeId=7
Bạn sẽ nhận được đầu ra sau:
Mã:
{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập SeaweedFS​

Bây giờ bạn có thể truy cập SeaweedFS bằng URL http://your-server-ip:8080/7,016bad1bc0 để xem tệp bạn đã lưu trữ trong kho đối tượng SeaweedFS:



Bạn có thể xem tệp bạn đã tải lên trước đó trong màn hình ở trên.

Kết luận​

Xin chúc mừng! bạn đã cài đặt và định cấu hình thành công cụm SeaweedFS trên máy chủ Ubuntu 20.04. Để biết thêm thông tin, hãy truy cập trang tài liệu SeaweedFS. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên