ZebClient With Wasabi
    • 24 Jun 2024
    • 3 Minutes to read
    • PDF

    ZebClient With Wasabi

    • PDF

    Article summary

    How do I use ZebClient with Wasabi?

    Zebware's ZebClient is a cloud data memory bridge delivering cloud data access at memory speed to local data-centric applications for high performance compute operations over S3 or filesystem interface. ZebClient has been validated for use with Wasabi.  To use this product with Wasabi, please follow the instructions below.

    Reference Architecture 

    Screen_Shot_2021-09-20_at_10.43.09_AM.png

     

    Prerequisites

    • ZebClient v 1.1

    • A standard deployment of ZebClient is required. Please refer to their documentation for instructions 

    • An active Wasabi account

    Configuration

    ZebClient Agent Configuration

    1. With the configuration files below you can start a 2-node ZebClient cluster (1 Agents and 2 Shared-services / Servers running on each of the 2 nodes)

      ZebClient Agent configuration files need to be defined and running on each node in the cluster

    2. The configuration file below is an example with Wasabi as an outlet.

      cache:
        km: 2+4
        loglevel: warn 
        telemetry:
          prometheus:
            addr: "0.0.0.0:9999"
      
      license: #Update your path to the license file
        path: "path/to/license.json"
      
      
      frontends:
      - s3: #If needed, update your s3 frontend to ZebClient and possibly path to certs
          endpoint: 0.0.0.0:24101
          region: us-east-1
          accesskey: access
          secretkey: secret
          cacert:
          cert:
          certkey:
      - fuse: #Update path to fuse mounted folder and tmp dir. Both folders need to be created and tmp dir located on fast disk.
            mountpoint: /path/to/fuse
            namespace: s3/buckets/
            tempdirs:
              - /path/to/tmp
      
      tierings:
      - tiering:   
        - backend:
            fs: #Create path to folder for shards, NOTE: Shards should be placed on different disks.
              path: /path/to/shard/storage1/       
          size: 200Gib
          threshold: 50%
          metadatapersistense:
              metadatadirectory: /path/to/metadata/storage/1
      - tiering:      
        - backend:
            fs:
              path: /path/to/shard/storage2/        
          size: 200Gib
          threshold: 50%
          metadatapersistense: #Use fast disk for metadata directory
              metadatadirectory: /path/to/metadata/storage2/
      - tiering:      
        - backend:
            grpc: #Instead of NODE1 use ip address of the NODE1 where ZebClient server is running.
              endpoint: "NODE1:17101"
          cacert:
          cert:
          certkey:
          size: 200Gib
          threshold: 50%
          metadatapersistense:
            metadatadirectory: /path/to/metadata/storage3/
      - tiering:      
        - backend:
            grpc:
              endpoint: "NODE1:17102"
              cacert:
          cert:
          certkey:
          size: 200Gib
          threshold: 50%
          metadatapersistense:
            metadatadirectory: /path/to/metadata/storage4/
      - tiering:      
        - backend:
            grpc: #Instead of NODE2 use ip address of the NODE2 where ZebClient server is running.
              endpoint: "NODE2:17101"
          cacert:
          cert:
          certkey:
          size: 200Gib
          threshold: 50%
          metadatapersistense:
            metadatadirectory: /path/to/metadata/storage5/
      - tiering:      
        - backend:
            grpc:
              endpoint: "NODE2:17101"
          cacert:
          cert:
          certkey:
          size: 200Gib
          threshold: 50%
          metadatapersistense:
            metadatadirectory: /path/to/metadata/storage6/
      outlets:
      - s3: #Configure your own s3 provider to use outlet
          endpoint: https://s3.eu-central-1.wasabisys.com
          region: eu-central-1
          accesskey: 
          secretkey: 
          bucket: bucket_name

      Note: This config example discusses the use of Wasabi's eu-central-1 storage region. To use other Wasabi storage regions, please use the appropriate Wasabi service URL as described in this article.

      ZebClient Server Configuration

    3. Configuration files for the ZebClient Servers (4 in total) need to be defined and available on the 2 nodes running the Server processes. Each node will run 2 Servers

    4. The configuration file of Server 1 is shown below 

      cache:
        km: "2+4"  
      
      frontend: #If needed, update your s3 frontend to ZebClient and possibly path to certs
        endpoint: "0.0.0.0:17101"
        cacert:
        cert:
        certkey:
      
      backend:
        fs: #Create path to folder for shards
          path: path/to/shard/grpc-storage/
    5. The configuration file of Server 2 is shown below

      cache:
        km: "2+4"  
      
      frontend: #If needed, update your s3 frontend to ZebClient and possibly path to certs
        endpoint: "0.0.0.0:17102"
        cacert:
        cert:
        certkey:
      
      backend:
        fs: #Create path to folder for shards
          path: path/to/shard/grpc-storage2/
    6. Copy configuration files to the selected folder (eg. /usr/local/etc/) on each cluster.

      $ cp cluster-server1-1.conf /usr/local/etc/
      $ cp cluster-server1-2.conf /usr/local/etc/
      $ cp cluster-agent1.conf /usr/local/etc/
    7. Bring up the 4 servers by executing the commands below on the 2 nodes.

      Note: ZebClient should run as a user that has access to the filesystems that are being served. Furthermore, the Servers need to be launched prior to starting the Agents.

      On node 1:

      $ zebclient server run /usr/local/etc/cluster-server1-1.conf
      $ zebclient server run /usr/local/etc/cluster-server1-2.conf

      On node 2:

      $ zebclient server run /usr/local/etc/cluster-server2-1.conf
      $ zebclient server run /usr/local/etc/cluster-server2-2.conf
    8. Once the ZebClient Servers are running, bring up the ZebClient Agents.

      On node 1:

      $ zebclient agent run /usr/local/etc/cluster-agent1.conf

      On node 2:

      $ zebclient agent run /usr/local/etc/cluster-agent2.conf