C√≥mo instalar y configurar el cl√ļster SeaweedFS en Ubuntu 20.04

Esquema FS de algas marinas

SeaweedFS es un sistema de archivos distribuido de c√≥digo abierto, simple y altamente escalable para almacenar y servir miles de millones de archivos r√°pidamente. Es muy similar a otros sistemas de archivos, incluidos Ceph, GlusterFS y HDFS. Se puede integrar f√°cilmente con la nube y lograr un tiempo de acceso r√°pido sin cambios en el lado del cliente. Tiene un amplio conjunto de caracter√≠sticas que incluyen, conmutaci√≥n por error autom√°tica de servidores maestros, caducidad TTL de entrada autom√°tica, procesamiento paralelo, manejo de archivos grandes y peque√Īos, acceso de baja latencia a cualquier archivo y mucho m√°s.

En este tutorial, le mostraremos c√≥mo configurar el cl√ļster SeaweedFS en el servidor Ubuntu 20.04.

requisitos previos

  • Un servidor que ejecuta el servidor Ubuntu 20.04.
  • Una contrase√Īa de root est√° configurada en el servidor.

Empezando

Antes de comenzar, se recomienda actualizar los paquetes de su sistema a la √ļltima versi√≥n. Puede actualizarlos con el siguiente comando:

apt-get update -y

Una vez que todos los paquetes estén actualizados, deberá instalar algunas otras dependencias requeridas en su servidor. Puede instalarlos todos ejecutando el siguiente comando:

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

Después de instalar todas las dependencias, también debe instalar Golang en su sistema. Puedes instalarlo con el siguiente comando:

apt-get install golang -y

Una vez completada la instalación, puede continuar con el siguiente paso.

Instalar SeaweedFS

De forma predeterminada, SeaweedFS no est√° disponible en el repositorio predeterminado de Ubuntu 20.04. Por lo tanto, deber√° descargarlo y compilarlo desde la fuente.

Primero, descargue la √ļltima versi√≥n de SeaweedFS del repositorio de Git usando el siguiente comando:

git clone https://github.com/chrislusf/seaweedfs.git

Una vez que se complete la descarga, cambie el directorio a SeaweedFS e inst√°lelo con el siguiente comando:

cd ~/seaweedfs
make install

El comando anterior instalar√° el binario SeaweedFS dentro del directorio ~/go/bin/. Ahora, copie el binario instalado en el directorio /usr/loca/bin con el siguiente comando:

cp ~/go/bin/weed /usr/local/bin/

A continuación, verifique la versión instalada de SeaweedFS con el siguiente comando:

weed version

Deberías obtener el siguiente resultado:

version 30GB 2.14 4211601e linux amd64

Una vez que haya terminado, puede continuar con el siguiente paso.

Crear un archivo de servicio de Systemd para Master

Primero, deber√° crear un archivo de servicio systemd para administrar el servicio SeaweedFS. Puede crearlo ejecutando el siguiente comando:

nano /etc/systemd/system/seaweedmaster.service

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio SeaweedFS y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start seaweedmaster
systemctl enable seaweedmaster

Puede verificar el estado del maestro SeaweedFS con el siguiente comando:

systemctl status seaweedmaster

Deberías obtener el siguiente resultado:

? 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>

Una vez que haya terminado, puede continuar con el siguiente paso.

Crear e iniciar servidores de volumen

En este punto, el servidor maestro se inicia y espera los vol√ļmenes. Primero, cree un directorio de dos vol√ļmenes con el siguiente comando:

mkdir /mnt/{vol1,vol2}

A continuación, cree un archivo de servicio systemd para administrar el Volumen 1 con el siguiente comando:

nano /etc/systemd/system/seaweedvolume1.service

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Volumen 1 y habilítelo para que se inicie al reiniciar el sistema: Anuncio

systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service

Puede verificar el estado del servicio del Volumen 1 con el siguiente comando:

systemctl status seaweedvolume1

Deberías obtener el siguiente resultado:

? 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

A continuación, cree un archivo de servicio systemd para el Volumen 2 con el siguiente comando:

nano /etc/systemd/system/seaweedvolume2.service

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Volumen 2 y habilítelo para que se inicie al reiniciar el sistema:

systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service

Puede verificar el estado del servicio del Volumen 2 con el siguiente comando:

systemctl status seaweedvolume2

Deberías obtener el siguiente resultado:

? 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

Una vez que haya terminado, puede continuar con el siguiente paso.

Escribir un archivo de muestra en el volumen

Primero, deber√° enviar una solicitud HTTP POST, PUT o GET para obtener una ID de archivo y una URL del servidor de volumen. Puedes hacerlo con el siguiente comando:

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

Debería ver el ID de archivo y la URL del servidor de volumen en el siguiente resultado:

{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}

A continuación, agregue un archivo de muestra llamado file1.png al volumen utilizando la ID del archivo y la URL del volumen como se muestra a continuación:

curl -F [email protected]/root/file1.png http://69.87.216.36:8080/7,016bad1bc0

Deberías obtener el siguiente resultado:

{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}

Una vez que haya cargado el archivo en el volumen, puede leerlo con el siguiente comando:

curl http://69.87.216.36:9333/dir/lookup?volumeId=7

Deberías obtener el siguiente resultado:

{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}

Una vez que haya terminado, puede continuar con el siguiente paso.

Acceder a SeaweedFS

Ahora puede acceder a SeaweedFS usando la URL http://your-server-ip:8080/7,016bad1bc0 para ver el archivo que almacenó en el almacén de objetos de SeaweedFS:

Esquema FS de algas marinas

Puede ver el archivo que cargó anteriormente en la pantalla anterior.

Conclusión

¬°Felicidades! Ha instalado y configurado con √©xito el cl√ļster SeaweedFS en el servidor Ubuntu 20.04. Para obtener m√°s informaci√≥n, visite el Seaweed p√°gina de documentaci√≥n. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *