From e676d47d6ce2c203b72dbb4e9b86f011362decba Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Tue, 22 Jun 2021 17:28:03 +0000 Subject: [PATCH] Use an additional MTU=9000 network to receive UDP through, because our data packets are >1500. The new network needs a name alphabetically before NETWORK_MODE to force Docker to use that to expose our ports on. --- docker-compose/Makefile | 4 +++- docker-compose/archiver.yml | 12 ++++++++---- docker-compose/astor.yml | 6 ++++-- docker-compose/device-pcc.yml | 3 ++- docker-compose/device-sdp.yml | 3 ++- docker-compose/device-statistics.yml | 4 +++- docker-compose/elk.yml | 6 ++++-- docker-compose/hdbpp_viewer.yml | 3 ++- docker-compose/itango.yml | 3 ++- docker-compose/jupyter.yml | 3 ++- docker-compose/lofar-device-base.yml | 3 ++- docker-compose/logviewer.yml | 3 ++- docker-compose/networks.yml | 24 ++++++++++++++++++++++++ docker-compose/pogo.yml | 3 ++- docker-compose/pypcc-sim.yml | 3 ++- docker-compose/rest.yml | 3 ++- docker-compose/sdptr-sim.yml | 3 ++- docker-compose/tango.yml | 6 ++++-- docker-compose/tangotest.yml | 3 ++- 19 files changed, 74 insertions(+), 24 deletions(-) create mode 100644 docker-compose/networks.yml diff --git a/docker-compose/Makefile b/docker-compose/Makefile index 87101b3e3..e63814ef5 100644 --- a/docker-compose/Makefile +++ b/docker-compose/Makefile @@ -124,13 +124,15 @@ down: ## stop all services and tear down the system $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) down ifneq ($(NETWORK_MODE),host) docker network inspect $(NETWORK_MODE) &> /dev/null && ([ $$? -eq 0 ] && docker network rm $(NETWORK_MODE)) || true + docker network inspect 9000-$(NETWORK_MODE) &> /dev/null && ([ $$? -eq 0 ] && docker network rm 9000-$(NETWORK_MODE)) || true endif minimal: ## start the base TANGO system ifneq ($(NETWORK_MODE),host) docker network inspect $(NETWORK_MODE) &> /dev/null || ([ $$? -ne 0 ] && docker network create $(NETWORK_MODE)) + docker network inspect 9000-$(NETWORK_MODE) &> /dev/null || ([ $$? -ne 0 ] && docker network create 9000-$(NETWORK_MODE) -o com.docker.network.driver.mtu=9000) endif - $(DOCKER_COMPOSE_ARGS) docker-compose -f tango.yml up -d + $(DOCKER_COMPOSE_ARGS) docker-compose -f tango.yml -f networks.yml up -d start: up ## start a service (usage: make start <servicename>) if [ $(UNAME_S) = Linux ]; then chmod a+r ~/.Xauthority; fi diff --git a/docker-compose/archiver.yml b/docker-compose/archiver.yml index 7aa1c1336..08d90a113 100644 --- a/docker-compose/archiver.yml +++ b/docker-compose/archiver.yml @@ -4,7 +4,8 @@ services: archiver-maria-db: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/mariadb_hdbpp:2021-05-28 container_name: archiver-maria-db - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds environment: @@ -18,7 +19,8 @@ services: hdbpp-es: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-archiver:2021-05-28 - network_mode: ${NETWORK_MODE} + networks: + - control container_name: hdbpp-es depends_on: - databaseds @@ -35,7 +37,8 @@ services: hdbpp-cm: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-archiver:2021-05-28 - network_mode: ${NETWORK_MODE} + networks: + - control container_name: hdbpp-cm depends_on: - databaseds @@ -53,7 +56,8 @@ services: dsconfig: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-dsconfig:1.5.0.6 container_name: dsconfig - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds environment: diff --git a/docker-compose/astor.yml b/docker-compose/astor.yml index 747a39c5f..1d86575d4 100644 --- a/docker-compose/astor.yml +++ b/docker-compose/astor.yml @@ -15,7 +15,8 @@ services: astor: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}astor - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${XAUTHORITY_MOUNT} environment: @@ -33,7 +34,8 @@ services: starter-example: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-starter:2021-05-28 container_name: ${CONTAINER_NAME_PREFIX}starter-example - network_mode: ${NETWORK_MODE} + networks: + - control # set the hostname, otherwise duplicate device registrations result every # time the hostname changes as the container is restarted. hostname: starter-example diff --git a/docker-compose/device-pcc.yml b/docker-compose/device-pcc.yml index 47f2c9b22..5439161cd 100644 --- a/docker-compose/device-pcc.yml +++ b/docker-compose/device-pcc.yml @@ -22,7 +22,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-pcc - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/device-sdp.yml b/docker-compose/device-sdp.yml index 132886304..5a83a701f 100644 --- a/docker-compose/device-sdp.yml +++ b/docker-compose/device-sdp.yml @@ -22,7 +22,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-sdp - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/device-statistics.yml b/docker-compose/device-statistics.yml index c2d450dbd..c3b9d9ff4 100644 --- a/docker-compose/device-statistics.yml +++ b/docker-compose/device-statistics.yml @@ -22,7 +22,9 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-statistics - network_mode: ${NETWORK_MODE} + networks: + - control + - data volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/elk.yml b/docker-compose/elk.yml index 50060566f..cce66839b 100644 --- a/docker-compose/elk.yml +++ b/docker-compose/elk.yml @@ -17,7 +17,8 @@ services: build: context: elk-configure-host container_name: ${CONTAINER_NAME_PREFIX}elk-configure-host - network_mode: ${NETWORK_MODE} + networks: + - control privileged: true elk: @@ -25,7 +26,8 @@ services: build: context: elk container_name: ${CONTAINER_NAME_PREFIX}elk - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - elk-data:/var/lib/elasticsearch ports: diff --git a/docker-compose/hdbpp_viewer.yml b/docker-compose/hdbpp_viewer.yml index c3d10c3ff..c7a54f7e6 100644 --- a/docker-compose/hdbpp_viewer.yml +++ b/docker-compose/hdbpp_viewer.yml @@ -12,7 +12,8 @@ services: hdbpp-viewer: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/hdbpp_viewer:2021-05-28 container_name: ${CONTAINER_NAME_PREFIX}hdbpp-viewer - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds - dsconfig diff --git a/docker-compose/itango.yml b/docker-compose/itango.yml index 4af318480..cd5283f23 100644 --- a/docker-compose/itango.yml +++ b/docker-compose/itango.yml @@ -19,7 +19,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}itango - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} - ${HOME}:/hosthome diff --git a/docker-compose/jupyter.yml b/docker-compose/jupyter.yml index 9c4c8053c..cbd2ab9ce 100644 --- a/docker-compose/jupyter.yml +++ b/docker-compose/jupyter.yml @@ -17,7 +17,8 @@ services: CONTAINER_EXECUTION_UID: ${CONTAINER_EXECUTION_UID} SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}jupyter - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} - ${TANGO_LOFAR_LOCAL_DIR}/jupyter-notebooks:/jupyter-notebooks:rw diff --git a/docker-compose/lofar-device-base.yml b/docker-compose/lofar-device-base.yml index 18c8ef36b..2a2cdc4dd 100644 --- a/docker-compose/lofar-device-base.yml +++ b/docker-compose/lofar-device-base.yml @@ -20,4 +20,5 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}lofar-device-base - network_mode: ${NETWORK_MODE} + networks: + - control diff --git a/docker-compose/logviewer.yml b/docker-compose/logviewer.yml index 0959d8b94..cea364027 100644 --- a/docker-compose/logviewer.yml +++ b/docker-compose/logviewer.yml @@ -14,7 +14,8 @@ services: logviewer: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}logviewer - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${XAUTHORITY_MOUNT} environment: diff --git a/docker-compose/networks.yml b/docker-compose/networks.yml new file mode 100644 index 000000000..bdacc3005 --- /dev/null +++ b/docker-compose/networks.yml @@ -0,0 +1,24 @@ +# +# Docker compose file that describes our docker networks. +# +version: '3.5' + +networks: + + # Control network, with MTU=1500. Our default network. + control: + name: ${NETWORK_MODE} + # The networks are created and destroyed in the Makefile. + external: true + + # Data network, with MTU=9000, to receive the Jumbo frames from SDP + data: + # This name needs to be alphabetically before the control network. + # + # As we add the data-receiving devices to both control and data + # network, we need to make sure the UDP data are forwarded to + # the data network, not the control network. The way Docker decides + # which network to actually expose ports on is by chosing the + # first one in alphabetical order. + name: 9000-${NETWORK_MODE} + external: true diff --git a/docker-compose/pogo.yml b/docker-compose/pogo.yml index 85bf0ef3d..6f87f640a 100644 --- a/docker-compose/pogo.yml +++ b/docker-compose/pogo.yml @@ -22,7 +22,8 @@ services: pogo: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-pogo:9.6.31.2 container_name: ${CONTAINER_NAME_PREFIX}pogo - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - pogo:/home/tango - ${XAUTHORITY_MOUNT} diff --git a/docker-compose/pypcc-sim.yml b/docker-compose/pypcc-sim.yml index d1c47c046..15739d3f4 100644 --- a/docker-compose/pypcc-sim.yml +++ b/docker-compose/pypcc-sim.yml @@ -11,7 +11,8 @@ services: build: context: pypcc-sim container_name: ${CONTAINER_NAME_PREFIX}pypcc-sim - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${HOME}:/hosthome ports: diff --git a/docker-compose/rest.yml b/docker-compose/rest.yml index 4019b9fdd..f5bfbd329 100644 --- a/docker-compose/rest.yml +++ b/docker-compose/rest.yml @@ -15,7 +15,8 @@ services: rest: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-rest:1.14.1.2 container_name: ${CONTAINER_NAME_PREFIX}tango-rest - network_mode: ${NETWORK_MODE} + networks: + - control # set the hostname, otherwise duplicate device registrations result every # time the hostname changes as the container is restarted. hostname: tango-rest diff --git a/docker-compose/sdptr-sim.yml b/docker-compose/sdptr-sim.yml index 677433019..70c1edf63 100644 --- a/docker-compose/sdptr-sim.yml +++ b/docker-compose/sdptr-sim.yml @@ -11,7 +11,8 @@ services: build: context: sdptr-sim container_name: ${CONTAINER_NAME_PREFIX}sdptr-sim - network_mode: ${NETWORK_MODE} + networks: + - control ports: - "4840:4840" restart: on-failure diff --git a/docker-compose/tango.yml b/docker-compose/tango.yml index 2e2494ff9..0cde93b0c 100644 --- a/docker-compose/tango.yml +++ b/docker-compose/tango.yml @@ -17,7 +17,8 @@ services: tangodb: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-db:10.4.10 container_name: ${CONTAINER_NAME_PREFIX}tangodb - network_mode: ${NETWORK_MODE} + networks: + - control environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=tango @@ -32,7 +33,8 @@ services: databaseds: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-cpp:9.3.4.2 container_name: ${CONTAINER_NAME_PREFIX}databaseds - network_mode: ${NETWORK_MODE} + networks: + - control ports: - "10000:10000" depends_on: diff --git a/docker-compose/tangotest.yml b/docker-compose/tangotest.yml index 707b1cb7c..30e057502 100644 --- a/docker-compose/tangotest.yml +++ b/docker-compose/tangotest.yml @@ -13,7 +13,8 @@ services: tangotest: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}tangotest - network_mode: ${NETWORK_MODE} + networks: + - control environment: - TANGO_HOST=${TANGO_HOST} entrypoint: -- GitLab