1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 <2023> 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 <2023> 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: When I use an IOC in a container, streamDevice occasionally reports that protocol has been aborted, which causes the records in the IOC to become inaccessible from the host computer. |
From: | "Knap, Giles \(DLSLtd,RAL,LSCI\) via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Florian Feldbauer <florian at ep1.ruhr-uni-bochum.de> |
Date: | Thu, 18 May 2023 12:30:41 +0000 |
Hi Florian,
FYI. I find that it is perfectly OK to run multiple separate containers with one IOC each on the same machine (multiple IOCs in each container would also work).
This is as long as you are using network=host. Because they are all listening on the same port on the same address the CA search UDP broadcasts reach them all.
They can even start the caRepeater for you and the second attempt to start caRepeater will exit immediately as the CA_REPEATER_PORT is in use. (BUT - this relies on the first IOC container continuing to run, if it exits then it will take down caRepeater until
the next IOC is started. Hence, I recommend you start caRepeater in a dedicated container).
We are running in Kubernetes and using its container runtime. But the Docker (or Podman) runtime would exhibit the same behaviour as long as you also use network=host.
TLDR:
running multiple IOCs in containers with network=host is really similar to running them natively on the same host and should just work.
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Florian Feldbauer via Tech-talk <tech-talk at aps.anl.gov>
Sent: 15 May 2023 08:49 To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: When I use an IOC in a container, streamDevice occasionally reports that protocol has been aborted, which causes the records in the IOC to become inaccessible from the host computer. Hey all,
we are also working with IOCs running inside Docker Containers, using Modbus, StreamDevice (via serial and TCP ports), and a lot more. We have not seen any issues so far. All our IOCs are running stable.
Regarding our experience with network: If not using `net = host` for the container, the UDP broadcast does not seem to be forwarded, and thus IOCs on different Hosts (or in separated Docker networks) are not seen by CA/PVacces. But usually we only have a single IOC per host, so we simply use `net = host` for our containers.
Another possibility we tested is to have multiple IOC in individual containers using a dedicated docker network and run a Gateway + reverse gateway (either directly on the host or inside a container with `net = host`) to establish CA communication of our
IOCs on one host to other hosts.
Cheers,
On 5/15/23 09:38, Knap, Giles (DLSLtd,RAL,LSCI) via Tech-talk wrote:
-- Ruhr-Universität Bochum AG der Experimentalphysik I Dr. Florian Feldbauer NB 2/131 / Fach 125 Universitätsstr. 150 D-44801 Bochum Office: NB 2/134 Phone: (+49)234 / 32-23563 Fax: (+49)234 / 32-14170 https://paluma.ruhr-uni-bochum.de
-- This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail. |