Google Deployment Manager scripts and templates for deploying Aerospike CE on Google Compute Engine (GCE)
Download a copy of this repo using either the Download link or use git clone
.
Create a project in Google Compute Engine
Enable Deployment Manager API for your project: https://console.cloud.google.com/flows/enableapi?apiid=deploymentmanager
or from API Manager and enable Google Cloud Deployment Manager API
and Google Cloud Deployment Manager V2 API
Download and install gcloud
from https://cloud.google.com/sdk/
Configure gcloud
for your GCE project
ie: gcloud init
You may need to update the gcloud sdk:
gcloud components update core
See the next section on how to configure your cluster.
Run deploy.sh
and pass in a name for your deployment. This will deploy your cluster in GCE.
eg: deploy.sh my-aerospike-deployment
Edit config.yaml with parameters to your liking
- numReplicas: The number of systems/size of your cluster.
- namePrefix: The naming schema of your systems. This is the displayed name on the GCE GUI.
- zone: zone in GCE to deploy into
- machineType: The GCE machine type to use
- network: The GCE Network to deploy into
- bootDiskType: The type of storage the boot disk uses
- numLocalSSDs: The number of local NVME SSDs to attach. Limit of up to 8
- Limit of 4 in us-cental1-a and europse-west1-b. See this page for more details
- Shared core (f1 and g1) are not permitted local SSDs
- useShadowDevice: Whether to also provision network SSD disks to use as Shadow Devices. Shadow Disks are the same size and count as local SSDs.
- diskSize: A list of persistent SSD disks to deploy. This option is mutually exclusive with
useShadowDevice
.useShadowDevice
takes precendence if both are defined. - namespace: A text block containting your namespace config stanza
Google deployment manager as its core takes yaml files as its configuration. This is achieved through either direct yaml definition, Jinja templates, and/or python scripts. Templates can reference other templates.
These files are provided to ease deployment. Do not change these unless you really know what you're doing.
- The
common
directory contains templates provided by Google. - aerospike.jinja is the main config for aerospike instances.
- aerospike.jinja.schema is a validation template. Parameters are checked against this template for validation
These files are user-configurable templates. Please change these to your requirements.
- config.yaml - This is your cluster's configuration in GCE. Change the parameters to match the requirements for your cluster.
We recommend using local NVME SSDs whereever high IOPS are needed. SSD persistent disks reach maximum performance at 500GB, with 15k IOPS and 240MB/s throughput. This is with systems with at least 4 cores. Systems with 1 or 2 cores have lower limits. See this page.
There appears to be a ~400MB/s throughput limit. That means with 4k blocks, it's 100k IOPS.
After the device is filled (Garbage collecting), IOPS drops to around 40k (~160MB/s with 4k blocks).
Command used:
fio --filename=/dev/nvme0n1 --direct=1 --rw=randrw --refill_buffers --norandommap
--randrepeat=0 --ioengine=libaio --bs=4k --rwmixwrite=100 --iodepth=256 --numjobs=1 --runtime=3900 --time_based
--group_reporting --name=4ktest