The cockroach demo
command is my current favourite dev tool. It's instant access to an N-node CockroachDB cluster, allowing you to get up and running with an enterprise cluster straight from your dev environment, reducing feedback loops massively by giving you all the features you need to create with confidence.
If you start a cluster with cockroach demo
, and don't provide any arguments for --demo-locality
, you'll get the default values that are provided by the demo code.
--nodes | Regions |
---|---|
1 | us-east1 x1 |
2 | us-east1 x2 |
3 | us-east1 x3 |
4 | us-east1 x3 + us-west1 x1 |
5 | us-east1 x3 + us-west1 x2 |
6 | us-east1 x3 + us-west1 x3 |
7 | us-east1 x3 + us-west1 x3 + europe-west1 x1 |
8 | us-east1 x3 + us-west1 x3 + europe-west1 x2 |
9 | us-east1 x3 + us-west1 x3 + europe-west1 x3 |
The increase is cyclical, with every additional node for the first 3 additional nodes, adding to the us-east1 region and so on.
Currently, only the us-east1, us-west1, and europe-west1 regions have locations configured, so if you'd like spin up nodes in other regions and have them represented in the cluster map, it's a very simple two-step process:
Step 1 - create your cluster with custom regions
The following spins up a 10-node cluster across 3 regions; us-central1 (4 AZs), asia-northeast1 (3 AZs), and europe-west1 (3 AZs):
cockroach demo \
--empty \
--nodes 10 \
--demo-locality=region=us-central1,az=a:region=us-central1,az=b:region=us-central1,az=c:region=us-central1,az=f:region=asia-northeast1,az=a:region=asia-northeast1,az=b:region=asia-northeast1,az=c:region=europe-west1,az=a:region=europe-west1,az=b:region=europe-west1,az=c
If you open the cluster map in the web UI now, you'll see a message that explains that not all of your regions have been assigned locations. In the knowledge that only a handful of regions come pre-loaded with location information, we can infer that the asia-northeast1 region needs to be given a location.
This can be confirmed by running the following SQL in your console session:
select * from system.locations;
localityKey | localityValue | latitude | longitude |
---|---|---|---|
region | europe-west1 | 50.448160000000000 | 3.818860000000000 |
region | us-central1 | 42.032974000000000 | -93.581543000000000 |
region | us-east1 | 33.836082000000000 | -81.163727000000000 |
region | us-east4 | 37.478397000000000 | -76.453077000000000 |
region | us-west1 | 43.804133000000000 | -120.554201000000000 |
Helpfully, the cluster map provides a link to docs that will help you assign locations to your regions. You can follow the docs, or continue to read to find out how this can be done.
Step 2 - assign localities to custom regions
Insert location information for the asia-northeast1 region by running the following SQL in your console session:
INSERT into system.locations VALUES ('region', 'asia-northeast1', 35.689487, 139.691706);
If you refresh your node map now, you'll see a 9-node cluster, with 3 regions configured in the locations you've configured.
Top comments (0)