Commit 3c6dc23e authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Unifica servicios master y añade restricciones

Corrige criterio de replicación por defecto, para replicar 2 veces en
diferente rack (en lugar de otros volúmenes fuera de un rack, que no
hay).

Elimina redirección de Traefik para volume, no necesaria porque master
enlaza a la ruta correcta.

Retoca variables relacionadas con replicación de servicio master.

Renombra volúmenes de master para ser acordes al nuevo servicio
replicado.

Aumenta reserva de CPU para volume y filer.
parent 7131a011
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
IMAGE_NAME=chrislusf/seaweedfs
IMAGE_TAG=latest

MASTER_HOST=swfs-master
MASTER_PORT=9333
DEFAULT_REPLICATION=002
MASTER_IP=swfs-master-{{.Task.Slot}}
DEFAULT_REPLICATION=020

VOLUME_PORT=8080
VOLUME_IP=swfs-volume-{{.Node.ID}}

FILER_PORT=8888
FILER_IP=swfs-filer-{{.Node.ID}}
FILER_GROUP=filergroup

MASTER_HOST=swfs-master
DATA_PATH=/data
DATACENTER=datacenter
RACK=r-{{.Node.ID}}
VOLUME_IP=swfs-volume-{{.Node.ID}}
FILER_IP=swfs-filer-{{.Node.ID}}

TRAEFIK_ENTRYPOINT=http
PUBLIC_HOSTNAME=change.me

MASTER_TRAEFIK_SUBDOMAIN=swfs-master
VOLUME_TRAEFIK_SUBDOMAIN=swfs-volume
FILER_TRAEFIK_SUBDOMAIN=swfs-filer

MASTER_TRAEFIK_AUTH=user:$apr1$md5password
VOLUME_TRAEFIK_AUTH=user:$apr1$md5password
FILER_TRAEFIK_AUTH=user:$apr1$md5password

MASTER_VOL_NAME=seaweedfs-master-{{.Task.Slot}}-vol
VOLUME_VOL_NAME=seaweedfs-volume-{{.Node.ID}}-vol
FILER_VOL_NAME=seaweedfs-filer-{{.Node.ID}}-vol
+60 −83
Original line number Diff line number Diff line
version: '3.9'

x-swfs-master:
  &swfs-master-common
services:
  swfs-master:
    image: ${IMAGE_NAME}:${IMAGE_TAG}
    entrypoint: /bin/sh
    command:
@@ -18,16 +18,25 @@ x-swfs-master:
            -port=${MASTER_PORT}
            -peers=${MASTER_HOST}-1:${MASTER_PORT},${MASTER_HOST}-2:${MASTER_PORT},${MASTER_HOST}-3:${MASTER_PORT}
        ")
    hostname: ${MASTER_IP}
    environment:
      MASTER_IP:
    networks:
      seaweedfs-net:
      traefik-net:
    volumes:
      - master-vol:${DATA_PATH}
    deploy:
      mode: replicated
    replicas: 1
      replicas: ${MASTER_REPLICAS:-3}
      restart_policy:
        delay: ${MASTER_RESTART_DELAY:-1s}
      update_config:
        delay: ${MASTER_UPDATE_DELAY:-1m}
      placement:
        constraints:
          - "node.labels.${MASTER_NODE_LABEL_NAME:-swfs-master}==${MASTER_NODE_LABEL_VALUE:-1}"
        max_replicas_per_node: 1
      resources:
        limits:
          cpus: '${MASTER_RESOURCES_LIMITS_CPUS:-0.1}'
@@ -44,31 +53,6 @@ x-swfs-master:
        traefik.http.services.swfs-master.loadbalancer.server.port: ${MASTER_PORT}
        traefik.http.services.swfs-master.loadbalancer.sticky.cookie: 'true'

services:
  swfs-master-1:
    << : *swfs-master-common
    hostname: ${MASTER_HOST}-1
    environment:
      MASTER_IP: ${MASTER_HOST}-1
    volumes:
      - master-1-vol:${DATA_PATH}

  swfs-master-2:
    << : *swfs-master-common
    hostname: ${MASTER_HOST}-2
    environment:
      MASTER_IP: ${MASTER_HOST}-2
    volumes:
      - master-2-vol:${DATA_PATH}

  swfs-master-3:
    << : *swfs-master-common
    hostname: ${MASTER_HOST}-3
    environment:
      MASTER_IP: ${MASTER_HOST}-3
    volumes:
      - master-3-vol:${DATA_PATH}

  swfs-volume:
    image: ${IMAGE_NAME}:${IMAGE_TAG}
    entrypoint: /bin/sh
@@ -105,21 +89,22 @@ services:
      update_config:
        delay: ${VOLUME_UPDATE_DELAY:-5m}
      placement:
        constraints:
          - "node.labels.${VOLUME_NODE_LABEL_NAME:-swfs-volume}==${VOLUME_NODE_LABEL_VALUE:-1}"
        max_replicas_per_node: 1
      resources:
        limits:
          cpus: '${VOLUME_RESOURCES_LIMITS_CPUS:-1}'
          memory: ${VOLUME_RESOURCES_LIMITS_MEMORY:-64M}
        reservations:
          cpus: '${VOLUME_RESOURCES_RESERVATIONS_CPUS:-0.001}'
          cpus: '${VOLUME_RESOURCES_RESERVATIONS_CPUS:-0.1}'
          memory: ${VOLUME_RESOURCES_RESERVATIONS_MEMORY:-32M}
      labels:
        traefik.enable: 'true'
        traefik.http.routers.swfs-volume.entrypoints: ${TRAEFIK_ENTRYPOINT}
        traefik.http.routers.swfs-volume.rule: Host(`${VOLUME_TRAEFIK_SUBDOMAIN}.${PUBLIC_HOSTNAME}`)
        traefik.http.middlewares.swfs-volume-addprefix.addprefix.prefix: /ui/index.html
        traefik.http.middlewares.swfs-volume-auth.basicauth.users: ${VOLUME_TRAEFIK_AUTH}
        traefik.http.routers.swfs-volume.middlewares: swfs-volume-addprefix, swfs-volume-auth
        traefik.http.routers.swfs-volume.middlewares: swfs-volume-auth
        traefik.http.services.swfs-volume.loadbalancer.server.port: ${VOLUME_PORT}
        traefik.http.services.swfs-volume.loadbalancer.sticky.cookie: 'true'

@@ -152,15 +137,15 @@ services:
    deploy:
      mode: global
      restart_policy:
        delay: ${FILER_RESTART_DELAY:-5s}
        delay: ${FILER_RESTART_DELAY:-1s}
      update_config:
        delay: ${FILER_UPDATE_DELAY:-1m}
        delay: ${FILER_UPDATE_DELAY:-15s}
      resources:
        limits:
          cpus: '${FILER_RESOURCES_LIMITS_CPUS:-1}'
          memory: ${FILER_RESOURCES_LIMITS_MEMORY:-128M}
        reservations:
          cpus: '${FILER_RESOURCES_RESERVATIONS_CPUS:-0.001}'
          cpus: '${FILER_RESOURCES_RESERVATIONS_CPUS:-0.1}'
          memory: ${FILER_RESOURCES_RESERVATIONS_MEMORY:-64M}
      labels:
        traefik.enable: 'true'
@@ -183,22 +168,14 @@ networks:
    external: true

volumes:
  master-1-vol:
    name: ${MASTER_1_VOL_NAME:-seaweedfs-master-vol-1}
    driver: local

  master-2-vol:
    name: ${MASTER_2_VOL_NAME:-seaweedfs-master-vol-2}
    driver: local

  master-3-vol:
    name: ${MASTER_3_VOL_NAME:-seaweedfs-master-vol-3}
  master-vol:
    name: ${MASTER_VOL_NAME}
    driver: local

  volume-vol:
    name: ${VOLUME_VOL_NAME_PREFIX:-seaweedfs-volume-vol}-{{.Node.ID}}
    name: ${VOLUME_VOL_NAME}
    driver: local

  filer-vol:
    name: ${FILER_VOL_NAME_PREFIX:-seaweedfs-filer-vol}-{{.Node.ID}}
    name: ${FILER_VOL_NAME}
    driver: local