Tools for deploy a cheap Docker Swarm cluster in https://vultr.com servers over CoreOS With a loadbalancer
[sudo] pip install git+https://github.com/vicobits/suarm.git
- Install build essential tools with
sudo apt install build-essential
- Prepare environment with
make env
- Configure
swarm.json
file. - Edit files
- Add
api-key
toswarm.json
from value generated in API Section in your Vultr account. - Generate a ssh-key for your project with the command
suarm keys --create
. - Register your generated ssh-key into
swarm.json
file with selecting between your registered keys withsuarm keys
- Create a cluster with
suarm cluster --create
orsuarm -f <config_file> cluster --create
- Destroy cluster with
suarm cluster --delete
orsuarm -f <config_file> cluster --delete
By defaul suarm
catch swarm.json
file as configuration file in the current location
this file, contains the next values:
{
"api-key": "<MY_VULTR_API_KEY>",
"ssh-key": "<MY_VULTR_GENERATED_SSHKEYID>",
"label": "<NAME_FOR_SWARM>",
"path": "<PATH_FOR_DEPLOYMENTS>",
"domain": "<DOMAIN_FOR_SWARM_MASTER>",
"email": "<YOUR_EMAIL>",
"manager": {
"replicas": 1,
"zone": "NEW_JERSEY",
"plan": 201,
"os": "COREOS",
"nodes": []
},
"worker": {
"replicas": 2,
"zone": "NEW_JERSEY",
"plan": 201,
"os": "COREOS",
"nodes": []
}
}
Where
- api-key is obtained from the api
- ssh-key is a SSHKEYID of some your registered ssh keys in the server this is obtained from
- ssh-key is path string for apps deployed with docker compose.
- manager is config for manager nodes
- worker is config for worker nodes
- label Is a name for cluster e.g. swarm > swarm-manager, swarm-worker00, swarm-worker01, ...
- replicas is the quantity of nodes
- zone is a availability zone obtained from the api supported zones are:
NEW_JERSEY CHICAGO DALLAS SILICON_VALLEY
SEATTLE LOS_ANGELES ATLANTA SYDNEY
AMSTERDAM LONDON FRANKFURT SINGAPORE
PARIS TOKYO MIAMI
- plan representa resources for server (Mem/CPU/Price), obtained from the api List for common plans are:
PLAN MEMORY RAM STORAGE BANDWIDTH CPU PRICE
-------------------------------------------------------------------------------
201 1024 MB RAM 25 GB SSD 1.00 TB BW 1CPU 5 USD
202 2048 MB RAM 40 GB SSD 2.00 TB BW 1CPU 10 USD
203 4096 MB RAM 60 GB SSD 3.00 TB BW 2CPUs 20 USD
204 8192 MB RAM 100 GB SSD 4.00 TB BW 4CPUs 40 USD
205 16384 MB RAM 200 GB SSD 5.00 TB BW 6CPUs 80 USD
206 32768 MB RAM 300 GB SSD 6.00 TB BW 8CPUs 160 USD
207 65536 MB RAM 400 GB SSD 10.00 TB BW 16CPUs 320 USD
208 98304 MB RAM 800 GB SSD 15.00 TB BW 24 CPUs 640 USD
- os is OS id in Vultr obtained from the API List for supported OS are:
CENTOS_6 DEBIAN_7 UBUNTU_14_04 COREOS DEBIAN_8,
UBUNTU_16_04 FEDORA_25 UBUNTU_17_04 DEBIAN_9 FEDORA_26
Use the command suarm cluster --setup
to configure manager and worker nodes.
Use the command suarm cluster --setup-dashboard
to install portainer and vizualizer.
Use the command suarm cluster --setup-proxy
to install proxy flow base on DockerFlow.
For setup cluster manually check Manually docs
##Execute commands in production
docker exec -ti [container] python manage.py createsuperuser
To improve performance between nodes in the cluster there should be in the same private network. You can configure a private network.
- First enable the private network feature in all nodes
- Create a file
/etc/systemd/network/static.network
with the next configuration:
[Match]
Name=eth1
[Link]
MTUBytes=1450
[Network]
Address=10.99.0.10
Netmask=255.255.0.0
- Restart networking config
sudo systemctl restart systemd-networkd
- manage domains add domain to the cluster and manage app domains with Cloudflare
- deploy app app deployment with docker-compose
For proxy config options check dockerflow-proxy For letsencrypt config options check dockerflow-le
This code is licensed under the MIT License
_.
.. _MIT License
: https://github.com/vicobits/suarm/blob/master/LICENSE