3.1 KiB
Starting your first castle cluster
1) Create a new cluster
The easiest way to create a new cluster is through the global discovery service:
curl -w "\n" 'https://discovery.castle.io/new?min-size=3&dns=true'
https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3
This will return a URL that acts as the logical "address" of the cluster, and enables clients to easily find the cluster.
The minimum size parameter can be used to prevent the cluster from starting up until the specified number of nodes join.
The DNS parameter will cause the discovery service to publish a DNS name for the new cluster like:
6a28e078895c5ec737174db2419bb2f3.castle.io
You can create custom CNAME entries in your own DNS servers that point to these entries, for example:
mycluster.acme.com
2) Add nodes to the cluster
You now need to start castle on nodes which will automatically find each other through the discovery service and form a cluster. You can run the castle nodes using a number of different approaches.
Running manually
Download castle from http://github.com/quantum/castle/releases
castle \
--discovery-url=https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3 \
--devices sda,sdb,sdc \
--public-network 10.0.10.0/24 \
--private-network 10.0.20.0/24
- TODO: other options: CPU affinity and limiting to support hyper-converged
- TODO: crush location for example, data-center=red,rack=17,server=blue23
- TODO: choices for selecting the kind of hardware? NVMe etc.? or can we autodetect?
Running from systemd
TODO:
Running from docker
TODO: privileged container with /dev mapped?
Running from rkt
TODO: rkt fly
Running on CoreOS
TODO: show how castle can be configured from cloud-init and started
Running from Ubuntu
Running from Centos
At this point the storage cluster is up and running.
3) Using castlectl
Now that the cluster is up and running, you can communicate with it using castletctl. First you need export an environment variable for the cluster url:
export CASTLE_DISCOVERY_URL=https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3
or if you're using DNS:
export CASTLE_DISCOVERY_DNS=mycluster.acme.com
Let's list the nodes that are part of the cluster:
castlectl node ls
the output shows the nodes that are part of the cluster
ADDRESS STATE CLUSTER SIZE LOCATION UPDATED
10.0.10.1:70000 OK mycluster.acme.com 30 TiB dc=A,rack=17,server=a 1 sec ago
10.0.10.2:70000 OK mycluster.acme.com 40 TiB dc=A,rack=18,server=b 1 sec ago
10.0.10.3:70000 OK mycluster.acme.com 50 TiB dc=A,rack=19,server=c 1 sec ago
4) Creating a volume
To create a volume run the following:
castlectl volume create myvolume 100GiB
This creates a volume that can be used as a block device from client nodes.
5) Mount the volume on a client node
To mount the volume run the following on the client node:
export CASTLE_DISCOVERY_DNS=mycluster.acme.com
sudo castleblk rbd myvolume
You can mount the volume through NBD or RBD.