Installation

How do I install this?


Overview

ScaleIO-Framework is written in Go, so there are typically no dependencies that must be installed alongside its single binary file. The Framework is deployed via Marathon.

Requirements

Deployment Strategies

Before you deploy the Framework, you might want to think about what you want your final fully deployed ScaleIO cluster to look like. Please take a look at the Deployment Strategies section to determine the best method for deploying your desired configuration.

Deploying the latest version

The easiest way to deploy the latest version of the ScaleIO Framework is to curl the JSON file below representing a task to Marathon.

Before issuing the curl command, there are a couple of placeholder variables you need to replace with real values. Those placeholders are enclosed in brackets.

{
  "id": "scaleio-scheduler",
  "uris": [
    "https://github.com/codedellemc/scaleio-framework/releases/download/v0.3.1/scaleio-scheduler",
    "https://github.com/codedellemc/scaleio-framework/releases/download/v0.3.1/scaleio-executor"
  ],
  "cmd": "chmod u+x scaleio-scheduler && ./scaleio-scheduler -loglevel=debug -rest.port=$PORT -uri=[IP ADDRESS FOR ANY MESOS MASTER]:5050 -scaleio.password=[SCALEIO GATEWAY PASSWORD] -scaleio.protectiondomain=[PROTECTION DOMAIN NAME] -scaleio.storagepool=[STORAGE POOL NAME] -scaleio.preconfig.primary=[MASTER MDM IP ADDRESS] -scaleio.preconfig.secondary=[SLAVE MDM IP ADDRESS] -scaleio.preconfig.tiebreaker=[TIEBREAKER MDM IP ADDRESS] -scaleio.preconfig.gateway=[GATEWAY IP ADDRESS]",
  "mem": 32,
  "cpus": 0.2,
  "instances": 1,
  "constraints": [
    ["hostname", "UNIQUE"]
  ]
}

Once those values have been replaced, issues the curl command like so:

curl -k -XPOST -d @sioframework-latest.json -H "Content-Type: application/json" [MARATHON IP ADDRESS]:8080/v2/apps

Deploying a specific release

To deploy a specific version of the ScaleIO Framework we use a similar curl command with a slightly modified version of the JSON file to Marathon.

Before issuing the curl command, we need to fill in the placeholder variables like before.

{
  "id": "scaleio-scheduler",
  "uris": [
    "https://github.com/codedellemc/scaleio-framework/releases/download/v0.3.1/scaleio-scheduler",
    "https://github.com/codedellemc/scaleio-framework/releases/download/v0.3.1/scaleio-executor"
  ],
  "cmd": "chmod u+x scaleio-scheduler && ./scaleio-scheduler -loglevel=debug -rest.port=$PORT -uri=[IP ADDRESS FOR ANY MESOS MASTER]:5050 -scaleio.password=[SCALEIO GATEWAY PASSWORD] -scaleio.protectiondomain=[PROTECTION DOMAIN NAME] -scaleio.storagepool=[STORAGE POOL NAME] -scaleio.preconfig.primary=[MASTER MDM IP ADDRESS] -scaleio.preconfig.secondary=[SLAVE MDM IP ADDRESS] -scaleio.preconfig.tiebreaker=[TIEBREAKER MDM IP ADDRESS] -scaleio.preconfig.gateway=[GATEWAY IP ADDRESS]",
  "mem": 32,
  "cpus": 0.2,
  "instances": 1,
  "constraints": [
    ["hostname", "UNIQUE"]
  ]
}

Once those values have been replaced, issues the curl command like so:

curl -k -XPOST -d @sioframework-v020.json -H "Content-Type: application/json" [MARATHON IP ADDRESS]:8080/v2/apps

Build and install from source

The ScaleIO-Framework is also fairly simple to build from source. For more information, please visit the build-reference for more details.

To deploy a build from source, you will need access to an HTTP server in which you can house the scaleio-scheduler and scaleio-executor for Marathon to download from. After you have placed your custom build binaries, you can make the following modification to the JSON file to deploy the Framework (replace your.domain/path/to/your with the http location of your binaries):

{
  "id": "scaleio-scheduler",
  "uris": [
    "https://your.domain/path/to/your/scaleio-scheduler",
    "https://your.domain/path/to/your/scaleio-executor"
  ],
  "cmd": "chmod u+x scaleio-scheduler && ./scaleio-scheduler -loglevel=debug -rest.port=$PORT -uri=[IP ADDRESS FOR ANY MESOS MASTER]:5050 -scaleio.password=[SCALEIO GATEWAY PASSWORD] -scaleio.protectiondomain=[PROTECTION DOMAIN NAME] -scaleio.storagepool=[STORAGE POOL NAME] -scaleio.preconfig.primary=[MASTER MDM IP ADDRESS] -scaleio.preconfig.secondary=[SLAVE MDM IP ADDRESS] -scaleio.preconfig.tiebreaker=[TIEBREAKER MDM IP ADDRESS] -scaleio.preconfig.gateway=[GATEWAY IP ADDRESS]",
  "mem": 32,
  "cpus": 0.2,
  "instances": 1,
  "constraints": [
    ["hostname", "UNIQUE"]
  ]
}

(Experimental) Provision the Entire ScaleIO Cluster

There exist an experimental feature to provision the entire ScaleIO cluster from scratch which includes the 3 MDM (Primary, Secondary, and TieBreaker) nodes. This will allow you to stand up ScaleIO on a bare Mesos cluster without any existing ScaleIO infrastructure.

For more information, please visit the experimental page for more details.