../../_images/docker.png

Docker Swarm

Prerequisites

To install L7|ESP onto a Docker Swarm cluster, you must have:

  • At least 3 VMs with Docker Engine installed.

Note

As Docker Swarm is a distributed system, you must maintain a quorum of at least 3 nodes if you wish to be able to tolerate the failure of one of these nodes.

See Add manager nodes for fault tolerance in the official documentation for more information.

Creating the cluster

On the first node, run the following command to create the cluster:

$ docker swarm init

On the other nodes, run the following command to join the cluster:

$ docker swarm join-token manager

Note

It is recommended that the first two nodes are added as managers, per the fault tolerance recommendations above. Additional nodes can be added as workers also.

Compose file

Docker Swarm will take a Compose file as configuration so you should use the docker-compose.prod.yml file in root of your project, which will look something like this:

version: "3.2"
services:
  server:
    image: project_name/l7esp:3.0.0-sdk.1
    environment:
      L7ESP_PASSWORD: admin
    ports:
      - published: 8002
        target: 8002
        protocol: tcp
        mode: host
    volumes:
      - type: volume
        source: data
        target: /opt/l7esp/data
volumes:
  data: {}

Deploy Compose stack

From the project folder, run the following command to deploy the stack.

$ docker stack deploy --compose-file=./docker-compose.prod.yml l7esp-example

Validate Resource Creation

From a Swarm manager node, run the following command. Remember that the password is ‘vagrant’.

$ ssh manager.swarm.example.com
manager.swarm.example.com:~$ docker node ls
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
ri27kwen3bu9s8384cl45rq2w *   docker-manager   Ready     Active         Leader           20.10.16
i87w5vzik6qag5ia3e79d46c9     docker-worker1   Ready     Active                          20.10.16

Validate L7|ESP Service

From a Swarm manager node, run the following command to validate that the L7|ESP container is running in the Swarm cluster:

$ ssh manager.swarm.example.com
manager.swarm.example.com:~$ docker node ps $(docker node ls -q)

   ID             NAME               IMAGE                             NODE             DESIRED STATE   CURRENT STATE             ERROR                              PORTS
   e2fgtesxlrv9   esp_server.1       l7esp/server:3.0.0-sdk.2          docker-worker1   Running         Running 1 minute ago