Giter Site home page Giter Site logo

copycat's Introduction

CopyCat

OpenDedupe Filesystem Sync Listener for Cloud Storage

This service is used in conjuction with the SDFS Filesystem to allow multiple SDFS volumes to share metadata. It listens for metadata changes on the control port of SDFS Volumes and notifies other configured volumes when metadata has changed.

It is particularly useful when using with backup to cloud storage becuase is allows different backup servers to restore images regardless of location of the origional backup.

CopyCat is licensed under the Apache License

To user copycat your sdfs volume must meet the following requirements:

  1. Must use an object store backend such as S3,Azure,Google,swift
  2. The SDFS control port for the volume must be visible from the copy cat service
  3. All SDFS volumes in the cluster must use the same object store bucket
  4. All SDFS volumes in the cluster must use the same encryption key
  5. The SDFS volumes must be accessable from the copycat service.

Setup Guide for using Filesync service

The below example will allow two volumes to share metadata. It assumes there are two hosts (host1 and host2). This can also run on a single host but the port for volume one would be 6442 and volume2 would be 6443. In addition if you are testing this on one host the volume-name for volume2 would be pool1.

Step 1 - Create two SDFS Volumes

As stated above, all volumes must share the same bucket for filesync to work. In addition the control port mu

On host1 create a volume

mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --cloud-secret-key=<secret> --cloud-access-key=<access-key> --cloud-bucket-name=<a shared bucket name> --aws-enabled=true --enable-replication-master --sdfscli-password=apassword

On host2 create a volume with the same bucket name

mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --cloud-secret-key=<secret> --cloud-access-key=<access-key> --cloud-bucket-name=<a shared bucket name> --aws-enabled=true --enable-replication-master --sdfscli-password=apassword

Step 2 - Mount both volumes

On host 1

mount -t sdfs pool0 /mnt

On host 2

mount -t sdfs pool0 /mnt

Step 3 - Get Volume IDs for each volume In this step you will want to verify both volumes are sharing the same pool and get their volume ids. This command can be run on either host.

sdfscli --list-cloud-volumes

alt tag

The volume id's will be listed in the ID column. Keep note of these volume id's. The volume ids are also contained the config.xml documents for the volumes in the serial-number tag.

alt tag

Step 4 - Configure CopyCat

CopyCat is configured throught the config.json file within the tar package.

{
"persist-path" : "/tmp",
"debug" : true,
"servers" : [ {
    "port" : 6442,
    "host": "host0",
    "password" : "admin",
    "volumeid" : 272362632702517055,
    "listen" : true,
    "update" : true
},
{
    "port" : 6442,
    "host": "host1",
    "password" : "admin",
    "volumeid" : 1900326592403395044,
    "listen" : true,
    "update" : true
}]
}

persist-path: This is the path where changes will peristed until they are committed to the other volumes

debug: Should debug output be sent to standard out

servers: An array of volumes that copycat will listen and commit changes to

port: The TCP port that the SDFS Volume is listening on for control. This is 6442 by default but increments up based on the number of volumes mounted on the host.

host: The hostname or IP address that the SDFS Volume is on.

password: The password that was set for authenticating to the volume. This was set during volume creation with the --sdfscli-password parameter

volumeid: The id for the volume as showin with sdfscli --list-cloud-volumes

listen: If set to true will listen for volume changes and notify other volumes when changes occure

update: It set to true copycat will notify the volume when changes occure on other volumes.

Step 5 - Start CopyCat

CopyCat requires java 8+. Mutilple instances of copycat can be running on multiple systems using the same config to provide high availability.

java -cp cc.jar:libs/* com.datish.copycat.Server config.json

copycat's People

Contributors

opendedup avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.