API Cluster
The api-cluster kit defines the following services:
uiapi1api2apilbmongodbelasticsearch
This kit differs from the quickstart in how it handles API requests. Requests are sent to the apilb container which runs a load balancer, distributing work between api1 and api2.
It is worth reviewing the cluster settings for both of your api servers in order for them to correctly communicate.
Running
Use the following commands:
docker-compose build --force-rm
docker-compose up
And then open a browser to:
http://localhost
To access the load balancer:
https://localhost:8080
To acess either api server directly:
https://localhost:6301
https://localhost:6302
docker-compose.yml
version: "2"
services:
ui:
build: ./ui
networks:
- cloudcms
depends_on:
- apilb
env_file:
- ./ui/ui.env
ports:
- "80:80"
apilb:
build: ./apilb
networks:
- cloudcms
depends_on:
- api1
- api2
ports:
- "8080:8080"
- "8085:8085"
expose:
- "8080"
api1:
build: ./api1
networks:
- cloudcms
depends_on:
- mongodb
- elasticsearch
env_file:
- ./api1/api1.env
ports:
- "8091:8080"
expose:
- "8080"
- "6301"
api2:
build: ./api2
networks:
- cloudcms
depends_on:
- mongodb
- elasticsearch
env_file:
- ./api2/api2.env
ports:
- "8092:8080"
expose:
- "8080"
- "6302"
mongodb:
build: ./mongodb
networks:
- cloudcms
ports:
- "27017:27017"
expose:
- "27017"
command: mongod --config /etc/mongod.conf
elasticsearch:
build: ./elasticsearch
networks:
- cloudcms
env_file:
- ./elasticsearch/elasticsearch.env
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9300:9300"
- "9200:9200"
networks:
cloudcms:
driver: bridge