Architecture

Architecture #

The Seaweed Admin is a web-based application to better manage SeaweedFS clusters.

Manage multiple SeaweedFS clusters #

Each cluster can be independently managed by the Seaweed Admin.

graph TD
    A[Seaweed Admin] <--> B1[SeaweedFS Cluster 1]
    A <--> B2[SeaweedFS Cluster 2]
    A <--> B3[SeaweedFS Cluster 3]

    subgraph B1[SeaweedFS Cluster 1]
        direction LR
        B11[Master Servers]
        B12[Volume Servers]
        B13[Filer Servers]
    end
    subgraph B2[SeaweedFS Cluster 2]
        direction LR
        B21[Master Servers]
        B22[Volume Servers]
        B23[Filer Servers]
    end
    subgraph B3[SeaweedFS Cluster 3]
        direction LR
        B31[Master Servers]
        B32[Volume Servers]
        B33[Filer Servers]
    end
    

Off-site filer metadata storage #

Seaweed Admin stores the metadata snapshots in a local directory. This allows for off-site metadata replica.

graph RL
    A[Seaweed Admin]

    subgraph A[Seaweed Admin]
        direction LR
        A11[Admin UI]
        A12[LifeCycle Management]
        A13[Point-in-Time Recovery]
    end

    subgraph A13[Point-in-Time Recovery]
        direction LR
        A131[Subscribe to Metadata Changes]
        A132[(Synchronized Metadata Replica)]
    end

    subgraph B1[SeaweedFS Cluster]
        direction LR
        B11[Master Servers]
        B12[Volume Servers]
        B13[Filer Servers]
    end

    B1[SeaweedFS Cluster] --> A13

Efficient lifecycle management of files and directories #

  • The open-source SeaweedFS relies on the TTL mechanism to delete files. The Seaweed Admin provides a more flexible way to manage the lifecycle of files and directories. Any directory or file can have a retention period.
  • The TTL mechanism depends on the filer store to purge the entries. If the filer store does not natively support TTL, the files will not be deleted until the directory is listed. The Seaweed Admin provides a way to delete files immediately.
graph LR
    A[Seaweed Admin]

    subgraph A[Seaweed Admin]
        direction LR
        A11[Admin UI]
        A12[LifeCycle Management]
        A13[Point-in-Time Recovery]
    end

    subgraph A12[LifeCycle Management]
        direction LR
        A121[Subscribe to Metadata Changes]
        A122[Delete Expired Files]
    end

    subgraph B1[SeaweedFS Cluster]
        direction LR
        B11[Master Servers]
        B12[Volume Servers]
        B13[Filer Servers]
    end

    A12 <-- "subscribe/delete" --> B13

Point-in-time recovery #

Seaweed Admin can take daily snapshots of the metadata, and can create snapshots on demand to any point in time.

graph RL
    A[Seaweed Admin]

    subgraph A[Seaweed Admin]
        direction LR
        A11[Admin UI]
        A12[LifeCycle Management]
        A13[Point-in-Time Recovery]
    end

    subgraph A13[Point-in-Time Recovery]
        direction LR
        A131[Subscribe to Metadata Changes]
        A132[Metadata Snapshots]
        A137[Purge Old Metadata Snapshots]
        A138[Delete Unreferenced File Chunks]
    end

    subgraph A132[Metadata Snapshots]
        direction LR
        A1320[(Synchronized Replica)]
        A133[(Snapshot @ t1)]
        A134[(Snapshot @ t2)]
        A135[(Snapshot @ t3)]
        A136[(Snapshots ...)]
    end

    subgraph B1[SeaweedFS Cluster]
        direction LR
        B11[Master Servers]
        B12[Volume Servers]
        B13[Filer Servers]
    end

    B1[SeaweedFS Cluster] <-- subscribe/delete --> A13

Recover any file or directory to any point in time #

You can browse each snapshot to view the files, download them, or restore the right file directly with a single click.

graph TB
    A[Directories and Files]
    B[Snapshot t1]
    C[Snapshot t2]
    D[Snapshot t3]
    F[Recovered Directories and Files]
    G[Snapshot t4]

    subgraph A[Directories and Files]
        H[Root]
        H --> I[Dir 1]
        H --> J[Dir 2]
        I --> K[File 1]
        I --> L[File 2]
        J --> M[File 3]
        J --> N[Accidentally Deleted]:::deleted
    end

    subgraph F[Recovered Directories and Files]
        O[Root]
        O --> P[Dir 1]
        O --> Q[Dir 2]
        P --> R[File 1]
        P --> S[File 2]
        Q --> T[File 3]
        Q --> U[Recovered File]:::recovered
    end

    A --> B
    A --> C
    A --> D
    A --> G
    D -- "recover deleted file" --> F

    classDef deleted stroke:#f00,stroke-width:2px,text-decoration:line-through;
    classDef recovered fill:#fdd,stroke:#f00,stroke-width:2px;