More verbiage tinkering.
This commit is contained in:
parent
856a10a680
commit
d8ca55b11d
@ -1,12 +1,14 @@
|
|||||||
.. _appliance:
|
.. _appliance:
|
||||||
|
|
||||||
Virtual Software Router (the Akanda Appliance)
|
The Service VM (the Akanda Appliance)
|
||||||
==============================================
|
=====================================
|
||||||
|
|
||||||
Akanda uses Linux-based software router images (stored in OpenStack Glance)
|
Akanda uses Linux-based images (stored in OpenStack Glance) to provide layer
|
||||||
to provide layer 3 routing and advanced networking services. While it's
|
3 routing and advanced networking services. Akanda, Inc provides stable image
|
||||||
possible to build your own custom image, Akanda provides stable image releases
|
releases for download at `akanda.io <http://akanda.io>`_, but it's also
|
||||||
for download at `akanda.io <http://akanda.io>`_.
|
possible to build your own custom Service VM image (running additional
|
||||||
|
services of your own on top of the routing and other default services provided
|
||||||
|
by Akanda).
|
||||||
|
|
||||||
.. _appliance_rest:
|
.. _appliance_rest:
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ From an architectural perspective, Akanda is composed of a few subprojects:
|
|||||||
a replacement for Neutron's various L3-L7 agents by listening for
|
a replacement for Neutron's various L3-L7 agents by listening for
|
||||||
Neutron AMQP events and coalescing them into software
|
Neutron AMQP events and coalescing them into software
|
||||||
router API calls (which configure and manage embedded services on the
|
router API calls (which configure and manage embedded services on the
|
||||||
router VM). Additionally, :py:mod:`akanda-rug` contains a health monitoring
|
Service VM). Additionally, :py:mod:`akanda-rug` contains a health monitoring
|
||||||
component which monitors health and guarantees uptime for existing
|
component which monitors health and guarantees uptime for existing
|
||||||
software routers.
|
software routers.
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ transitions, modifying its virtualized router in a variety of ways, such as:
|
|||||||
* Booting a virtual machine for the router via the Nova API (if one doesn't
|
* Booting a virtual machine for the router via the Nova API (if one doesn't
|
||||||
exist).
|
exist).
|
||||||
* Checking for aliveness of the router via the :ref:`REST API
|
* Checking for aliveness of the router via the :ref:`REST API
|
||||||
<appliance_rest>` on the router VM.
|
<appliance_rest>` on the Service VM.
|
||||||
* Pushing configuration updates via the :ref:`REST API
|
* Pushing configuration updates via the :ref:`REST API
|
||||||
<appliance_rest>` to configure routing
|
<appliance_rest>` to configure routing
|
||||||
and manage services (such as ``iptables``, ``dnsmasq``, ``bird6``,
|
and manage services (such as ``iptables``, ``dnsmasq``, ``bird6``,
|
||||||
|
@ -62,7 +62,7 @@ a running :py:mod:`akanda.rug` via AMQP::
|
|||||||
and places the tenant back under akanda-rug management.
|
and places the tenant back under akanda-rug management.
|
||||||
|
|
||||||
$ rug-ctl ssh <router-id>
|
$ rug-ctl ssh <router-id>
|
||||||
Establishes an ssh connection with a specified router VM.
|
Establishes an ssh connection with a specified Service VM.
|
||||||
|
|
||||||
$ rug-ctl workers debug
|
$ rug-ctl workers debug
|
||||||
Causes the rug to print debugging diagnostics about the
|
Causes the rug to print debugging diagnostics about the
|
||||||
@ -77,7 +77,7 @@ analyze the state machine flow of any router and step through its operation
|
|||||||
using Python's debugger. This is particularly useful for development purposes
|
using Python's debugger. This is particularly useful for development purposes
|
||||||
and understanding the nature of the :py:mod:`akanda.rug` state machine, but it's
|
and understanding the nature of the :py:mod:`akanda.rug` state machine, but it's
|
||||||
also useful for debugging problematic routers as an operator; a common pattern
|
also useful for debugging problematic routers as an operator; a common pattern
|
||||||
for determining why a router VM won't boot is to place the router in `debug
|
for determining why a Service VM won't boot is to place the router in `debug
|
||||||
mode`::
|
mode`::
|
||||||
|
|
||||||
$ rug-ctl router debug <router-id>
|
$ rug-ctl router debug <router-id>
|
||||||
|
@ -23,8 +23,8 @@ several event types:
|
|||||||
* ``UPDATE`` - services on a router need to be reconfigured
|
* ``UPDATE`` - services on a router need to be reconfigured
|
||||||
* ``DELETE`` - a router was deleted
|
* ``DELETE`` - a router was deleted
|
||||||
* ``POLL`` - used by the :ref:`health monitor<health>` for checking aliveness
|
* ``POLL`` - used by the :ref:`health monitor<health>` for checking aliveness
|
||||||
of a router VM
|
of a Service VM
|
||||||
* ``REBUILD`` - a router VM should be destroyed and recreated
|
* ``REBUILD`` - a Service VM should be destroyed and recreated
|
||||||
|
|
||||||
As events are normalized and shuttled onto the :py:mod:`multiprocessing.Queue`,
|
As events are normalized and shuttled onto the :py:mod:`multiprocessing.Queue`,
|
||||||
:py:mod:`akanda.rug.scheduler` shards (by Tenant ID, by default) and
|
:py:mod:`akanda.rug.scheduler` shards (by Tenant ID, by default) and
|
||||||
@ -57,32 +57,32 @@ State Machine Flow
|
|||||||
The supported states in the state machine are:
|
The supported states in the state machine are:
|
||||||
|
|
||||||
:CalcAction: The entry point of the state machine. Depending on the
|
:CalcAction: The entry point of the state machine. Depending on the
|
||||||
current status of the router VM (e.g., ``ACTIVE``, ``BUILD``, ``SHUTDOWN``)
|
current status of the Service VM (e.g., ``ACTIVE``, ``BUILD``, ``SHUTDOWN``)
|
||||||
and the current event, determine the first step in the state machine to
|
and the current event, determine the first step in the state machine to
|
||||||
transition to.
|
transition to.
|
||||||
|
|
||||||
:Alive: Check aliveness of the router VM by attempting to communicate with
|
:Alive: Check aliveness of the Service VM by attempting to communicate with
|
||||||
it via its REST HTTP API.
|
it via its REST HTTP API.
|
||||||
|
|
||||||
:CreateVM: Call ``nova boot`` to boot a new router VM. This will attempt
|
:CreateVM: Call ``nova boot`` to boot a new Service VM. This will attempt
|
||||||
to boot a router VM up to a (configurable) number of times before
|
to boot a Service VM up to a (configurable) number of times before
|
||||||
placing the router into ``ERROR`` state.
|
placing the router into ``ERROR`` state.
|
||||||
|
|
||||||
:CheckBoot: Check aliveness (up to a configurable number of seconds) of the
|
:CheckBoot: Check aliveness (up to a configurable number of seconds) of the
|
||||||
router until the VM is responsive and ready for initial configuration.
|
router until the VM is responsive and ready for initial configuration.
|
||||||
|
|
||||||
:ConfigureVM: Configure the router VM and its services. This is generally
|
:ConfigureVM: Configure the Service VM and its services. This is generally
|
||||||
the final step in the process of booting and configuring a router. This
|
the final step in the process of booting and configuring a router. This
|
||||||
step communicates with the Neutron API to generate a comprehensive network
|
step communicates with the Neutron API to generate a comprehensive network
|
||||||
configuration for the router (which is pushed to the router via its REST
|
configuration for the router (which is pushed to the router via its REST
|
||||||
API). On success, the state machine yields control back to the worker
|
API). On success, the state machine yields control back to the worker
|
||||||
thread and that thread handles the next event in its queue (likely for
|
thread and that thread handles the next event in its queue (likely for
|
||||||
a different router VM and its state machine).
|
a different Service VM and its state machine).
|
||||||
|
|
||||||
:ReplugVM: Attempt to hot-plug/unplug a network from the router via ``nova
|
:ReplugVM: Attempt to hot-plug/unplug a network from the router via ``nova
|
||||||
interface-attach`` or ``nova-interface-detach``.
|
interface-attach`` or ``nova-interface-detach``.
|
||||||
|
|
||||||
:StopVM: Terminate a running router VM. This is generally performed when
|
:StopVM: Terminate a running Service VM. This is generally performed when
|
||||||
a Neutron router is deleted or via explicit operator tools.
|
a Neutron router is deleted or via explicit operator tools.
|
||||||
|
|
||||||
:ClearError: After a (configurable) number of ``nova boot`` failures, Neutron
|
:ClearError: After a (configurable) number of ``nova boot`` failures, Neutron
|
||||||
|
@ -18,9 +18,9 @@ digraph sample_boot {
|
|||||||
"Worker 1" -> "Thread N"
|
"Worker 1" -> "Thread N"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Thread 1" -> "Router VM 1";
|
"Thread 1" -> "Service VM 1";
|
||||||
"Thread 1" -> "Router VM ..." [ label = "Appliance REST API" ];
|
"Thread 1" -> "Service VM ..." [ label = "Appliance REST API" ];
|
||||||
"Thread 1" -> "Router VM N";
|
"Thread 1" -> "Service VM N";
|
||||||
|
|
||||||
"Thread 1" -> "Nova" [ label = "Nova API" ];
|
"Thread 1" -> "Nova" [ label = "Nova API" ];
|
||||||
"Thread 1" -> "Neutron" [ label = "Neutron API" ];
|
"Thread 1" -> "Neutron" [ label = "Neutron API" ];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user