Page 45 - Kaleidoscope Academic Conference Proceedings 2021
P. 45

Qinling              Qinling
                                command              database        Zun     Zun
                                line client                         scheduler  database
                                                                                 Zun
                                                                                AMQP
                                                     Qinling                    queues  Zun API server
                                                     engine
                                                   Qinling
                                              Qinling API server
                                                   AMQP
                                                   queues            Zun
                                                              Qinling   networking  Zun WS
                                                             orchestrator     proxy
                                                                     driver
                                                       IoTronic
                                Horizon                 AMQP   IoTronic        IoTronic
                                dashboard              queues  WAMP           WS tunnel
                                                               agent           agent
                                                     IoTronic
                                                    conductor
                                                                  WAMP
                                                                  router
                                              IoTronic API server
                                IoTronic
                                command                                         ...
                                line client          IoTronic
                                                     database
                                 REST communication
                                                          WAMP control     WebSocket
                                 AMQP (pub/sub, RPC)
                                                             channel        tunnels
                                 other communication
                                      Figure 1 – The cloud-side deviceless system architecture.
           environment.  The architecture of S4T is split between  • Zun-wsproxy: a proxy that uses WebSocket to enable the
           a cloud data center hosting the service named IoTronic  interactive mode with the containers (when required).
           (see the red subsystem in Figure 1) and geographically
           distributed IoT nodes hosting the S4T device-side agent called  • Zun scheduler: a subsystem responsible for selecting,
           Lightning-Rod (LR) (see Figure 2). As IoT nodes, we are  based on a set of rules and filters (e.g., available RAM,
           considering, on purpose, relatively smart Microprocessor  CPU), the suitable compute node where to deploy the
           (MPU)-powered (embedded) devices such as single-board  container.
           computers (e.g., Arduino, Raspberry Pi) that are capable of
                                                                • Zun networking driver: it is responsible for providing
           hosting a lightweight Linux distribution (e.g., OpenWRT).
                                                                  network connectivity/reachability for the containers.
           To integrate the remote IoT nodes within the OpenStack
           management scope, S4T deploys a set of features to deal
           with IoT deployments constraints. For instance, S4T uses  3.3 OpenStack FaaS subsystem: Qinling
           WebSocket with a reverse tunneling mechanism to bypass
                                                              Qinling (see the blue subsystem in Figure 1) is an OpenStack
           NATs and firewalls (see green arrows in Figure 1). Being a
                                                              service that provides a platform supporting serverless
           compatible OpenStack service makes S4T able to interact
                                                              functions (like AWS Lambda).  The Qinling system is
           seamlessly with other OpenStack subsystems to provide
                                                              highly flexible as it can be used with different Container
           advanced user-facing features [19].
                                                              Orchestration Engines (COEs) such as Kubernetes and
                                                              Docker Swarm. The Qinling system is composed of:
           3.2 OpenStack container subsystem: Zun
                                                                • Qinling-API: represents the entry point of the
           Zun (see the violet subsystem in Figure 1) is the
                                                                  interactions with Qinling. It exposes a set of REST APIs
           service providing containers’ management in OpenStack
                                                                  through which the users or other OpenStack services can
           environments.  The system exposes a set of REST APIs
                                                                  communicate with the system (e.g., to create runtimes
           that enable the cloud users (or other OpenStack services)
                                                                  and execute functions). It handles the received request
           to instantiate containers without worrying about servers or
                                                                  by routing them either to the Qinling-engine or the
           clusters management. Zun supports Docker as a container
                                                                  Qinling-orchestrator.
           engine and can, optionally, interact with other OpenStack
           services to provide advanced capabilities for the containers
                                                                • Qinling-engine: is the core subsystem that handles all
           (e.g., creating virtual networks among containers using
                                                                  the communication between Qinling components as well
           OpenStack Neutron8). The architecture of Zun is composed
                                                                  as managing the backend operations (e.g., containers
           of five main components:
                                                                  instantiation, functions creation/execution).  It also
             • Zun-API: a REST server exposing a set of APIs through  manages the access to the database where metadata
               which the containers can be managed.               about functions and their containers is maintained.
             • Zun-compute: an agent hosted on each compute node  • Qinling-orchestrator: is the component responsible
               (i.e., where the containers get instantiated). Specifically,  for selecting the best candidate where to deploy the
               the agent handles the requests to manage/create    containers (e.g., based on CPU/RAM available). In
               containers on the localhost.                       addition, the orchestrator deals with containers scaling
           8 https://wiki.openstack.org/wiki/Neutron              (through the interaction with a COE).

                                                           – xli –
   40   41   42   43   44   45   46   47   48   49   50