Proposed Service Architecture for Kosmos
Change-Id: I68dc4521afe4efb520748fbc323867a045a2eb77
This commit is contained in:
parent
2e72a70820
commit
e887425fcf
|
@ -26,6 +26,7 @@ extensions = [
|
|||
#'sphinx.ext.intersphinx',
|
||||
'oslosphinx',
|
||||
'yasfb',
|
||||
'sphinx.ext.graphviz'
|
||||
]
|
||||
|
||||
# Feed configuration for yasfb
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
digraph{
|
||||
|
||||
label="Kosmos System Overview";
|
||||
overlap="ortho";
|
||||
fontname="sans-serif"
|
||||
|
||||
subgraph cluster_api_service {
|
||||
fontname="sans-serif"
|
||||
label="API Service";
|
||||
fontsize=12
|
||||
|
||||
WSGI[label="WSGI API", fontname="sans-serif", fontsize=10];
|
||||
}
|
||||
|
||||
subgraph cluster_keystone {
|
||||
fontname="sans-serif"
|
||||
label="Keystone";
|
||||
fontsize=12
|
||||
style="dashed"
|
||||
|
||||
Keystone[label="Keystone API", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
}
|
||||
|
||||
subgraph cluster_conductor_service {
|
||||
fontname="sans-serif"
|
||||
label="Conductor Service";
|
||||
fontsize=12
|
||||
|
||||
Conductor[label="Conductor", fontname="sans-serif", fontsize=10];
|
||||
Database[label="Database", fontname="sans-serif", fontsize=10, shape="folder"];
|
||||
}
|
||||
|
||||
subgraph cluster_engine_service {
|
||||
fontname="sans-serif"
|
||||
label="Engine Service";
|
||||
fontsize=12
|
||||
|
||||
node[shape=record];
|
||||
Engine[label="<f0> Engine|<f1> GSLB Plugin Interface |<f2> Status Check Consumer", fontname="sans-serif", fontsize=10];
|
||||
PluginDriver[label="GSLB Plugin Driver", fontname="sans-serif", fontsize=10, shape="component"]
|
||||
}
|
||||
|
||||
subgraph cluster_gslb_appliance {
|
||||
fontname="sans-serif"
|
||||
fontsize=12
|
||||
label="GSLB Appliance";
|
||||
style="dashed"
|
||||
|
||||
Applicance[label="GSLB Traffic Director", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
ApplicanceAPI[label="GSLB Appliance API", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
}
|
||||
|
||||
subgraph cluster_status_checks {
|
||||
fontname="sans-serif"
|
||||
fontsize=12
|
||||
label="Status Check Service";
|
||||
|
||||
Worker[label="Status Checking Worker", fontname="sans-serif", fontsize=10];
|
||||
|
||||
node[shape=record];
|
||||
Checks[label="<f0> Build In Checks Interface |<f1> GSLB Plugin Checks Interface", fontname="sans-serif", fontsize=10];
|
||||
|
||||
BuiltInChecks[label="Built In Status Checks", fontname="sans-serif", fontsize=10]
|
||||
PluginChecks[label="Plugin Status Checks", fontname="sans-serif", fontsize=10, shape="component"]
|
||||
}
|
||||
|
||||
subgraph cluster_endpoints {
|
||||
fontname="sans-serif"
|
||||
fontsize=12
|
||||
label="Endpoints";
|
||||
style="dashed"
|
||||
|
||||
Endpoint1[label="Endpoint", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
Endpoint2[label="Endpoint", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
Endpoint3[label="Endpoint", fontname="sans-serif", fontsize=10, style="dotted"];
|
||||
|
||||
}
|
||||
|
||||
|
||||
AdminUser[label="GSLB User", fontname="sans-serif", fontsize=10, style="dashed"];
|
||||
|
||||
AdminUser -> WSGI [dir="both"];
|
||||
|
||||
Keystone -> WSGI [dir="both"];
|
||||
|
||||
WSGI -> Conductor:f0 [dir="both"];
|
||||
|
||||
Conductor -> Database [dir="both"];
|
||||
|
||||
Engine:f0 -> Conductor [dir="both"];
|
||||
|
||||
Engine:f1 -> PluginDriver [dir="both"];
|
||||
PluginDriver -> ApplicanceAPI [dir="both"];
|
||||
|
||||
Applicance -> ApplicanceAPI [dir="both"];
|
||||
|
||||
Worker -> Engine:f2;
|
||||
Worker -> Checks [dir="both"];
|
||||
Checks:f0 -> BuiltInChecks
|
||||
Checks:f1 -> PluginChecks
|
||||
BuiltInChecks -> {Endpoint1, Endpoint2, Endpoint3}
|
||||
PluginChecks -> {Endpoint1, Endpoint2, Endpoint3}
|
||||
|
||||
EndUser[label="End User", fontname="sans-serif", fontsize=10, style="dashed"];
|
||||
|
||||
EndUser -> Applicance
|
||||
Applicance -> {Endpoint1, Endpoint2, Endpoint3}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
..
|
||||
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
..
|
||||
This template should be in ReSTructured text. The filename in the git
|
||||
repository should match the launchpad URL, for example a URL of
|
||||
https://blueprints.launchpad.net/kosmos/+spec/awesome-thing should be named
|
||||
awesome-thing.rst . Please do not delete any of the sections in this
|
||||
template. If you have nothing to say for a whole section, just write: None
|
||||
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||
|
||||
=====================
|
||||
System Architecture
|
||||
=====================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Services
|
||||
--------
|
||||
|
||||
+-----------------------+--------------------------+---------------------------+-------+
|
||||
| service name | deployment model | purpose | notes |
|
||||
+=======================+==========================+===========================+=======+
|
||||
| kosmos-api | multiple | Configuration of GSLBs | |
|
||||
+-----------------------+--------------------------+---------------------------+-------+
|
||||
| kosmos-conductor | multiple - single region | Database Access | |
|
||||
+-----------------------+--------------------------+---------------------------+-------+
|
||||
| kosmos-status-checker | multiple - global | Check status of endpoints | |
|
||||
+-----------------------+--------------------------+---------------------------+-------+
|
||||
| kosmos-engine | multiple - single region | Business Logic | |
|
||||
+-----------------------+--------------------------+---------------------------+-------+
|
||||
|
||||
kosmos-api
|
||||
^^^^^^^^^^
|
||||
|
||||
The API would be a WSGI service that implements the API Spec previously approved.
|
||||
|
||||
kosmos-conductor
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This will act as a single point of access to the DB, allowing for consistent data validation.
|
||||
|
||||
kosmos-status-checker
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This is a worker style service that will run recurring tasks - i.e. status checks on the defined endpoints
|
||||
|
||||
This will have a plugin interface to allow for more checks to the loaded by different plugins, or for custom checks to be written by the deployer
|
||||
|
||||
kosmos-engine
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
This is where all the business logic resides. This service will consume status results and decide if an endpoint should be removed / added.
|
||||
This service will then use the plugin loaded for the GSLB backend to orchestrate this.
|
||||
|
||||
Diagram
|
||||
-------
|
||||
|
||||
.. graphviz:: sysarch-diagram.dot
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
kosmos-drivers
|
||||
|
||||
Milestones
|
||||
----------
|
||||
|
||||
Target Milestone for completion:
|
||||
M-1
|
Loading…
Reference in New Issue