forked from rook/rook
initial attempt at a spec for using castle
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# Starting your first castle cluster
|
||||
|
||||
### 1) Create a new cluster
|
||||
|
||||
To create a new cluster you must generate a new cluster token. This can easily be done using
|
||||
the publicly hosted castle discovery service:
|
||||
|
||||
```
|
||||
curl -w "\n" 'https://discovery.castle.io/new?min-size=3'
|
||||
https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3078895c5ec737174db2419bb2f3
|
||||
```
|
||||
|
||||
The minimum size parameter can be used to prevent the cluster from starting up until
|
||||
the specified number of nodes join.
|
||||
|
||||
### 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=https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3078895c5ec737174db2419bb2f3 \
|
||||
--address 10.0.10.1:70000 \
|
||||
--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.
|
||||
|
||||
```
|
||||
export CASTLE_DISCOVERY=https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3078895c5ec737174db2419bb2f3
|
||||
|
||||
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 6a28e078895c5e 30 TiB dc=A,rack=17,server=a 1 sec ago
|
||||
10.0.10.2:70000 OK 6a28e078895c5e 40 TiB dc=A,rack=18,server=b 1 sec ago
|
||||
10.0.10.3:70000 OK 6a28e078895c5e 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=https://discovery.castle.io/6a28e078895c5ec737174db2419bb2f3078895c5ec737174db2419bb2f3
|
||||
sudo castleblk rbd myvolume
|
||||
```
|
||||
|
||||
You can mount the volume through NBD or RBD.
|
||||
Reference in New Issue
Block a user