#9 Ubuntu 20.04 上安装 SeaweedFS 及配置集群

准备工作

升级系统包到最新版

apt-get update -y

安装依赖库

apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y

安装 Go 环境

apt-get install golang -y

安装 SeaweedFS

由于 SeaweedFS 并不在 Ubuntu 20.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

以上步骤都顺利完成后我们就可以进入下一步了。^_^

为主控建立一个系统服务文件

首先,你需要建立一个系统服务文件来管理 SeaweedFS 服务。

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

建立并启动卷服务器

当前,主控服务器已启动,处于添加卷的状态。 首先,我们建两个卷目录

mkdir /mnt/{vol1,vol2}

建立一个系统服务文件来管 vol1

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="192.168.1.26:9333" -port=8081
WorkingDirectory=/usr/local/bin/
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

其中 -mserver="主控服务器ip:9333",测试环境填写127.0.1.1,生产环境自行修改为主控服务器ip

保存并关闭,重新加载 systemd

systemctl daemon-reload

启动 vol1 服务,并且设置为系统重启自启服务

systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service

验证 vol1 状态

systemctl status seaweedvolume1

建立一个系统服务文件来管 vol2

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="192.168.1.26:9333" -port=8080
WorkingDirectory=/usr/local/bin/
SyslogIdentifier=seaweedfs-volume2

[Install]
WantedBy=multi-user.target

其中 -mserver="主控服务器ip:9333",测试环境填写127.0.1.1,生产环境自行修改为主控服务器ip

保存并关闭,重新加载 systemd

systemctl daemon-reload

启动 vol2 服务,并且设置为系统重启自启服务

systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service

验证 vol2 状态

systemctl status seaweedvolume2

测试在卷中写入文件

首先你需要发送一个 HTTP 请求,比如 POST, PUT, 或者 GET 都行,来获取文件 ID 以及 卷服务器的 URL

curl http://localhost:9333/dir/assign

输出如下结果,包含了文件 ID 以及卷服务器的 URL

{"fid":"3,010490505e","url":"192.168.1.26:8081","publicUrl":"192.168.1.26:8081","count":1}

由于我的 8080 端口被其他服务占用了,所以当前自动分配为 8081

使用上述的 文件ID卷URL 随意添加一个文件,譬如我 /home/msmn/Desktop 下的 text.md 的文件到卷中

curl -F file=@/home/msmn/Desktop/text.md http://192.168.1.26:8081/3,010490505e

返回如下输出结果

{"name":"text.md","size":633,"eTag":"6588415c61a25133103711295a4bbbf7"}

上传后的文件,可以通过如下方式读取

curl http://192.168.1.26:9333/dir/lookup?volumeId=3

返回如下输出结果

{"volumeId":"3","locations":[{"url":"localhost:8081","publicUrl":"localhost:8081"}]}

访问 SeaweedFS

你可以通过 http://192.168.1.26:8081/3,010490505e 来浏览你刚才存储在 SeaweedFS 中的文件。

最終更新

役に立ちましたか?