GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar el clúster SeaweedFS en Ubuntu 20.04

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

  • Un servidor que ejecuta el servidor Ubuntu 20.04.
  • Se configura una contraseña raíz en el servidor.

Cómo empezar

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. Puede 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 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 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 Volume1 y habilítelo para que se inicie al reiniciar el sistema:

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 Volume2 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 Volume2 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 el ID de 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:

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 la página de documentación de SeaweedFS. Siéntase libre de preguntarme si tiene alguna pregunta.


Ubuntu
  1. Cómo instalar y configurar Redis en Ubuntu 18.04

  2. Cómo instalar y configurar Redmine en Ubuntu 18.04

  3. Cómo instalar y configurar Samba en Ubuntu 18.04

  4. Cómo instalar y configurar Redis en Ubuntu 20.04

  5. Cómo instalar y configurar Jenkins en Ubuntu 20.04

Cómo instalar y configurar OpenVAS 9 en Ubuntu

Cómo instalar y configurar Redis en Ubuntu 20.04

Cómo instalar y configurar Neo4j en Ubuntu 20.04

Cómo instalar y configurar el servidor VNC en Ubuntu 20.04

Cómo instalar y configurar Elasticsearch en Ubuntu 20.04

Cómo instalar y configurar Nextcloud en Ubuntu 20.04