Installation et Utilisation de FastDFS pour le Stockage de Fichiers Distribué

Concepts de FastDFS

FastDFS est un système de gestion de fichiers distribué, développé en langage C par Yu Qing en 2008, conçu pour répondre aux besoins de stockage à grande échelle et d'équilibrage de charge. Il prend en charge l'extension horizontale et la synchronisation en temps réel, avec des fonctionnalités principales telles que le stockage, la synchronisation, le téléchargement et l'accès aux fichiers. Ce système est idéal pour gérer des fichiers volumineux comme des images ou des vidéos dans des envirnonements à trafic élevé.

L'architecture de FastDFS se compose de deux parties : un cluster de trackers pour gérer les requêtes et équilibrer la charge, et un cluster de stockage pour les données. Le cluster de stockage est divisé en groupes, où les serveurs au sein d'un même groupe effectuent une synchronisasion des données, tandis que les groupes différents ne communiquent pas directement.

Étapes d'Installation

Connectez-vous à votre système Linux pour commencer l'installation.

1. Préparation de l'environnement

Installez les dépendances requises :

apt-get install build-essential -y
apt-get install libevent-dev -y

2. Installation de libfastcommon

Téléchargez et installez libfastcommon à partir du dépôt officiel :

cd /opt/
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
tar -xzf V1.0.43.tar.gz
cd libfastcommon-1.0.43
./make.sh && ./make.sh install

3. Installation de FastDFS

Téléchargez et compilez FastDFS :

cd /opt/
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
tar -xzf V6.06.tar.gz
cd fastdfs-6.06
./make.sh && ./make.sh install

Vérifiez l'installation avec les commandes suivantes :

ls -l /usr/bin/fdfs*
cp /opt/fastdfs-6.06/conf/http.conf /etc/fdfs/
cp /opt/fastdfs-6.06/conf/mime.types /etc/fdfs/

4. Configuration des services

Accédez au répertoire de configuraton et renommez les fichiers exemple :

cd /etc/fdfs/
mv tracker.conf.sample tracker.conf
mv storage.conf.sample storage.conf
mv client.conf.sample client.conf

Modifiez tracker.conf pour définir le répertoire de stockage :

mkdir -p /var/data/fastdfs/tracker
vim tracker.conf  # Remplacez "base_path" par "/var/data/fastdfs/tracker"

Configurez storage.conf avec les paramètres suivants :

mkdir -p /var/data/fastdfs/storage
vim storage.conf  # Définissez "base_path" sur "/var/data/fastdfs/storage" et "tracker_server" sur l'adresse IP de votre tracker

5. Démarrage des services

Lancez d'abord le tracker, puis le stockage :

fdfs_trackerd /etc/fdfs/tracker.conf start
fdfs_storaged /etc/fdfs/storage.conf start

Vérifiez l'enregistrement du stockage auprès du tracker :

fdfs_monitor /etc/fdfs/storage.conf

6. Test d'upload de fichiers

Créez un fichier de test et configurez le client :

echo "Contenu exemple" > /tmp/test.txt
vim /etc/fdfs/client.conf  # Modifiez "base_path" et "tracker_server" selon votre configuration

Uploadez le fichier et récupérez l'URL :

fdfs_test /etc/fdfs/client.conf upload /tmp/test.txt

Intégration avec Nginx

Pour servir les fichiers via HTTP, installez le module Nginx pour FastDFS :

cd /opt/
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
tar -xzf V1.22.tar.gz
cp fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/

Configurez mod_fastdfs.conf pour pointer vers votre tracker, puis compilez Nginx avec le module :

cd /opt/nginx-1.17.0
./configure --add-module=/opt/fastdfs-nginx-module-1.22/src
make && make install

Ajoutez une directive dans nginx.conf pour servir les fichiers :

location /group1/M00 {
    ngx_fastdfs_module;
}

Démarrez Nginx :

/usr/local/nginx/sbin/nginx

Utilisation avec Spring Boot

Créez un projet Spring Boot et ajoutez la dépendance Maven :

<dependency>
    <groupId>net.oschina.zcx7878</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27.0.0</version>
</dependency>

Configurez le fichier fastdfs-client.properties :

fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.tracker_servers = votre_ip:22122
fastdfs.connection_pool.enabled = true

Exemple de code pour uploader un fichier :

import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;

public class FastDFSUploader {
    public static void main(String[] args) throws Exception {
        ClientGlobal.initByProperties("fastdfs-client.properties");
        TrackerClient tracker = new TrackerClient();
        TrackerServer server = tracker.getConnection();
        StorageClient1 client = new StorageClient1(server, null);
        NameValuePair[] metadata = new NameValuePair[] { new NameValuePair("description", "test file") };
        String[] result = client.upload_file("chemin/vers/fichier.jpg", "jpg", metadata);
        StringBuilder path = new StringBuilder();
        for (String segment : result) {
            path.append(segment).append("/");
        }
        System.out.println("URL accessible : " + path.toString().substring(0, path.length() - 1));
    }
}

Étiquettes: fastdfs stockage-distribué nginx spring-boot Java

Publié le 13 juin à 23h31