Statistics
| Branch: | Tag: | Revision:

root / docs / cyclades.rst @ d2a9f85f

History | View | Annotate | Download (5.8 kB)

1 b1996c81 Kostas Papadimitriou
.. _cyclades:
2 e609b1ba Vangelis Koukis
3 bc055d09 Constantinos Venetsanopoulos
Compute and Network Service (cyclades)
4 bc055d09 Constantinos Venetsanopoulos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5 e609b1ba Vangelis Koukis
6 bc055d09 Constantinos Venetsanopoulos
Cyclades is the the synnefo Compute and Network Service.
7 313c0442 Constantinos Venetsanopoulos
8 bc055d09 Constantinos Venetsanopoulos
It implements OpenStack Compute API v1.1 + synnefo extensions.
9 313c0442 Constantinos Venetsanopoulos
10 313c0442 Constantinos Venetsanopoulos
.. todo:: list synnefo components needed by cyclades
11 313c0442 Constantinos Venetsanopoulos
12 aa62d2f7 Kostas Papadimitriou
.. _cyclades-introduction:
13 aa62d2f7 Kostas Papadimitriou
14 aa62d2f7 Kostas Papadimitriou
Cyclades Introduction
15 aa62d2f7 Kostas Papadimitriou
=====================
16 aa62d2f7 Kostas Papadimitriou
17 aa62d2f7 Kostas Papadimitriou
Cyclades is the Compute/Network software component of *synnefo*. Its design combines a Google
18 aa62d2f7 Kostas Papadimitriou
Ganeti backend for VM cluster management, with a Python/Django implementation of
19 aa62d2f7 Kostas Papadimitriou
the user-visible API at the frontend. We opted to reuse Ganeti as a VM
20 aa62d2f7 Kostas Papadimitriou
management solution in an effort not to re-invent the wheel; Ganeti is scalable
21 aa62d2f7 Kostas Papadimitriou
and proven software infrastructure for managing VMs in production environments,
22 aa62d2f7 Kostas Papadimitriou
and GRNET already had long experience with it, using it to provide VMs to
23 aa62d2f7 Kostas Papadimitriou
Network Operation Centers. The synnefo team is involved in Ganeti development,
24 aa62d2f7 Kostas Papadimitriou
contributing patches upstream.
25 aa62d2f7 Kostas Papadimitriou
26 aa62d2f7 Kostas Papadimitriou
Basing our work on Ganeti, we build on a solid, mature core which undertakes
27 aa62d2f7 Kostas Papadimitriou
most of the low-level VM management operations, e.g., handling of VM creations,
28 aa62d2f7 Kostas Papadimitriou
migrations among physical nodes, and handling of node downtimes; the design and
29 aa62d2f7 Kostas Papadimitriou
implementation of the end-user API is orthogonal to VM handling at the backend.
30 aa62d2f7 Kostas Papadimitriou
Building on Ganeti gave us a head start, allowing us to focus on creating a
31 aa62d2f7 Kostas Papadimitriou
custom cloud management layer, accesible over a consistent, clean end-user API
32 aa62d2f7 Kostas Papadimitriou
implementation, and an intuitive Web-based UI.  Overall, the software stack is
33 aa62d2f7 Kostas Papadimitriou
as follows:
34 aa62d2f7 Kostas Papadimitriou
35 aa62d2f7 Kostas Papadimitriou
.. image:: images/synnefo-software-stack.png
36 aa62d2f7 Kostas Papadimitriou
37 aa62d2f7 Kostas Papadimitriou
With *Cyclades*, users have access to VMs powered by KVM, running Linux and
38 aa62d2f7 Kostas Papadimitriou
Windows guests on Debian hosts and using Google Ganeti for VM cluster
39 aa62d2f7 Kostas Papadimitriou
management. The VMs are accessible by the end-user over the Web or
40 aa62d2f7 Kostas Papadimitriou
programmatically (OpenStack Compute API v1.1). Users have full control over
41 aa62d2f7 Kostas Papadimitriou
their VMs: they can create new ones, start them, shutdown, reboot, and destroy
42 aa62d2f7 Kostas Papadimitriou
them. For the configuration of their VMs they can select number of CPUs, size of
43 aa62d2f7 Kostas Papadimitriou
RAM and system disk, and operating system from pre-defined Images including
44 aa62d2f7 Kostas Papadimitriou
popular Linux distros (Fedora, Debian, Ubuntu) and MS-Windows Server 2008 R2.
45 aa62d2f7 Kostas Papadimitriou
There is an Out-of-Band console over VNC for troubleshooting.  
46 aa62d2f7 Kostas Papadimitriou
47 aa62d2f7 Kostas Papadimitriou
The REST API for VM management, being OpenStack Compute v. 1.1 compatible, can
48 aa62d2f7 Kostas Papadimitriou
interoperate with 3rd party tools and client libraries. GRNET has added custom
49 aa62d2f7 Kostas Papadimitriou
extensions for yet-unsupported functionality. It has been implemented in Python,
50 aa62d2f7 Kostas Papadimitriou
using the Django framework, from scratch.  
51 aa62d2f7 Kostas Papadimitriou
52 aa62d2f7 Kostas Papadimitriou
The *Cyclades* UI is written in Javascript/jQuery and runs entirely on the client
53 aa62d2f7 Kostas Papadimitriou
side for maximum reponsiveness. It is just another API client; all UI operations
54 aa62d2f7 Kostas Papadimitriou
happen with asynchronous calls over the API.
55 aa62d2f7 Kostas Papadimitriou
56 aa62d2f7 Kostas Papadimitriou
The networking functionality includes dual IPv4/IPv6 connectivity for each VM,
57 aa62d2f7 Kostas Papadimitriou
easy, platform-provided firewalling either through an array of pre-configured
58 aa62d2f7 Kostas Papadimitriou
firewall profiles, or through a roll-your-own firewall inside the VM. Users may
59 aa62d2f7 Kostas Papadimitriou
create multiple private, virtual L2 networks, so that they construct arbitrary
60 aa62d2f7 Kostas Papadimitriou
network topologie, e.g., to deploy VMs in multi-tier configurations. The
61 aa62d2f7 Kostas Papadimitriou
networking functionality is exported all the way from the backend to the API and
62 aa62d2f7 Kostas Papadimitriou
the UI.
63 aa62d2f7 Kostas Papadimitriou
64 aa62d2f7 Kostas Papadimitriou
65 bc055d09 Constantinos Venetsanopoulos
.. _cyclades-architecture:
66 313c0442 Constantinos Venetsanopoulos
67 313c0442 Constantinos Venetsanopoulos
Cyclades Architecture
68 313c0442 Constantinos Venetsanopoulos
=====================
69 313c0442 Constantinos Venetsanopoulos
70 bc055d09 Constantinos Venetsanopoulos
Nodes in an cyclades deployment belong in one of the following types.
71 bc055d09 Constantinos Venetsanopoulos
For every type, we list the services that execute on corresponding nodes.
72 bc055d09 Constantinos Venetsanopoulos
Throughout this guide, `node` refers to a physical machine in the deployment.
73 313c0442 Constantinos Venetsanopoulos
74 bc055d09 Constantinos Venetsanopoulos
.. _DB_NODE:
75 313c0442 Constantinos Venetsanopoulos
76 bc055d09 Constantinos Venetsanopoulos
DB
77 bc055d09 Constantinos Venetsanopoulos
--
78 313c0442 Constantinos Venetsanopoulos
79 bc055d09 Constantinos Venetsanopoulos
A node [or more than one nodes, if using an HA configuration], running a DB
80 bc055d09 Constantinos Venetsanopoulos
engine supported by the Django ORM layer. The DB is the single source of
81 bc055d09 Constantinos Venetsanopoulos
truth for the servicing of API requests by cyclades.
82 313c0442 Constantinos Venetsanopoulos
83 bc055d09 Constantinos Venetsanopoulos
*Services:* PostgreSQL / MySQL
84 313c0442 Constantinos Venetsanopoulos
85 bc055d09 Constantinos Venetsanopoulos
.. _APISERVER_NODE:
86 313c0442 Constantinos Venetsanopoulos
87 bc055d09 Constantinos Venetsanopoulos
APISERVER
88 bc055d09 Constantinos Venetsanopoulos
---------
89 313c0442 Constantinos Venetsanopoulos
90 bc055d09 Constantinos Venetsanopoulos
A node running the ``api`` application contained in
91 bc055d09 Constantinos Venetsanopoulos
:ref:`snf-cyclades-app <snf-cyclades-app>`. Any number of
92 bc055d09 Constantinos Venetsanopoulos
:ref:`APISERVER <APISERVER_NODE>` nodes
93 bc055d09 Constantinos Venetsanopoulos
can be used, in a load-balancing configuration, without any
94 bc055d09 Constantinos Venetsanopoulos
special consideration. Access to a common DB ensures consistency.
95 e609b1ba Vangelis Koukis
96 bc055d09 Constantinos Venetsanopoulos
*Services:* Web server, vncauthproxy
97 bc055d09 Constantinos Venetsanopoulos
98 bc055d09 Constantinos Venetsanopoulos
99 bc055d09 Constantinos Venetsanopoulos
.. _QUEUE_NODE:
100 bc055d09 Constantinos Venetsanopoulos
101 bc055d09 Constantinos Venetsanopoulos
QUEUE
102 bc055d09 Constantinos Venetsanopoulos
-----
103 bc055d09 Constantinos Venetsanopoulos
104 bc055d09 Constantinos Venetsanopoulos
A node running the RabbitMQ software, which provides AMQP functionality. More
105 bc055d09 Constantinos Venetsanopoulos
than one :ref:`QUEUE <QUEUE_NODE>` nodes may be deployed, in an HA
106 bc055d09 Constantinos Venetsanopoulos
configuration. Such deployments require shared storage, provided e.g., by DRBD.
107 bc055d09 Constantinos Venetsanopoulos
108 bc055d09 Constantinos Venetsanopoulos
*Services:* RabbitMQ [rabbitmq-server]
109 bc055d09 Constantinos Venetsanopoulos
110 bc055d09 Constantinos Venetsanopoulos
111 bc055d09 Constantinos Venetsanopoulos
.. _LOGIC_NODE:
112 bc055d09 Constantinos Venetsanopoulos
113 bc055d09 Constantinos Venetsanopoulos
LOGIC
114 bc055d09 Constantinos Venetsanopoulos
-----
115 bc055d09 Constantinos Venetsanopoulos
116 bc055d09 Constantinos Venetsanopoulos
A node running the business logic of synnefo, in Django. It dequeues
117 bc055d09 Constantinos Venetsanopoulos
messages from QUEUE nodes, and provides the context in which business logic
118 bc055d09 Constantinos Venetsanopoulos
functions run. It uses Django ORM to connect to the common DB and update the
119 bc055d09 Constantinos Venetsanopoulos
state of the system, based on notifications received from the rest of the
120 bc055d09 Constantinos Venetsanopoulos
infrastructure, over AMQP.
121 bc055d09 Constantinos Venetsanopoulos
122 bc055d09 Constantinos Venetsanopoulos
*Services:* the synnefo logic dispatcher, ``snf-dispatcher``
123 bc055d09 Constantinos Venetsanopoulos
124 bc055d09 Constantinos Venetsanopoulos
125 bc055d09 Constantinos Venetsanopoulos
.. _GANETI_NODES:
126 bc055d09 Constantinos Venetsanopoulos
.. _GANETI_MASTER:
127 bc055d09 Constantinos Venetsanopoulos
.. _GANETI_NODE:
128 bc055d09 Constantinos Venetsanopoulos
129 bc055d09 Constantinos Venetsanopoulos
GANETI-MASTER and GANETI-NODE
130 bc055d09 Constantinos Venetsanopoulos
-----------------------------
131 bc055d09 Constantinos Venetsanopoulos
132 bc055d09 Constantinos Venetsanopoulos
A single GANETI-MASTER and a large number of GANETI-NODEs constitute the
133 bc055d09 Constantinos Venetsanopoulos
Ganeti backend for synnefo, which undertakes all VM management functions.
134 bc055d09 Constantinos Venetsanopoulos
Any APISERVER can issue commands to the GANETI-MASTER, over RAPI, to effect
135 bc055d09 Constantinos Venetsanopoulos
changes in the state of the VMs. The GANETI-MASTER runs the Ganeti request
136 bc055d09 Constantinos Venetsanopoulos
queue.
137 bc055d09 Constantinos Venetsanopoulos
138 bc055d09 Constantinos Venetsanopoulos
*Services:*
139 bc055d09 Constantinos Venetsanopoulos
    * only on :ref:`GANETI-MASTER <GANETI_MASTER>`:
140 bc055d09 Constantinos Venetsanopoulos
        * the synnefo Ganeti monitoring daemon, ``snf-ganeti-eventd``
141 bc055d09 Constantinos Venetsanopoulos
        * the synnefo Ganeti hook, ``ganeti/snf-ganeti-hook.py``.
142 bc055d09 Constantinos Venetsanopoulos
    * on every :ref:`GANETI-NODE <GANETI_NODE>`:
143 bc055d09 Constantinos Venetsanopoulos
        * a deployment-specific KVM ifup script
144 bc055d09 Constantinos Venetsanopoulos
        * properly configured :ref:`NFDHCPD <cyclades-nfdhcpd-setup>`
145 e609b1ba Vangelis Koukis
146 e609b1ba Vangelis Koukis
147 e609b1ba Vangelis Koukis
..   src/design
148 e609b1ba Vangelis Koukis
..   src/dev
149 e609b1ba Vangelis Koukis
..   src/user
150 e609b1ba Vangelis Koukis
..   src/api
151 e609b1ba Vangelis Koukis
152 e609b1ba Vangelis Koukis
..   src/install
153 e609b1ba Vangelis Koukis
..   src/configuration
154 e609b1ba Vangelis Koukis
..   src/deployment
155 e609b1ba Vangelis Koukis
..   src/admin
156 e609b1ba Vangelis Koukis
..   src/admin_tools
157 e609b1ba Vangelis Koukis
..   src/develop
158 e609b1ba Vangelis Koukis
..   src/api
159 e609b1ba Vangelis Koukis
..   src/plankton
160 e609b1ba Vangelis Koukis
..   src/storage
161 e609b1ba Vangelis Koukis
..   src/upgrade
162 e609b1ba Vangelis Koukis
..   src/changelog
163 e609b1ba Vangelis Koukis
164 e609b1ba Vangelis Koukis
Indices and tables
165 e609b1ba Vangelis Koukis
==================
166 e609b1ba Vangelis Koukis
167 e609b1ba Vangelis Koukis
168 e609b1ba Vangelis Koukis
* :ref:`genindex`
169 e609b1ba Vangelis Koukis
* :ref:`modindex`
170 e609b1ba Vangelis Koukis
* :ref:`search`