Statistics
| Branch: | Tag: | Revision:

root / docs / admin-guide.rst @ 075b91de

History | View | Annotate | Download (39.4 kB)

1 bc055d09 Constantinos Venetsanopoulos
.. _admin-guide:
2 bc055d09 Constantinos Venetsanopoulos
3 bc055d09 Constantinos Venetsanopoulos
Synnefo Administrator's Guide
4 bc055d09 Constantinos Venetsanopoulos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5 bc055d09 Constantinos Venetsanopoulos
6 bc055d09 Constantinos Venetsanopoulos
This is the complete Synnefo Administrator's Guide.
7 bc055d09 Constantinos Venetsanopoulos
8 bc055d09 Constantinos Venetsanopoulos
9 bc055d09 Constantinos Venetsanopoulos
10 eab73849 Constantinos Venetsanopoulos
General Synnefo Architecture
11 eab73849 Constantinos Venetsanopoulos
============================
12 eab73849 Constantinos Venetsanopoulos
13 eab73849 Constantinos Venetsanopoulos
The following graph shows the whole Synnefo architecture and how it interacts
14 eab73849 Constantinos Venetsanopoulos
with multiple Ganeti clusters. We hope that after reading the Administrator's
15 eab73849 Constantinos Venetsanopoulos
Guide you will be able to understand every component and all the interactions
16 eab73849 Constantinos Venetsanopoulos
between them. It is a good idea to first go through the Quick Administrator's
17 eab73849 Constantinos Venetsanopoulos
Guide before proceeding.
18 eab73849 Constantinos Venetsanopoulos
19 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch2.png
20 16539dad Kostas Papadimitriou
   :width: 100%
21 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch2.png
22 eab73849 Constantinos Venetsanopoulos
23 eab73849 Constantinos Venetsanopoulos
24 a1c707c9 Constantinos Venetsanopoulos
25 eab73849 Constantinos Venetsanopoulos
Identity Service (Astakos)
26 eab73849 Constantinos Venetsanopoulos
==========================
27 f846d8df Constantinos Venetsanopoulos
28 f846d8df Constantinos Venetsanopoulos
29 eab73849 Constantinos Venetsanopoulos
Overview
30 eab73849 Constantinos Venetsanopoulos
--------
31 eab73849 Constantinos Venetsanopoulos
32 eab73849 Constantinos Venetsanopoulos
Authentication methods
33 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~
34 eab73849 Constantinos Venetsanopoulos
35 eab73849 Constantinos Venetsanopoulos
Local Authentication
36 eab73849 Constantinos Venetsanopoulos
````````````````````
37 eab73849 Constantinos Venetsanopoulos
38 eab73849 Constantinos Venetsanopoulos
LDAP Authentication
39 eab73849 Constantinos Venetsanopoulos
```````````````````
40 eab73849 Constantinos Venetsanopoulos
41 eab73849 Constantinos Venetsanopoulos
.. _shibboleth-auth:
42 eab73849 Constantinos Venetsanopoulos
43 eab73849 Constantinos Venetsanopoulos
Shibboleth Authentication
44 eab73849 Constantinos Venetsanopoulos
`````````````````````````
45 eab73849 Constantinos Venetsanopoulos
46 eab73849 Constantinos Venetsanopoulos
Astakos can delegate user authentication to a Shibboleth federation.
47 eab73849 Constantinos Venetsanopoulos
48 eab73849 Constantinos Venetsanopoulos
To setup shibboleth, install package::
49 eab73849 Constantinos Venetsanopoulos
50 eab73849 Constantinos Venetsanopoulos
  apt-get install libapache2-mod-shib2
51 eab73849 Constantinos Venetsanopoulos
52 eab73849 Constantinos Venetsanopoulos
Change appropriately the configuration files in ``/etc/shibboleth``.
53 eab73849 Constantinos Venetsanopoulos
54 eab73849 Constantinos Venetsanopoulos
Add in ``/etc/apache2/sites-available/synnefo-ssl``::
55 eab73849 Constantinos Venetsanopoulos
56 eab73849 Constantinos Venetsanopoulos
  ShibConfig /etc/shibboleth/shibboleth2.xml
57 eab73849 Constantinos Venetsanopoulos
  Alias      /shibboleth-sp /usr/share/shibboleth
58 eab73849 Constantinos Venetsanopoulos
59 eab73849 Constantinos Venetsanopoulos
  <Location /im/login/shibboleth>
60 eab73849 Constantinos Venetsanopoulos
    AuthType shibboleth
61 eab73849 Constantinos Venetsanopoulos
    ShibRequireSession On
62 eab73849 Constantinos Venetsanopoulos
    ShibUseHeaders On
63 eab73849 Constantinos Venetsanopoulos
    require valid-user
64 eab73849 Constantinos Venetsanopoulos
  </Location>
65 eab73849 Constantinos Venetsanopoulos
66 eab73849 Constantinos Venetsanopoulos
and before the line containing::
67 eab73849 Constantinos Venetsanopoulos
68 eab73849 Constantinos Venetsanopoulos
  ProxyPass        / http://localhost:8080/ retry=0
69 eab73849 Constantinos Venetsanopoulos
70 eab73849 Constantinos Venetsanopoulos
add::
71 eab73849 Constantinos Venetsanopoulos
72 eab73849 Constantinos Venetsanopoulos
  ProxyPass /Shibboleth.sso !
73 f846d8df Constantinos Venetsanopoulos
74 eab73849 Constantinos Venetsanopoulos
Then, enable the shibboleth module::
75 eab73849 Constantinos Venetsanopoulos
76 eab73849 Constantinos Venetsanopoulos
  a2enmod shib2
77 f846d8df Constantinos Venetsanopoulos
78 eab73849 Constantinos Venetsanopoulos
After passing through the apache module, the following tokens should be
79 eab73849 Constantinos Venetsanopoulos
available at the destination::
80 eab73849 Constantinos Venetsanopoulos
81 eab73849 Constantinos Venetsanopoulos
  eppn # eduPersonPrincipalName
82 eab73849 Constantinos Venetsanopoulos
  Shib-InetOrgPerson-givenName
83 eab73849 Constantinos Venetsanopoulos
  Shib-Person-surname
84 eab73849 Constantinos Venetsanopoulos
  Shib-Person-commonName
85 eab73849 Constantinos Venetsanopoulos
  Shib-InetOrgPerson-displayName
86 eab73849 Constantinos Venetsanopoulos
  Shib-EP-Affiliation
87 eab73849 Constantinos Venetsanopoulos
  Shib-Session-ID
88 eab73849 Constantinos Venetsanopoulos
89 eab73849 Constantinos Venetsanopoulos
Finally, add 'shibboleth' in ``ASTAKOS_IM_MODULES`` list. The variable resides
90 eab73849 Constantinos Venetsanopoulos
inside the file ``/etc/synnefo/20-snf-astakos-app-settings.conf``
91 eab73849 Constantinos Venetsanopoulos
92 eab73849 Constantinos Venetsanopoulos
Architecture
93 eab73849 Constantinos Venetsanopoulos
------------
94 eab73849 Constantinos Venetsanopoulos
95 eab73849 Constantinos Venetsanopoulos
Prereqs
96 eab73849 Constantinos Venetsanopoulos
-------
97 eab73849 Constantinos Venetsanopoulos
98 eab73849 Constantinos Venetsanopoulos
Installation
99 eab73849 Constantinos Venetsanopoulos
------------
100 eab73849 Constantinos Venetsanopoulos
101 eab73849 Constantinos Venetsanopoulos
Configuration
102 eab73849 Constantinos Venetsanopoulos
-------------
103 eab73849 Constantinos Venetsanopoulos
104 eab73849 Constantinos Venetsanopoulos
Working with Astakos
105 eab73849 Constantinos Venetsanopoulos
--------------------
106 eab73849 Constantinos Venetsanopoulos
107 eab73849 Constantinos Venetsanopoulos
User activation methods
108 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~
109 f846d8df Constantinos Venetsanopoulos
110 f846d8df Constantinos Venetsanopoulos
When a new user signs up, he/she is not marked as active. You can see his/her
111 f846d8df Constantinos Venetsanopoulos
state by running (on the machine that runs the Astakos app):
112 f846d8df Constantinos Venetsanopoulos
113 f846d8df Constantinos Venetsanopoulos
.. code-block:: console
114 f846d8df Constantinos Venetsanopoulos
115 4404e02e Ilias Tsitsimpis
   $ snf-manage user-list
116 f846d8df Constantinos Venetsanopoulos
117 f846d8df Constantinos Venetsanopoulos
There are two different ways to activate a new user. Both need access to a
118 4404e02e Ilias Tsitsimpis
running :ref:`mail server <mail-server>`.
119 f846d8df Constantinos Venetsanopoulos
120 f846d8df Constantinos Venetsanopoulos
Manual activation
121 eab73849 Constantinos Venetsanopoulos
`````````````````
122 f846d8df Constantinos Venetsanopoulos
123 f846d8df Constantinos Venetsanopoulos
You can manually activate a new user that has already signed up, by sending
124 f846d8df Constantinos Venetsanopoulos
him/her an activation email. The email will contain an approriate activation
125 f846d8df Constantinos Venetsanopoulos
link, which will complete the activation process if followed. You can send the
126 f846d8df Constantinos Venetsanopoulos
email by running:
127 f846d8df Constantinos Venetsanopoulos
128 f846d8df Constantinos Venetsanopoulos
.. code-block:: console
129 f846d8df Constantinos Venetsanopoulos
130 4404e02e Ilias Tsitsimpis
   $ snf-manage user-activation-send <user ID or email>
131 f846d8df Constantinos Venetsanopoulos
132 eab73849 Constantinos Venetsanopoulos
Be sure to have already setup your mail server and defined it in your Synnefo
133 f846d8df Constantinos Venetsanopoulos
settings, before running the command.
134 f846d8df Constantinos Venetsanopoulos
135 f846d8df Constantinos Venetsanopoulos
Automatic activation
136 eab73849 Constantinos Venetsanopoulos
````````````````````
137 eab73849 Constantinos Venetsanopoulos
138 eab73849 Constantinos Venetsanopoulos
FIXME: Describe Regex activation method
139 eab73849 Constantinos Venetsanopoulos
140 2988ae31 Georgios D. Tsoukalas
Setting quota limits
141 2988ae31 Georgios D. Tsoukalas
~~~~~~~~~~~~~~~~~~~~
142 2988ae31 Georgios D. Tsoukalas
143 075b91de Giorgos Korfiatis
Set default quota
144 075b91de Giorgos Korfiatis
`````````````````
145 2988ae31 Georgios D. Tsoukalas
146 2988ae31 Georgios D. Tsoukalas
In 20-snf-astakos-app-settings.conf, 
147 2988ae31 Georgios D. Tsoukalas
uncomment the default setting ``ASTAKOS_SERVICES``
148 2988ae31 Georgios D. Tsoukalas
and customize the ``'uplimit'`` values.
149 075b91de Giorgos Korfiatis
These are the default base quota for all users.
150 2988ae31 Georgios D. Tsoukalas
151 2988ae31 Georgios D. Tsoukalas
To apply your configuration run::
152 2988ae31 Georgios D. Tsoukalas
153 2988ae31 Georgios D. Tsoukalas
    # snf-manage astakos-init --load-service-resources
154 075b91de Giorgos Korfiatis
    # snf-manage quota --sync
155 2988ae31 Georgios D. Tsoukalas
156 075b91de Giorgos Korfiatis
Set base quota for individual users
157 075b91de Giorgos Korfiatis
```````````````````````````````````
158 2988ae31 Georgios D. Tsoukalas
159 075b91de Giorgos Korfiatis
For individual users that need different quota than the default
160 2988ae31 Georgios D. Tsoukalas
you can set it for each resource like this::
161 2988ae31 Georgios D. Tsoukalas
162 075b91de Giorgos Korfiatis
    # use this to display quota / uuid
163 075b91de Giorgos Korfiatis
    # snf-manage user-show 'uuid or email' --quota
164 2988ae31 Georgios D. Tsoukalas
165 075b91de Giorgos Korfiatis
    # snf-manage user-modify 'user-uuid' --set-base-quota 'cyclades.vm' 10
166 2988ae31 Georgios D. Tsoukalas
167 2988ae31 Georgios D. Tsoukalas
168 2988ae31 Georgios D. Tsoukalas
Enable the Projects feature
169 2988ae31 Georgios D. Tsoukalas
~~~~~~~~~~~~~~~~~~~~~~~~~~~
170 2988ae31 Georgios D. Tsoukalas
171 2988ae31 Georgios D. Tsoukalas
If you want to enable the projects feature so that users may apply
172 2988ae31 Georgios D. Tsoukalas
on their own for resources by creating and joining projects,
173 2988ae31 Georgios D. Tsoukalas
in ``20-snf-astakos-app-settings.conf`` set::
174 2988ae31 Georgios D. Tsoukalas
175 2988ae31 Georgios D. Tsoukalas
    # this will make the 'projects' page visible in the dashboard
176 2988ae31 Georgios D. Tsoukalas
    ASTAKOS_PROJECTS_VISIBLE = True
177 2988ae31 Georgios D. Tsoukalas
178 9770ba6c Giorgos Korfiatis
You can change the maximum allowed number of pending project applications
179 9770ba6c Giorgos Korfiatis
per user with::
180 827de879 Giorgos Korfiatis
181 9770ba6c Giorgos Korfiatis
    # snf-manage resource-modify astakos.pending_app --limit <number>
182 9770ba6c Giorgos Korfiatis
183 9770ba6c Giorgos Korfiatis
You can also set a user-specific limit with::
184 9770ba6c Giorgos Korfiatis
185 075b91de Giorgos Korfiatis
    # snf-manage user-modify 'user-uuid' --set-base-quota 'astakos.pending_app' 5
186 827de879 Giorgos Korfiatis
187 2988ae31 Georgios D. Tsoukalas
When users apply for projects they are not automatically granted
188 2988ae31 Georgios D. Tsoukalas
the resources. They must first be approved by the administrator.
189 2988ae31 Georgios D. Tsoukalas
190 2988ae31 Georgios D. Tsoukalas
To list pending project applications in astakos::
191 2988ae31 Georgios D. Tsoukalas
192 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-list --pending
193 2988ae31 Georgios D. Tsoukalas
194 2988ae31 Georgios D. Tsoukalas
Note the last column, the application id. To approve it::
195 2988ae31 Georgios D. Tsoukalas
196 2988ae31 Georgios D. Tsoukalas
    # <app id> from the last column of project-list
197 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-control --approve <app id>
198 2988ae31 Georgios D. Tsoukalas
199 2988ae31 Georgios D. Tsoukalas
To deny an application::
200 2988ae31 Georgios D. Tsoukalas
201 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-control --deny <app id>
202 2988ae31 Georgios D. Tsoukalas
203 827de879 Giorgos Korfiatis
Users designated as *project admins* can approve, deny, or modify
204 827de879 Giorgos Korfiatis
an application through the web interface. In
205 827de879 Giorgos Korfiatis
``20-snf-astakos-app-settings.conf`` set::
206 827de879 Giorgos Korfiatis
207 827de879 Giorgos Korfiatis
    # UUIDs of users that can approve or deny project applications from the web.
208 827de879 Giorgos Korfiatis
    ASTAKOS_PROJECT_ADMINS = [<uuid>, ...]
209 2988ae31 Georgios D. Tsoukalas
210 2988ae31 Georgios D. Tsoukalas
211 eab73849 Constantinos Venetsanopoulos
Astakos advanced operations
212 eab73849 Constantinos Venetsanopoulos
---------------------------
213 eab73849 Constantinos Venetsanopoulos
214 eab73849 Constantinos Venetsanopoulos
Adding "Terms of Use"
215 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~
216 eab73849 Constantinos Venetsanopoulos
217 eab73849 Constantinos Venetsanopoulos
Astakos supports versioned terms-of-use. First of all you need to create an
218 eab73849 Constantinos Venetsanopoulos
html file that will contain your terms. For example, create the file
219 eab73849 Constantinos Venetsanopoulos
``/usr/share/synnefo/sample-terms.html``, which contains the following:
220 eab73849 Constantinos Venetsanopoulos
221 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
222 eab73849 Constantinos Venetsanopoulos
223 eab73849 Constantinos Venetsanopoulos
   <h1>~okeanos terms</h1>
224 eab73849 Constantinos Venetsanopoulos
225 eab73849 Constantinos Venetsanopoulos
   These are the example terms for ~okeanos
226 eab73849 Constantinos Venetsanopoulos
227 eab73849 Constantinos Venetsanopoulos
Then, add those terms-of-use with the snf-manage command:
228 eab73849 Constantinos Venetsanopoulos
229 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
230 eab73849 Constantinos Venetsanopoulos
231 eab73849 Constantinos Venetsanopoulos
   $ snf-manage term-add /usr/share/synnefo/sample-terms.html
232 eab73849 Constantinos Venetsanopoulos
233 eab73849 Constantinos Venetsanopoulos
Your terms have been successfully added and you will see the corresponding link
234 eab73849 Constantinos Venetsanopoulos
appearing in the Astakos web pages' footer.
235 eab73849 Constantinos Venetsanopoulos
236 a23251f4 Constantinos Venetsanopoulos
Enabling reCAPTCHA
237 a23251f4 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~
238 a23251f4 Constantinos Venetsanopoulos
239 a23251f4 Constantinos Venetsanopoulos
Astakos supports the `reCAPTCHA <http://www.google.com/recaptcha>`_ feature.
240 a23251f4 Constantinos Venetsanopoulos
If enabled, it protects the Astakos forms from bots. To enable the feature, go
241 a23251f4 Constantinos Venetsanopoulos
to https://www.google.com/recaptcha/admin/create and create your own reCAPTCHA
242 a23251f4 Constantinos Venetsanopoulos
key pair. Then edit ``/etc/synnefo/20-snf-astakos-app-settings.conf`` and set
243 a23251f4 Constantinos Venetsanopoulos
the corresponding variables to reflect your newly created key pair. Finally, set
244 a23251f4 Constantinos Venetsanopoulos
the ``ASTAKOS_RECAPTCHA_ENABLED`` variable to ``True``:
245 a23251f4 Constantinos Venetsanopoulos
246 a23251f4 Constantinos Venetsanopoulos
.. code-block:: console
247 a23251f4 Constantinos Venetsanopoulos
248 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PUBLIC_KEY = 'example_recaptcha_public_key!@#$%^&*('
249 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PRIVATE_KEY = 'example_recaptcha_private_key!@#$%^&*('
250 a23251f4 Constantinos Venetsanopoulos
251 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_ENABLED = True
252 a23251f4 Constantinos Venetsanopoulos
253 a23251f4 Constantinos Venetsanopoulos
Restart the service on the Astakos node(s) and you are ready:
254 a23251f4 Constantinos Venetsanopoulos
255 a23251f4 Constantinos Venetsanopoulos
.. code-block:: console
256 a23251f4 Constantinos Venetsanopoulos
257 a23251f4 Constantinos Venetsanopoulos
   # /etc/init.d/gunicorn restart
258 a23251f4 Constantinos Venetsanopoulos
259 a23251f4 Constantinos Venetsanopoulos
Checkout your new Sign up page. If you see the reCAPTCHA box, you have setup
260 a23251f4 Constantinos Venetsanopoulos
everything correctly.
261 a23251f4 Constantinos Venetsanopoulos
262 eab73849 Constantinos Venetsanopoulos
263 eab73849 Constantinos Venetsanopoulos
264 eab73849 Constantinos Venetsanopoulos
File Storage Service (Pithos)
265 eab73849 Constantinos Venetsanopoulos
=============================
266 eab73849 Constantinos Venetsanopoulos
267 eab73849 Constantinos Venetsanopoulos
Overview
268 eab73849 Constantinos Venetsanopoulos
--------
269 eab73849 Constantinos Venetsanopoulos
270 eab73849 Constantinos Venetsanopoulos
Architecture
271 eab73849 Constantinos Venetsanopoulos
------------
272 eab73849 Constantinos Venetsanopoulos
273 eab73849 Constantinos Venetsanopoulos
Prereqs
274 eab73849 Constantinos Venetsanopoulos
-------
275 eab73849 Constantinos Venetsanopoulos
276 eab73849 Constantinos Venetsanopoulos
Installation
277 eab73849 Constantinos Venetsanopoulos
------------
278 eab73849 Constantinos Venetsanopoulos
279 eab73849 Constantinos Venetsanopoulos
Configuration
280 eab73849 Constantinos Venetsanopoulos
-------------
281 eab73849 Constantinos Venetsanopoulos
282 eab73849 Constantinos Venetsanopoulos
Working with Pithos
283 eab73849 Constantinos Venetsanopoulos
-------------------
284 eab73849 Constantinos Venetsanopoulos
285 eab73849 Constantinos Venetsanopoulos
Pithos advanced operations
286 eab73849 Constantinos Venetsanopoulos
--------------------------
287 eab73849 Constantinos Venetsanopoulos
288 eab73849 Constantinos Venetsanopoulos
289 eab73849 Constantinos Venetsanopoulos
290 eab73849 Constantinos Venetsanopoulos
Compute/Network/Image Service (Cyclades)
291 eab73849 Constantinos Venetsanopoulos
========================================
292 eab73849 Constantinos Venetsanopoulos
293 eab73849 Constantinos Venetsanopoulos
Compute Overview
294 eab73849 Constantinos Venetsanopoulos
----------------
295 eab73849 Constantinos Venetsanopoulos
296 eab73849 Constantinos Venetsanopoulos
Network Overview
297 eab73849 Constantinos Venetsanopoulos
----------------
298 eab73849 Constantinos Venetsanopoulos
299 eab73849 Constantinos Venetsanopoulos
Image Overview
300 eab73849 Constantinos Venetsanopoulos
--------------
301 eab73849 Constantinos Venetsanopoulos
302 eab73849 Constantinos Venetsanopoulos
Architecture
303 eab73849 Constantinos Venetsanopoulos
------------
304 eab73849 Constantinos Venetsanopoulos
305 b9fd8ed3 Christos Stavrakakis
Asynchronous communication with Ganeti backends
306 90c74332 Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
307 a1c707c9 Constantinos Venetsanopoulos
Synnefo uses Google Ganeti backends for VM cluster management. In order for
308 a1c707c9 Constantinos Venetsanopoulos
Cyclades to be able to handle thousands of user requests, Cyclades and Ganeti
309 a1c707c9 Constantinos Venetsanopoulos
communicate asynchronously. Briefly, requests are submitted to Ganeti through
310 a1c707c9 Constantinos Venetsanopoulos
Ganeti's RAPI/HTTP interface, and then asynchronous notifications about the
311 a1c707c9 Constantinos Venetsanopoulos
progress of Ganeti jobs are being created and pushed upwards to Cyclades. The
312 a1c707c9 Constantinos Venetsanopoulos
architecture and communication with a Ganeti backend is shown in the graph
313 a1c707c9 Constantinos Venetsanopoulos
below:
314 9b659162 Christos Stavrakakis
315 9b659162 Christos Stavrakakis
.. image:: images/cyclades-ganeti-communication.png
316 9b659162 Christos Stavrakakis
   :width: 50%
317 9b659162 Christos Stavrakakis
   :target: _images/cyclades-ganeti-communication.png
318 b9fd8ed3 Christos Stavrakakis
319 a1c707c9 Constantinos Venetsanopoulos
The Cyclades API server is responsible for handling user requests. Read-only
320 b9fd8ed3 Christos Stavrakakis
requests are directly served by looking up the Cyclades DB. If the request
321 b9fd8ed3 Christos Stavrakakis
needs an action in the Ganeti backend, Cyclades submit jobs to the Ganeti
322 a1c707c9 Constantinos Venetsanopoulos
master using the `Ganeti RAPI interface
323 a1c707c9 Constantinos Venetsanopoulos
<http://docs.ganeti.org/ganeti/2.2/html/rapi.html>`_.
324 b9fd8ed3 Christos Stavrakakis
325 a1c707c9 Constantinos Venetsanopoulos
While Ganeti executes the job, `snf-ganeti-eventd`, `snf-ganeti-hook` and
326 a1c707c9 Constantinos Venetsanopoulos
`snf-progress-monitor` are monitoring the progress of the job and send
327 c84d78c8 Christos Stavrakakis
corresponding messages to the RabbitMQ servers. These components are part
328 a1c707c9 Constantinos Venetsanopoulos
of `snf-cyclades-gtools` and must be installed on all Ganeti nodes. Specially:
329 b9fd8ed3 Christos Stavrakakis
330 b9fd8ed3 Christos Stavrakakis
* *snf-ganeti-eventd* sends messages about operations affecting the operating
331 a1c707c9 Constantinos Venetsanopoulos
  state of instances and networks. Works by monitoring the Ganeti job queue.
332 a1c707c9 Constantinos Venetsanopoulos
* *snf-ganeti_hook* sends messages about the NICs of instances. It includes a
333 90c74332 Christos Stavrakakis
  number of `Ganeti hooks <http://docs.ganeti.org/ganeti/2.2/html/hooks.html>`_
334 90c74332 Christos Stavrakakis
  for customisation of operations.
335 a1c707c9 Constantinos Venetsanopoulos
* *snf-progress_monitor* sends messages about the progress of the Image deployment
336 a1c707c9 Constantinos Venetsanopoulos
  phase which is done by the Ganeti OS Definition `snf-image`.
337 b9fd8ed3 Christos Stavrakakis
338 a1c707c9 Constantinos Venetsanopoulos
Finally, `snf-dispatcher` consumes messages from the RabbitMQ queues, processes
339 a1c707c9 Constantinos Venetsanopoulos
these messages and properly updates the state of the Cyclades DB. Subsequent
340 a1c707c9 Constantinos Venetsanopoulos
requests to the Cyclades API, will retrieve the updated state from the DB.
341 b9fd8ed3 Christos Stavrakakis
342 b9fd8ed3 Christos Stavrakakis
343 eab73849 Constantinos Venetsanopoulos
Prereqs
344 eab73849 Constantinos Venetsanopoulos
-------
345 eab73849 Constantinos Venetsanopoulos
346 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
347 c84d78c8 Christos Stavrakakis
348 eab73849 Constantinos Venetsanopoulos
Installation
349 eab73849 Constantinos Venetsanopoulos
------------
350 eab73849 Constantinos Venetsanopoulos
351 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
352 c84d78c8 Christos Stavrakakis
353 eab73849 Constantinos Venetsanopoulos
Configuration
354 eab73849 Constantinos Venetsanopoulos
-------------
355 eab73849 Constantinos Venetsanopoulos
356 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
357 c84d78c8 Christos Stavrakakis
358 eab73849 Constantinos Venetsanopoulos
Working with Cyclades
359 eab73849 Constantinos Venetsanopoulos
---------------------
360 eab73849 Constantinos Venetsanopoulos
361 0768a1df Christos Stavrakakis
Managing Ganeti Backends
362 90c74332 Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~
363 0768a1df Christos Stavrakakis
364 a1c707c9 Constantinos Venetsanopoulos
Since v0.11, Synnefo is able to manage multiple Ganeti clusters (backends)
365 a1c707c9 Constantinos Venetsanopoulos
making it capable to scale linearly to tens of thousands of VMs. Backends
366 a1c707c9 Constantinos Venetsanopoulos
can be dynamically added or removed via `snf-manage` commands.
367 0768a1df Christos Stavrakakis
368 a1c707c9 Constantinos Venetsanopoulos
Each newly created VM is allocated to a Ganeti backend by the Cyclades backend
369 a1c707c9 Constantinos Venetsanopoulos
allocator. The VM is "pinned" to this backend, and can not change through its
370 a1c707c9 Constantinos Venetsanopoulos
lifetime. The backend allocator decides in which backend to spawn the VM based
371 a1c707c9 Constantinos Venetsanopoulos
on the available resources of each backend, trying to balance the load between
372 a1c707c9 Constantinos Venetsanopoulos
them.
373 0768a1df Christos Stavrakakis
374 0768a1df Christos Stavrakakis
Handling of Networks, as far as backends are concerned, is based on whether the
375 a1c707c9 Constantinos Venetsanopoulos
network is public or not. Public networks are created through the `snf-manage
376 a1c707c9 Constantinos Venetsanopoulos
network-create` command, and are only created on one backend. Private networks
377 a1c707c9 Constantinos Venetsanopoulos
are created on all backends, in order to ensure that VMs residing on different
378 a1c707c9 Constantinos Venetsanopoulos
backends can be connected to the same private network.
379 0768a1df Christos Stavrakakis
380 a1c707c9 Constantinos Venetsanopoulos
Listing existing backends
381 a1c707c9 Constantinos Venetsanopoulos
`````````````````````````
382 a1c707c9 Constantinos Venetsanopoulos
To list all the Ganeti backends known to Synnefo, we run:
383 90c74332 Christos Stavrakakis
384 0768a1df Christos Stavrakakis
.. code-block:: console
385 0768a1df Christos Stavrakakis
386 0768a1df Christos Stavrakakis
   $ snf-manage backend-list
387 0768a1df Christos Stavrakakis
388 0768a1df Christos Stavrakakis
Adding a new Ganeti backend
389 90c74332 Christos Stavrakakis
```````````````````````````
390 0768a1df Christos Stavrakakis
Backends are dynamically added under the control of Synnefo with `snf-manage
391 0768a1df Christos Stavrakakis
backend-add` command. In this section it is assumed that a Ganeti cluster,
392 a1c707c9 Constantinos Venetsanopoulos
named ``cluster.example.com`` is already up and running and configured to be
393 a1c707c9 Constantinos Venetsanopoulos
able to host Synnefo VMs.
394 0768a1df Christos Stavrakakis
395 a1c707c9 Constantinos Venetsanopoulos
To add this Ganeti cluster, we run:
396 90c74332 Christos Stavrakakis
397 0768a1df Christos Stavrakakis
.. code-block:: console
398 0768a1df Christos Stavrakakis
399 0768a1df Christos Stavrakakis
   $ snf-manage backend-add --clustername=cluster.example.com --user="synnefo_user" --pass="synnefo_pass"
400 0768a1df Christos Stavrakakis
401 46ccbcb9 Christos Stavrakakis
where ``clustername`` is the Cluster hostname of the Ganeti cluster, and
402 46ccbcb9 Christos Stavrakakis
``user`` and ``pass`` are the credentials for the `Ganeti RAPI user
403 46ccbcb9 Christos Stavrakakis
<http://docs.ganeti.org/ganeti/2.2/html/rapi.html#users-and-passwords>`_.  All
404 46ccbcb9 Christos Stavrakakis
backend attributes can be also changed dynamically using the `snf-manage
405 46ccbcb9 Christos Stavrakakis
backend-modify` command.
406 0768a1df Christos Stavrakakis
407 a1c707c9 Constantinos Venetsanopoulos
``snf-manage backend-add`` will also create all existing private networks to
408 a1c707c9 Constantinos Venetsanopoulos
the new backend. You can verify that the backend is added, by running
409 a1c707c9 Constantinos Venetsanopoulos
`snf-manage backend-list`.
410 0768a1df Christos Stavrakakis
411 a1c707c9 Constantinos Venetsanopoulos
Note that no VMs will be spawned to this backend, since by default it is in a
412 a1c707c9 Constantinos Venetsanopoulos
``drained`` state after addition and also it has no public network assigned to
413 a1c707c9 Constantinos Venetsanopoulos
it.
414 a1c707c9 Constantinos Venetsanopoulos
415 a1c707c9 Constantinos Venetsanopoulos
So, first you need to create its public network, make sure everything works as
416 a1c707c9 Constantinos Venetsanopoulos
expected and finally make it active by un-setting the ``drained`` flag. You can
417 a1c707c9 Constantinos Venetsanopoulos
do this by running:
418 a1c707c9 Constantinos Venetsanopoulos
419 a1c707c9 Constantinos Venetsanopoulos
.. code-block:: console
420 a1c707c9 Constantinos Venetsanopoulos
421 46ccbcb9 Christos Stavrakakis
   $ snf-manage backend-modify --drained=False <backend_id>
422 0768a1df Christos Stavrakakis
423 0768a1df Christos Stavrakakis
Removing an existing Ganeti backend
424 90c74332 Christos Stavrakakis
```````````````````````````````````
425 a1c707c9 Constantinos Venetsanopoulos
In order to remove an existing backend from Synnefo, we run:
426 90c74332 Christos Stavrakakis
427 0768a1df Christos Stavrakakis
.. code-block:: console
428 0768a1df Christos Stavrakakis
429 a1c707c9 Constantinos Venetsanopoulos
   # snf-manage backend-remove <backend_id>
430 0768a1df Christos Stavrakakis
431 a1c707c9 Constantinos Venetsanopoulos
This command will fail if there are active VMs on the backend. Also, the
432 a1c707c9 Constantinos Venetsanopoulos
backend is not cleaned before removal, so all the Synnefo private networks
433 a1c707c9 Constantinos Venetsanopoulos
will be left on the Ganeti nodes. You need to remove them manually.
434 0768a1df Christos Stavrakakis
435 a1c707c9 Constantinos Venetsanopoulos
Allocation of VMs in Ganeti backends
436 a1c707c9 Constantinos Venetsanopoulos
````````````````````````````````````
437 a1c707c9 Constantinos Venetsanopoulos
As already mentioned, the Cyclades backend allocator is responsible for
438 a1c707c9 Constantinos Venetsanopoulos
allocating new VMs to backends. This allocator does not choose the exact Ganeti
439 a1c707c9 Constantinos Venetsanopoulos
node that will host the VM but just the Ganeti backend. The exact node is
440 a1c707c9 Constantinos Venetsanopoulos
chosen by the Ganeti cluster's allocator (hail).
441 0768a1df Christos Stavrakakis
442 0768a1df Christos Stavrakakis
The decision about which backend will host a VM is based on the available
443 0768a1df Christos Stavrakakis
resources. The allocator computes a score for each backend, that shows its load
444 0768a1df Christos Stavrakakis
factor, and the one with the minimum score is chosen. The admin can exclude
445 a1c707c9 Constantinos Venetsanopoulos
backends from the allocation phase by marking them as ``drained`` by running:
446 90c74332 Christos Stavrakakis
447 0768a1df Christos Stavrakakis
.. code-block:: console
448 0768a1df Christos Stavrakakis
449 46ccbcb9 Christos Stavrakakis
   $ snf-manage backend-modify --drained=True <backend_id>
450 0768a1df Christos Stavrakakis
451 0768a1df Christos Stavrakakis
The backend resources are periodically updated, at a period defined by
452 a1c707c9 Constantinos Venetsanopoulos
the ``BACKEND_REFRESH_MIN`` setting, or by running `snf-manage backend-update-status`
453 0768a1df Christos Stavrakakis
command. It is advised to have a cron job running this command at a smaller
454 a1c707c9 Constantinos Venetsanopoulos
interval than ``BACKEND_REFRESH_MIN`` in order to remove the load of refreshing
455 0768a1df Christos Stavrakakis
the backends stats from the VM creation phase.
456 0768a1df Christos Stavrakakis
457 a1c707c9 Constantinos Venetsanopoulos
Finally, the admin can decide to have a user's VMs being allocated to a
458 a1c707c9 Constantinos Venetsanopoulos
specific backend, with the ``BACKEND_PER_USER`` setting. This is a mapping
459 a1c707c9 Constantinos Venetsanopoulos
between users and backends. If the user is found in ``BACKEND_PER_USER``, then
460 46ccbcb9 Christos Stavrakakis
Synnefo allocates all his/hers VMs to the specific backend in the variable,
461 46ccbcb9 Christos Stavrakakis
even if is marked as drained (useful for testing).
462 0768a1df Christos Stavrakakis
463 9492387a Christos Stavrakakis
464 9492387a Christos Stavrakakis
Managing Virtual Machines
465 9492387a Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~
466 9492387a Christos Stavrakakis
467 a1c707c9 Constantinos Venetsanopoulos
As mentioned, Cyclades uses Ganeti for management of VMs. The administrator can
468 a1c707c9 Constantinos Venetsanopoulos
handle Cyclades VMs just like any other Ganeti instance, via `gnt-instance`
469 a1c707c9 Constantinos Venetsanopoulos
commands. All Ganeti instances that belong to Synnefo, are separated from
470 a1c707c9 Constantinos Venetsanopoulos
others, by a prefix in their names. This prefix is defined in
471 a1c707c9 Constantinos Venetsanopoulos
``BACKEND_PREFIX_ID`` setting in
472 a1c707c9 Constantinos Venetsanopoulos
``/etc/synnefo/20-snf-cyclades-app-backend.conf``.
473 9492387a Christos Stavrakakis
474 a1c707c9 Constantinos Venetsanopoulos
Apart from handling instances directly in the Ganeti level, a number of `snf-manage`
475 9492387a Christos Stavrakakis
commands are available:
476 9492387a Christos Stavrakakis
477 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-list``: List servers
478 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-show``: Show information about a server in the Cyclades DB
479 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-inspect``: Inspect the state of a server both in DB and Ganeti
480 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-modify``: Modify the state of a server in the Cycldes DB
481 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-create``: Create a new server
482 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-import``: Import an existing Ganeti instance to Cyclades
483 9492387a Christos Stavrakakis
484 9492387a Christos Stavrakakis
485 9492387a Christos Stavrakakis
Managing Virtual Networks
486 9492387a Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~
487 9492387a Christos Stavrakakis
488 a1c707c9 Constantinos Venetsanopoulos
Cyclades is able to create and manage Virtual Networks. Networking is
489 a1c707c9 Constantinos Venetsanopoulos
desployment specific and must be customized based on the specific needs of the
490 a1c707c9 Constantinos Venetsanopoulos
system administrator. For better understanding of networking please refer to
491 a1c707c9 Constantinos Venetsanopoulos
the :ref:`Network <networks>` section.
492 a653c059 Christos Stavrakakis
493 a653c059 Christos Stavrakakis
Exactly as Cyclades VMs can be handled like Ganeti instances, Cyclades Networks
494 a653c059 Christos Stavrakakis
can also by handled as Ganeti networks, via `gnt-network commands`. All Ganeti
495 a1c707c9 Constantinos Venetsanopoulos
networks that belong to Synnefo are named with the prefix
496 a653c059 Christos Stavrakakis
`${BACKEND_PREFIX_ID}-net-`.
497 a653c059 Christos Stavrakakis
498 a1c707c9 Constantinos Venetsanopoulos
There are also the following `snf-manage` commands for managing networks:
499 a653c059 Christos Stavrakakis
500 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-list``: List networks
501 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-show``: Show information about a network in the Cyclades DB
502 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-inspect``: Inspect the state of the network in DB and Ganeti backends
503 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-modify``: Modify the state of a network in the Cycldes DB
504 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-create``: Create a new network
505 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-remove``: Remove an existing network
506 a653c059 Christos Stavrakakis
507 9c98c6fc Christos Stavrakakis
Managing Network Resources
508 a1c707c9 Constantinos Venetsanopoulos
``````````````````````````
509 9c98c6fc Christos Stavrakakis
510 a1c707c9 Constantinos Venetsanopoulos
Proper operation of the Cyclades Network Service depends on the unique
511 a1c707c9 Constantinos Venetsanopoulos
assignment of specific resources to each type of virtual network. Specifically,
512 a1c707c9 Constantinos Venetsanopoulos
these resources are:
513 9c98c6fc Christos Stavrakakis
514 a1c707c9 Constantinos Venetsanopoulos
* IP addresses. Cyclades creates a Pool of IPs for each Network, and assigns a
515 a1c707c9 Constantinos Venetsanopoulos
  unique IP address to each VM, thus connecting it to this Network. You can see
516 a1c707c9 Constantinos Venetsanopoulos
  the IP pool of each network by running `snf-manage network-inspect
517 a1c707c9 Constantinos Venetsanopoulos
  <network_ID>`. IP pools are automatically created and managed by Cyclades,
518 a1c707c9 Constantinos Venetsanopoulos
  depending on the subnet of the Network.
519 9492387a Christos Stavrakakis
* Bridges corresponding to physical VLANs, which are required for networks of
520 a1c707c9 Constantinos Venetsanopoulos
  type `PRIVATE_PHYSICAL_VLAN`.
521 a1c707c9 Constantinos Venetsanopoulos
* One Bridge corresponding to one physical VLAN which is required for networks of
522 a1c707c9 Constantinos Venetsanopoulos
  type `PRIVATE_MAC_PREFIX`.
523 9c98c6fc Christos Stavrakakis
524 a1c707c9 Constantinos Venetsanopoulos
Cyclades allocates those resources from pools that are created by the
525 a1c707c9 Constantinos Venetsanopoulos
administrator with the `snf-manage pool-create` management command.
526 9c98c6fc Christos Stavrakakis
527 a1c707c9 Constantinos Venetsanopoulos
Pool Creation
528 a1c707c9 Constantinos Venetsanopoulos
`````````````
529 a1c707c9 Constantinos Venetsanopoulos
Pools are created using the `snf-manage pool-create` command:
530 90c74332 Christos Stavrakakis
531 9c98c6fc Christos Stavrakakis
.. code-block:: console
532 9c98c6fc Christos Stavrakakis
533 9c98c6fc Christos Stavrakakis
   # snf-manage pool-create --type=bridge --base=prv --size=20
534 9c98c6fc Christos Stavrakakis
535 9c98c6fc Christos Stavrakakis
will create a pool of bridges, containing bridges prv1, prv2,..prv21.
536 9c98c6fc Christos Stavrakakis
537 9c98c6fc Christos Stavrakakis
You can verify the creation of the pool, and check its contents by running:
538 90c74332 Christos Stavrakakis
539 9c98c6fc Christos Stavrakakis
.. code-block:: console
540 9c98c6fc Christos Stavrakakis
541 9c98c6fc Christos Stavrakakis
   # snf-manage pool-list
542 9c98c6fc Christos Stavrakakis
   # snf-manage pool-show --type=bridge 1
543 9c98c6fc Christos Stavrakakis
544 a1c707c9 Constantinos Venetsanopoulos
With the same commands you can handle a pool of MAC prefixes. For example:
545 90c74332 Christos Stavrakakis
546 9c98c6fc Christos Stavrakakis
.. code-block:: console
547 9c98c6fc Christos Stavrakakis
548 9c98c6fc Christos Stavrakakis
   # snf-manage pool-create --type=mac-prefix --base=aa:00:0 --size=65536
549 9c98c6fc Christos Stavrakakis
550 a1c707c9 Constantinos Venetsanopoulos
will create a pool of MAC prefixes from ``aa:00:1`` to ``b9:ff:f``. The MAC
551 a1c707c9 Constantinos Venetsanopoulos
prefix pool is responsible for providing only unicast and locally administered
552 a1c707c9 Constantinos Venetsanopoulos
MAC addresses, so many of these prefixes will be externally reserved, to
553 a1c707c9 Constantinos Venetsanopoulos
exclude from allocation.
554 0768a1df Christos Stavrakakis
555 eab73849 Constantinos Venetsanopoulos
Cyclades advanced operations
556 eab73849 Constantinos Venetsanopoulos
----------------------------
557 eab73849 Constantinos Venetsanopoulos
558 eab73849 Constantinos Venetsanopoulos
Reconciliation mechanism
559 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~
560 a1c707c9 Constantinos Venetsanopoulos
561 06e23415 Christos Stavrakakis
On certain occasions, such as a Ganeti or RabbitMQ failure, the state of
562 06e23415 Christos Stavrakakis
Cyclades database may differ from the real state of VMs and networks in the
563 06e23415 Christos Stavrakakis
Ganeti backends. The reconciliation process is designed to synchronize
564 06e23415 Christos Stavrakakis
the state of the Cyclades DB with Ganeti. There are two management commands
565 06e23415 Christos Stavrakakis
for reconciling VMs and Networks
566 06e23415 Christos Stavrakakis
567 a1c707c9 Constantinos Venetsanopoulos
Reconciling Virtual Machines
568 a1c707c9 Constantinos Venetsanopoulos
````````````````````````````
569 a1c707c9 Constantinos Venetsanopoulos
570 06e23415 Christos Stavrakakis
Reconciliation of VMs detects the following conditions:
571 a1c707c9 Constantinos Venetsanopoulos
572 eab73849 Constantinos Venetsanopoulos
 * Stale DB servers without corresponding Ganeti instances
573 eab73849 Constantinos Venetsanopoulos
 * Orphan Ganeti instances, without corresponding DB entries
574 06e23415 Christos Stavrakakis
 * Out-of-sync state for DB entries wrt to Ganeti instances
575 eab73849 Constantinos Venetsanopoulos
576 06e23415 Christos Stavrakakis
To detect all inconsistencies you can just run:
577 90c74332 Christos Stavrakakis
578 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
579 a1c707c9 Constantinos Venetsanopoulos
580 a1c707c9 Constantinos Venetsanopoulos
  $ snf-manage reconcile-servers
581 eab73849 Constantinos Venetsanopoulos
582 06e23415 Christos Stavrakakis
Adding the `--fix-all` option, will do the actual synchronization:
583 90c74332 Christos Stavrakakis
584 06e23415 Christos Stavrakakis
.. code-block:: console
585 a1c707c9 Constantinos Venetsanopoulos
586 a1c707c9 Constantinos Venetsanopoulos
  $ snf-manage reconcile --fix-all
587 eab73849 Constantinos Venetsanopoulos
588 eab73849 Constantinos Venetsanopoulos
Please see ``snf-manage reconcile --help`` for all the details.
589 eab73849 Constantinos Venetsanopoulos
590 eab73849 Constantinos Venetsanopoulos
591 06e23415 Christos Stavrakakis
Reconciling Networks
592 90c74332 Christos Stavrakakis
````````````````````
593 a1c707c9 Constantinos Venetsanopoulos
594 06e23415 Christos Stavrakakis
Reconciliation of Networks detects the following conditions:
595 a1c707c9 Constantinos Venetsanopoulos
596 06e23415 Christos Stavrakakis
  * Stale DB networks without corresponding Ganeti networks
597 06e23415 Christos Stavrakakis
  * Orphan Ganeti networks, without corresponding DB entries
598 06e23415 Christos Stavrakakis
  * Private networks that are not created to all Ganeti backends
599 06e23415 Christos Stavrakakis
  * Unsynchronized IP pools
600 06e23415 Christos Stavrakakis
601 06e23415 Christos Stavrakakis
To detect all inconsistencies you can just run:
602 90c74332 Christos Stavrakakis
603 06e23415 Christos Stavrakakis
.. code-block:: console
604 a1c707c9 Constantinos Venetsanopoulos
605 06e23415 Christos Stavrakakis
  $ snf-manage reconcile-networks
606 06e23415 Christos Stavrakakis
607 06e23415 Christos Stavrakakis
Adding the `--fix-all` option, will do the actual synchronization:
608 90c74332 Christos Stavrakakis
609 06e23415 Christos Stavrakakis
.. code-block:: console
610 a1c707c9 Constantinos Venetsanopoulos
611 06e23415 Christos Stavrakakis
  $ snf-manage reconcile-networks --fix-all
612 06e23415 Christos Stavrakakis
613 06e23415 Christos Stavrakakis
Please see ``snf-manage reconcile-networks --help`` for all the details.
614 eab73849 Constantinos Venetsanopoulos
615 eab73849 Constantinos Venetsanopoulos
616 a1c707c9 Constantinos Venetsanopoulos
617 eab73849 Constantinos Venetsanopoulos
Block Storage Service (Archipelago)
618 eab73849 Constantinos Venetsanopoulos
===================================
619 eab73849 Constantinos Venetsanopoulos
620 eab73849 Constantinos Venetsanopoulos
Overview
621 eab73849 Constantinos Venetsanopoulos
--------
622 5226b38f Filippos Giannakos
Archipelago offers Copy-On-Write snapshotable volumes. Pithos images can be used
623 5226b38f Filippos Giannakos
to provision a volume with Copy-On-Write semantics (i.e. a clone). Snapshots
624 5226b38f Filippos Giannakos
offer a unique deduplicated image of a volume, that reflects the volume state
625 5226b38f Filippos Giannakos
during snapshot creation and are indistinguishable from a Pithos image.
626 5226b38f Filippos Giannakos
627 5226b38f Filippos Giannakos
Archipelago is used by Cyclades and Ganeti for fast provisioning of VMs based on
628 4bb29566 Filippos Giannakos
CoW volumes. Moreover, it enables live migration of thinly-provisioned VMs with
629 4bb29566 Filippos Giannakos
no physically shared storage.
630 eab73849 Constantinos Venetsanopoulos
631 301294a9 Constantinos Venetsanopoulos
Archipelago Architecture
632 301294a9 Constantinos Venetsanopoulos
------------------------
633 301294a9 Constantinos Venetsanopoulos
634 e3f3abdc Filippos Giannakos
.. image:: images/archipelago-architecture.png
635 e3f3abdc Filippos Giannakos
   :width: 50%
636 e3f3abdc Filippos Giannakos
   :target: _images/archipelago-architecture.png
637 eab73849 Constantinos Venetsanopoulos
638 301294a9 Constantinos Venetsanopoulos
.. _syn+archip+rados:
639 301294a9 Constantinos Venetsanopoulos
640 301294a9 Constantinos Venetsanopoulos
Overview of Synnefo + Archipelago + RADOS
641 301294a9 Constantinos Venetsanopoulos
-----------------------------------------
642 301294a9 Constantinos Venetsanopoulos
643 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch3.png
644 301294a9 Constantinos Venetsanopoulos
   :width: 100%
645 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch3.png
646 301294a9 Constantinos Venetsanopoulos
647 eab73849 Constantinos Venetsanopoulos
Prereqs
648 eab73849 Constantinos Venetsanopoulos
-------
649 301294a9 Constantinos Venetsanopoulos
650 902d661c Filippos Giannakos
The administrator must initialize the storage backend where archipelago volume
651 902d661c Filippos Giannakos
blocks will reside.
652 902d661c Filippos Giannakos
653 902d661c Filippos Giannakos
In case of a files backend, the administrator must create two directories. One
654 902d661c Filippos Giannakos
for the archipelago data blocks and one for the archipelago map blocks. These
655 902d661c Filippos Giannakos
should probably be over shared storage to enable sharing archipelago volumes
656 902d661c Filippos Giannakos
between multiple nodes. He or she, must also be able to supply a directory where
657 902d661c Filippos Giannakos
the pithos data and map blocks reside.
658 902d661c Filippos Giannakos
659 902d661c Filippos Giannakos
In case of a RADOS backend, the administrator must create two rados pools, one
660 902d661c Filippos Giannakos
for data blocks, and one for the map blocks. These pools, must be the same pools
661 902d661c Filippos Giannakos
used in pithos, in order to enable volume creation based on pithos images.
662 902d661c Filippos Giannakos
663 eab73849 Constantinos Venetsanopoulos
Installation
664 eab73849 Constantinos Venetsanopoulos
------------
665 301294a9 Constantinos Venetsanopoulos
666 902d661c Filippos Giannakos
Archipelago consists of
667 902d661c Filippos Giannakos
668 902d661c Filippos Giannakos
* ``libxseg0``: libxseg used to communicate over shared memory segments
669 5226b38f Filippos Giannakos
* ``python-xseg``: python bindings for libxseg
670 902d661c Filippos Giannakos
* ``archipelago-kernel-dkms``: contains archipelago kernel modules to provide
671 902d661c Filippos Giannakos
  block devices to be used as vm disks
672 5226b38f Filippos Giannakos
* ``python-archipelago``: archipelago python module. Includes archipelago and
673 5226b38f Filippos Giannakos
  vlmc functionality.
674 902d661c Filippos Giannakos
* ``archipelago``: user space tools and peers for the archipelago management and
675 902d661c Filippos Giannakos
  volume composition
676 902d661c Filippos Giannakos
* ``archipelago-ganeti``: ganeti ext storage scripts, that enable ganeti to
677 902d661c Filippos Giannakos
  provision VMs over archipelago
678 902d661c Filippos Giannakos
679 902d661c Filippos Giannakos
Performing
680 902d661c Filippos Giannakos
681 902d661c Filippos Giannakos
.. code-block:: console
682 902d661c Filippos Giannakos
683 902d661c Filippos Giannakos
  $ apt-get install archipelago-ganeti 
684 902d661c Filippos Giannakos
685 902d661c Filippos Giannakos
should fetch all the required packages and get you up 'n going with archipelago
686 902d661c Filippos Giannakos
687 902d661c Filippos Giannakos
Bare in mind, that custom librados is required, which is provided in the apt
688 5226b38f Filippos Giannakos
repo of GRNet.
689 902d661c Filippos Giannakos
690 902d661c Filippos Giannakos
691 5226b38f Filippos Giannakos
For now, librados is a dependency of archipelago, even if you do not intend to
692 5226b38f Filippos Giannakos
use archipelago over RADOS.
693 eab73849 Constantinos Venetsanopoulos
694 eab73849 Constantinos Venetsanopoulos
Configuration
695 eab73849 Constantinos Venetsanopoulos
-------------
696 902d661c Filippos Giannakos
Archipelago should work out of the box with a RADOS backend, but basic
697 902d661c Filippos Giannakos
configuration can be done in ``/etc/default/archipelago`` .
698 902d661c Filippos Giannakos
699 902d661c Filippos Giannakos
If you wish to change the storage backend to files, set
700 902d661c Filippos Giannakos
701 902d661c Filippos Giannakos
.. code-block:: console
702 902d661c Filippos Giannakos
703 902d661c Filippos Giannakos
   STORAGE="files"
704 902d661c Filippos Giannakos
705 902d661c Filippos Giannakos
and provide the appropriate settings for files storage backend in the conf file.
706 902d661c Filippos Giannakos
707 902d661c Filippos Giannakos
These are:
708 902d661c Filippos Giannakos
709 902d661c Filippos Giannakos
* ``FILED_IMAGES``: directory for archipelago data blocks.
710 902d661c Filippos Giannakos
* ``FILED_MAPS``: directory for archipelago map blocks.
711 902d661c Filippos Giannakos
* ``PITHOS``: directory of pithos data blocks.
712 902d661c Filippos Giannakos
* ``PITHOSMAPS``: directory of pithos map blocks.
713 902d661c Filippos Giannakos
714 902d661c Filippos Giannakos
The settings for RADOS storage backend are:
715 902d661c Filippos Giannakos
716 902d661c Filippos Giannakos
* ``RADOS_POOL_MAPS``: The pool where archipelago and pithos map blocks reside.
717 902d661c Filippos Giannakos
* ``RADOS_POOL_BLOCKS``: The pool where archipelago and pithos data blocks
718 5226b38f Filippos Giannakos
  reside.
719 902d661c Filippos Giannakos
720 902d661c Filippos Giannakos
Examples can be found in the conf file.
721 902d661c Filippos Giannakos
722 902d661c Filippos Giannakos
Be aware that archipelago infrastructure doesn't provide default values for this
723 902d661c Filippos Giannakos
settings. If they are not set in the conf file, archipelago will not be able to
724 902d661c Filippos Giannakos
function.
725 902d661c Filippos Giannakos
726 902d661c Filippos Giannakos
Archipelago also provides ``VERBOSITY`` config options to control the output
727 902d661c Filippos Giannakos
generated by the userspace peers.
728 902d661c Filippos Giannakos
729 902d661c Filippos Giannakos
The available options are:
730 902d661c Filippos Giannakos
731 902d661c Filippos Giannakos
* ``VERBOSITY_BLOCKERB``
732 902d661c Filippos Giannakos
* ``VERBOSITY_BLOCKERM``
733 902d661c Filippos Giannakos
* ``VERBOSITY_MAPPER``
734 902d661c Filippos Giannakos
* ``VERBOSITY_VLMC``
735 902d661c Filippos Giannakos
736 902d661c Filippos Giannakos
and the available values are:
737 902d661c Filippos Giannakos
738 902d661c Filippos Giannakos
* 0 : Error only logging.
739 902d661c Filippos Giannakos
* 1 : Warning logging.
740 902d661c Filippos Giannakos
* 2 : Info logging.
741 902d661c Filippos Giannakos
* 3 : Debug logging. WARNING: This options produces tons of output, but the
742 902d661c Filippos Giannakos
  logrotate daemon should take care of it.
743 eab73849 Constantinos Venetsanopoulos
744 eab73849 Constantinos Venetsanopoulos
Working with Archipelago
745 eab73849 Constantinos Venetsanopoulos
------------------------
746 eab73849 Constantinos Venetsanopoulos
747 902d661c Filippos Giannakos
``archipelago`` provides basic functionality for archipelago.
748 5226b38f Filippos Giannakos
749 5226b38f Filippos Giannakos
Usage:
750 5226b38f Filippos Giannakos
751 5226b38f Filippos Giannakos
.. code-block:: console
752 5226b38f Filippos Giannakos
753 5226b38f Filippos Giannakos
  $ archipelago [-u] command
754 5226b38f Filippos Giannakos
755 5226b38f Filippos Giannakos
756 902d661c Filippos Giannakos
Currently it supports the following commands:
757 902d661c Filippos Giannakos
758 5226b38f Filippos Giannakos
* ``start [peer]``
759 5226b38f Filippos Giannakos
  Starts archipelago or the specified peer.
760 5226b38f Filippos Giannakos
* ``stop [peer]``
761 5226b38f Filippos Giannakos
  Stops archipelago or the specified peer.
762 5226b38f Filippos Giannakos
* ``restart [peer]``
763 5226b38f Filippos Giannakos
  Restarts archipelago or the specified peer.
764 902d661c Filippos Giannakos
* ``status``
765 5226b38f Filippos Giannakos
  Show the status of archipelago.
766 5226b38f Filippos Giannakos
767 5226b38f Filippos Giannakos
Available peers: ``blockerm``, ``blockerb``, ``mapperd``, ``vlmcd``.
768 5226b38f Filippos Giannakos
769 902d661c Filippos Giannakos
770 902d661c Filippos Giannakos
``start``, ``stop``, ``restart`` can be combined with the ``-u / --user`` option
771 902d661c Filippos Giannakos
to affect only the userspace peers supporting archipelago.
772 902d661c Filippos Giannakos
773 902d661c Filippos Giannakos
774 902d661c Filippos Giannakos
775 eab73849 Constantinos Venetsanopoulos
Archipelago advanced operations
776 eab73849 Constantinos Venetsanopoulos
-------------------------------
777 902d661c Filippos Giannakos
The ``vlmc`` tool provides a way to interact with archipelago volumes
778 902d661c Filippos Giannakos
779 902d661c Filippos Giannakos
* ``vlmc map <volumename>``: maps the volume to a xsegbd device.
780 6c900328 Filippos Giannakos
781 5226b38f Filippos Giannakos
* ``vlmc unmap </dev/xsegbd[1-..]>``: unmaps the specified device from the
782 902d661c Filippos Giannakos
  system.
783 6c900328 Filippos Giannakos
784 902d661c Filippos Giannakos
* ``vlmc create <volumename> --snap <snapname> --size <size>``: creates a new
785 902d661c Filippos Giannakos
  volume named <volumename> from snapshot name <snapname> with size <size>.
786 301294a9 Constantinos Venetsanopoulos
  The ``--snap`` and ``--size`` are optional, but at least one of them is
787 301294a9 Constantinos Venetsanopoulos
  mandatory. e.g:
788 902d661c Filippos Giannakos
789 301294a9 Constantinos Venetsanopoulos
  ``vlmc create <volumename> --snap <snapname>`` creates a volume named
790 301294a9 Constantinos Venetsanopoulos
  volumename from snapshot snapname. The size of the volume is the same as
791 301294a9 Constantinos Venetsanopoulos
  the size of the snapshot.
792 902d661c Filippos Giannakos
793 301294a9 Constantinos Venetsanopoulos
  ``vlmc create <volumename> --size <size>`` creates an empty volume of size
794 301294a9 Constantinos Venetsanopoulos
  <size> named <volumename>.
795 6c900328 Filippos Giannakos
796 902d661c Filippos Giannakos
* ``vlmc remove <volumename>``: removes the volume and all the related
797 902d661c Filippos Giannakos
  archipelago blocks from storage.
798 6c900328 Filippos Giannakos
799 902d661c Filippos Giannakos
* ``vlmc list``: provides a list of archipelago volumes. Currently only works
800 902d661c Filippos Giannakos
  with RADOS storage backend.
801 f846d8df Constantinos Venetsanopoulos
802 5226b38f Filippos Giannakos
* ``vlmc info <volumename>``: shows volume information. Currently returns only
803 5226b38f Filippos Giannakos
  volume size.
804 5226b38f Filippos Giannakos
805 6c900328 Filippos Giannakos
* ``vlmc open <volumename>``: opens an archipelago volume. That is, taking all
806 6c900328 Filippos Giannakos
  the necessary locks and also make the rest of the infrastructure aware of the
807 6c900328 Filippos Giannakos
  operation.
808 6c900328 Filippos Giannakos
809 6c900328 Filippos Giannakos
  This operation succeeds if the volume is alread opened.
810 6c900328 Filippos Giannakos
811 6c900328 Filippos Giannakos
* ``vlmc close <volumename>``: closes an archipelago volume. That is, performing
812 6c900328 Filippos Giannakos
  all the necessary functions in the insfrastrure to successfully release the
813 6c900328 Filippos Giannakos
  volume. Also releases all the acquired locks.
814 6c900328 Filippos Giannakos
815 6c900328 Filippos Giannakos
  ``vlmc close`` should be performed after a ``vlmc open`` operation.
816 6c900328 Filippos Giannakos
817 6c900328 Filippos Giannakos
* ``vlmc lock <volumename>``: locks a volume. This step allow the administrator
818 6c900328 Filippos Giannakos
  to lock an archipelago volume, independently from the rest of the
819 5226b38f Filippos Giannakos
  infrastrure.
820 6c900328 Filippos Giannakos
821 6c900328 Filippos Giannakos
* ``vlmc unlock [-f] <volumename>``: unlocks a volume. This allow the
822 6c900328 Filippos Giannakos
  administrator to unlock a volume, independently from the rest of the
823 6c900328 Filippos Giannakos
  infrastructure.
824 6c900328 Filippos Giannakos
  The unlock option can be performed only by the blocker that acquired the lock
825 6c900328 Filippos Giannakos
  in the first place. To unlock a volume from another blocker, ``-f`` option
826 6c900328 Filippos Giannakos
  must be used to break the lock.
827 6c900328 Filippos Giannakos
828 a1c707c9 Constantinos Venetsanopoulos
829 bc055d09 Constantinos Venetsanopoulos
The "kamaki" API client
830 eab73849 Constantinos Venetsanopoulos
=======================
831 bc055d09 Constantinos Venetsanopoulos
832 bc055d09 Constantinos Venetsanopoulos
To upload, register or modify an image you will need the **kamaki** tool.
833 bc055d09 Constantinos Venetsanopoulos
Before proceeding make sure that it is configured properly. Verify that
834 dd04efac Stavros Sachtouris
*image.url*, *file.url*, *user.url* and *token* are set as needed:
835 bc055d09 Constantinos Venetsanopoulos
836 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
837 bc055d09 Constantinos Venetsanopoulos
838 bc055d09 Constantinos Venetsanopoulos
   $ kamaki config list
839 bc055d09 Constantinos Venetsanopoulos
840 bc055d09 Constantinos Venetsanopoulos
To chage a setting use ``kamaki config set``:
841 bc055d09 Constantinos Venetsanopoulos
842 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
843 bc055d09 Constantinos Venetsanopoulos
844 dd04efac Stavros Sachtouris
   $ kamaki config set image.url https://cyclades.example.com/plankton
845 dd04efac Stavros Sachtouris
   $ kamaki config set file.url https://pithos.example.com/v1
846 dd04efac Stavros Sachtouris
   $ kamaki config set user.url https://accounts.example.com
847 bc055d09 Constantinos Venetsanopoulos
   $ kamaki config set token ...
848 bc055d09 Constantinos Venetsanopoulos
849 c0d88cf3 Constantinos Venetsanopoulos
To test that everything works, try authenticating the current account with
850 c0d88cf3 Constantinos Venetsanopoulos
kamaki:
851 dd04efac Stavros Sachtouris
852 dd04efac Stavros Sachtouris
.. code-block:: console
853 dd04efac Stavros Sachtouris
854 dd04efac Stavros Sachtouris
  $ kamaki user authenticate
855 dd04efac Stavros Sachtouris
856 c0d88cf3 Constantinos Venetsanopoulos
This will output user information.
857 dd04efac Stavros Sachtouris
858 bc055d09 Constantinos Venetsanopoulos
Upload Image
859 bc055d09 Constantinos Venetsanopoulos
------------
860 bc055d09 Constantinos Venetsanopoulos
861 c0d88cf3 Constantinos Venetsanopoulos
By convention, images are stored in a container called ``images``. Check if the
862 c0d88cf3 Constantinos Venetsanopoulos
container exists, by listing all containers in your account:
863 bc055d09 Constantinos Venetsanopoulos
864 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
865 bc055d09 Constantinos Venetsanopoulos
866 dd04efac Stavros Sachtouris
   $ kamaki file list
867 bc055d09 Constantinos Venetsanopoulos
868 dd04efac Stavros Sachtouris
If the container ``images`` does not exist, create it:
869 bc055d09 Constantinos Venetsanopoulos
870 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
871 bc055d09 Constantinos Venetsanopoulos
872 dd04efac Stavros Sachtouris
  $ kamaki file create images
873 bc055d09 Constantinos Venetsanopoulos
874 c0d88cf3 Constantinos Venetsanopoulos
You are now ready to upload an image to container ``images``. You can upload it
875 c0d88cf3 Constantinos Venetsanopoulos
with a Pithos+ client, or use kamaki directly:
876 bc055d09 Constantinos Venetsanopoulos
877 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
878 bc055d09 Constantinos Venetsanopoulos
879 dd04efac Stavros Sachtouris
   $ kamaki file upload ubuntu.iso images
880 bc055d09 Constantinos Venetsanopoulos
881 c0d88cf3 Constantinos Venetsanopoulos
You can use any Pithos+ client to verify that the image was uploaded correctly,
882 c0d88cf3 Constantinos Venetsanopoulos
or you can list the contents of the container with kamaki:
883 bc055d09 Constantinos Venetsanopoulos
884 dd04efac Stavros Sachtouris
.. code-block:: console
885 dd04efac Stavros Sachtouris
886 dd04efac Stavros Sachtouris
  $ kamaki file list images
887 bc055d09 Constantinos Venetsanopoulos
888 bc055d09 Constantinos Venetsanopoulos
The full Pithos URL for the previous example will be
889 c0d88cf3 Constantinos Venetsanopoulos
``pithos://u53r-un1qu3-1d/images/ubuntu.iso`` where ``u53r-un1qu3-1d`` is the
890 c0d88cf3 Constantinos Venetsanopoulos
unique user id (uuid).
891 bc055d09 Constantinos Venetsanopoulos
892 bc055d09 Constantinos Venetsanopoulos
Register Image
893 bc055d09 Constantinos Venetsanopoulos
--------------
894 bc055d09 Constantinos Venetsanopoulos
895 bc055d09 Constantinos Venetsanopoulos
To register an image you will need to use the full Pithos+ URL. To register as
896 bc055d09 Constantinos Venetsanopoulos
a public image the one from the previous example use:
897 bc055d09 Constantinos Venetsanopoulos
898 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
899 bc055d09 Constantinos Venetsanopoulos
900 dd04efac Stavros Sachtouris
   $ kamaki image register Ubuntu pithos://u53r-un1qu3-1d/images/ubuntu.iso --public
901 bc055d09 Constantinos Venetsanopoulos
902 bc055d09 Constantinos Venetsanopoulos
The ``--public`` flag is important, if missing the registered image will not
903 dd04efac Stavros Sachtouris
be listed by ``kamaki image list``.
904 bc055d09 Constantinos Venetsanopoulos
905 dd04efac Stavros Sachtouris
Use ``kamaki image register`` with no arguments to see a list of available
906 bc055d09 Constantinos Venetsanopoulos
options. A more complete example would be the following:
907 bc055d09 Constantinos Venetsanopoulos
908 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
909 bc055d09 Constantinos Venetsanopoulos
910 dd04efac Stavros Sachtouris
   $ kamaki image register Ubuntu pithos://u53r-un1qu3-1d/images/ubuntu.iso \
911 bc055d09 Constantinos Venetsanopoulos
            --public --disk-format diskdump --property kernel=3.1.2
912 bc055d09 Constantinos Venetsanopoulos
913 bc055d09 Constantinos Venetsanopoulos
To verify that the image was registered successfully use:
914 bc055d09 Constantinos Venetsanopoulos
915 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
916 bc055d09 Constantinos Venetsanopoulos
917 dd04efac Stavros Sachtouris
   $ kamaki image list --name-like=ubuntu
918 bc055d09 Constantinos Venetsanopoulos
919 eab73849 Constantinos Venetsanopoulos
920 eab73849 Constantinos Venetsanopoulos
Miscellaneous
921 eab73849 Constantinos Venetsanopoulos
=============
922 eab73849 Constantinos Venetsanopoulos
923 9b659162 Christos Stavrakakis
.. RabbitMQ
924 a1c707c9 Constantinos Venetsanopoulos
925 9b659162 Christos Stavrakakis
RabbitMQ Broker
926 9b659162 Christos Stavrakakis
---------------
927 9b659162 Christos Stavrakakis
928 9b659162 Christos Stavrakakis
Queue nodes run the RabbitMQ sofware, which provides AMQP functionality. To
929 9b659162 Christos Stavrakakis
guarantee high-availability, more than one Queue nodes should be deployed, each
930 9b659162 Christos Stavrakakis
of them belonging to the same `RabbitMQ cluster
931 a1c707c9 Constantinos Venetsanopoulos
<http://www.rabbitmq.com/clustering.html>`_. Synnefo uses the RabbitMQ
932 a1c707c9 Constantinos Venetsanopoulos
active/active `High Available Queues <http://www.rabbitmq.com/ha.html>`_ which
933 a1c707c9 Constantinos Venetsanopoulos
are mirrored between two nodes within a RabbitMQ cluster.
934 a1c707c9 Constantinos Venetsanopoulos
935 a1c707c9 Constantinos Venetsanopoulos
The RabbitMQ nodes that form the cluster, are declared to Synnefo through the
936 a1c707c9 Constantinos Venetsanopoulos
`AMQP_HOSTS` setting. Each time a Synnefo component needs to connect to
937 a1c707c9 Constantinos Venetsanopoulos
RabbitMQ, one of these nodes is chosen in a random way. The client that Synnefo
938 a1c707c9 Constantinos Venetsanopoulos
uses to connect to RabbitMQ, handles connection failures transparently and
939 a1c707c9 Constantinos Venetsanopoulos
tries to reconnect to a different node. As long as one of these nodes are up
940 a1c707c9 Constantinos Venetsanopoulos
and running, functionality of Synnefo should not be downgraded by the RabbitMQ
941 a1c707c9 Constantinos Venetsanopoulos
node failures.
942 9b659162 Christos Stavrakakis
943 9b659162 Christos Stavrakakis
All the queues that are being used are declared as durable, meaning that
944 a1c707c9 Constantinos Venetsanopoulos
messages are persistently stored to RabbitMQ, until they get successfully
945 a1c707c9 Constantinos Venetsanopoulos
processed by a client.
946 9b659162 Christos Stavrakakis
947 9b659162 Christos Stavrakakis
Currently, RabbitMQ is used by the following components:
948 9b659162 Christos Stavrakakis
949 a1c707c9 Constantinos Venetsanopoulos
* `snf-ganeti-eventd`, `snf-ganeti-hook` and `snf-progress-monitor`:
950 9b659162 Christos Stavrakakis
  These components send messages concerning the status and progress of
951 9b659162 Christos Stavrakakis
  jobs in the Ganeti backend.
952 a1c707c9 Constantinos Venetsanopoulos
* `snf-dispatcher`: This daemon, consumes the messages that are sent from
953 a1c707c9 Constantinos Venetsanopoulos
  the above components, and updates the Cyclades DB accordingly.
954 9b659162 Christos Stavrakakis
955 e4404297 Christos Stavrakakis
956 9b659162 Christos Stavrakakis
Installation
957 301294a9 Constantinos Venetsanopoulos
~~~~~~~~~~~~
958 301294a9 Constantinos Venetsanopoulos
959 a1c707c9 Constantinos Venetsanopoulos
Please check the RabbitMQ documentation which covers extensively the
960 a1c707c9 Constantinos Venetsanopoulos
`installation of RabbitMQ server <http://www.rabbitmq.com/download.html>`_ and
961 a1c707c9 Constantinos Venetsanopoulos
the setup of a `RabbitMQ cluster <http://www.rabbitmq.com/clustering.html>`_.
962 a1c707c9 Constantinos Venetsanopoulos
Also, check out the `web management plugin
963 a1c707c9 Constantinos Venetsanopoulos
<http://www.rabbitmq.com/management.html>`_ that can be useful for managing and
964 a1c707c9 Constantinos Venetsanopoulos
monitoring RabbitMQ.
965 9b659162 Christos Stavrakakis
966 9b659162 Christos Stavrakakis
For a basic installation of RabbitMQ on two nodes (node1 and node2) you can do
967 a1c707c9 Constantinos Venetsanopoulos
the following:
968 9b659162 Christos Stavrakakis
969 a1c707c9 Constantinos Venetsanopoulos
On both nodes, install rabbitmq-server and create a Synnefo user:
970 9b659162 Christos Stavrakakis
971 9b659162 Christos Stavrakakis
.. code-block:: console
972 9b659162 Christos Stavrakakis
973 9b659162 Christos Stavrakakis
  $ apt-get install rabbitmq-server
974 9b659162 Christos Stavrakakis
  $ rabbitmqctl add_user synnefo "example_pass"
975 9b659162 Christos Stavrakakis
  $ rabbitmqctl set_permissions synnefo  ".*" ".*" ".*"
976 9b659162 Christos Stavrakakis
977 a1c707c9 Constantinos Venetsanopoulos
Also guarantee that both nodes share the same cookie, by running:
978 9b659162 Christos Stavrakakis
979 9b659162 Christos Stavrakakis
.. code-block:: console
980 9b659162 Christos Stavrakakis
981 9b659162 Christos Stavrakakis
  $ scp node1:/var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/.erlang.cookie
982 9b659162 Christos Stavrakakis
983 9b659162 Christos Stavrakakis
and restart the nodes:
984 9b659162 Christos Stavrakakis
985 9b659162 Christos Stavrakakis
.. code-block:: console
986 9b659162 Christos Stavrakakis
987 9b659162 Christos Stavrakakis
  $ /etc/init.d/rabbitmq-server restart
988 9b659162 Christos Stavrakakis
989 9b659162 Christos Stavrakakis
990 9b659162 Christos Stavrakakis
To setup the RabbitMQ cluster run:
991 9b659162 Christos Stavrakakis
992 9b659162 Christos Stavrakakis
.. code-block:: console
993 9b659162 Christos Stavrakakis
994 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl stop_app
995 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl reset
996 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl cluster rabbit@node1 rabbit@node2
997 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl start_app
998 9b659162 Christos Stavrakakis
999 9b659162 Christos Stavrakakis
You can verify that the cluster is set up correctly by running:
1000 9b659162 Christos Stavrakakis
1001 9b659162 Christos Stavrakakis
.. code-block:: console
1002 9b659162 Christos Stavrakakis
1003 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl cluster_status
1004 9b659162 Christos Stavrakakis
1005 9b659162 Christos Stavrakakis
1006 9b659162 Christos Stavrakakis
1007 9b659162 Christos Stavrakakis
1008 9b659162 Christos Stavrakakis
1009 bc055d09 Constantinos Venetsanopoulos
Admin tool: snf-manage
1010 bc055d09 Constantinos Venetsanopoulos
----------------------
1011 bc055d09 Constantinos Venetsanopoulos
1012 bc055d09 Constantinos Venetsanopoulos
``snf-manage`` is a tool used to perform various administrative tasks. It needs
1013 bc055d09 Constantinos Venetsanopoulos
to be able to access the django database, so the following should be able to
1014 bc055d09 Constantinos Venetsanopoulos
import the Django settings.
1015 bc055d09 Constantinos Venetsanopoulos
1016 bc055d09 Constantinos Venetsanopoulos
Additionally, administrative tasks can be performed via the admin web interface
1017 e18edd26 Constantinos Venetsanopoulos
located in /admin. Only users of type ADMIN can access the admin pages. To
1018 998f872c Christos Stavrakakis
change the type of a user to ADMIN, snf-manage can be used:
1019 bc055d09 Constantinos Venetsanopoulos
1020 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
1021 bc055d09 Constantinos Venetsanopoulos
1022 7a3439cf Constantinos Venetsanopoulos
   $ snf-manage user-modify 42 --type ADMIN
1023 bc055d09 Constantinos Venetsanopoulos
1024 bc055d09 Constantinos Venetsanopoulos
Logging
1025 bc055d09 Constantinos Venetsanopoulos
-------
1026 bc055d09 Constantinos Venetsanopoulos
1027 bc055d09 Constantinos Venetsanopoulos
Logging in Synnefo is using Python's logging module. The module is configured
1028 bc055d09 Constantinos Venetsanopoulos
using dictionary configuration, whose format is described here:
1029 bc055d09 Constantinos Venetsanopoulos
1030 bc055d09 Constantinos Venetsanopoulos
http://docs.python.org/release/2.7.1/library/logging.html#logging-config-dictschema
1031 bc055d09 Constantinos Venetsanopoulos
1032 bc055d09 Constantinos Venetsanopoulos
Note that this is a feature of Python 2.7 that we have backported for use in
1033 bc055d09 Constantinos Venetsanopoulos
Python 2.6.
1034 bc055d09 Constantinos Venetsanopoulos
1035 4be65f1f Christos Stavrakakis
The logging configuration dictionary is defined in
1036 a1c707c9 Constantinos Venetsanopoulos
``/etc/synnefo/10-snf-webproject-logging.conf``
1037 bc055d09 Constantinos Venetsanopoulos
1038 a1c707c9 Constantinos Venetsanopoulos
The administrator can have finer logging control by modifying the
1039 a1c707c9 Constantinos Venetsanopoulos
``LOGGING_SETUP`` dictionary, and defining subloggers with different handlers
1040 a1c707c9 Constantinos Venetsanopoulos
and log levels.  e.g. To enable debug messages only for the API set the level
1041 a1c707c9 Constantinos Venetsanopoulos
of 'synnefo.api' to ``DEBUG``
1042 4be65f1f Christos Stavrakakis
1043 a1c707c9 Constantinos Venetsanopoulos
By default, the Django webapp and snf-manage logs to syslog, while
1044 a1c707c9 Constantinos Venetsanopoulos
`snf-dispatcher` logs to `/var/log/synnefo/dispatcher.log`.
1045 bc055d09 Constantinos Venetsanopoulos
1046 d189d11c Constantinos Venetsanopoulos
1047 21d3d487 Constantinos Venetsanopoulos
.. _scale-up:
1048 21d3d487 Constantinos Venetsanopoulos
1049 bc055d09 Constantinos Venetsanopoulos
Scaling up to multiple nodes
1050 bc055d09 Constantinos Venetsanopoulos
============================
1051 bc055d09 Constantinos Venetsanopoulos
1052 301294a9 Constantinos Venetsanopoulos
Here we will describe how should a large scale Synnefo deployment look like. Make
1053 301294a9 Constantinos Venetsanopoulos
sure you are familiar with Synnefo and Ganeti before proceeding with this section.
1054 301294a9 Constantinos Venetsanopoulos
This means you should at least have already set up successfully a working Synnefo
1055 301294a9 Constantinos Venetsanopoulos
deployment as described in the :ref:`Admin's Quick Installation Guide
1056 301294a9 Constantinos Venetsanopoulos
<quick-install-admin-guide>` and also read the Administrator's Guide until this
1057 301294a9 Constantinos Venetsanopoulos
section.
1058 2f6143c9 Constantinos Venetsanopoulos
1059 301294a9 Constantinos Venetsanopoulos
Graph of a scale-out Synnefo deployment
1060 301294a9 Constantinos Venetsanopoulos
---------------------------------------
1061 2f6143c9 Constantinos Venetsanopoulos
1062 301294a9 Constantinos Venetsanopoulos
Each box in the following graph corresponds to a distinct physical node:
1063 2f6143c9 Constantinos Venetsanopoulos
1064 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch2-roles.png
1065 301294a9 Constantinos Venetsanopoulos
   :width: 100%
1066 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch2-roles.png
1067 301294a9 Constantinos Venetsanopoulos
1068 301294a9 Constantinos Venetsanopoulos
The above graph is actually the same with the one at the beginning of this
1069 301294a9 Constantinos Venetsanopoulos
:ref:`guide <admin-guide>`, with the only difference that here we show the
1070 301294a9 Constantinos Venetsanopoulos
Synnefo roles of each physical node. These roles are described in the
1071 301294a9 Constantinos Venetsanopoulos
following section.
1072 301294a9 Constantinos Venetsanopoulos
1073 21d3d487 Constantinos Venetsanopoulos
.. _physical-node-roles:
1074 21d3d487 Constantinos Venetsanopoulos
1075 301294a9 Constantinos Venetsanopoulos
Physical Node roles
1076 301294a9 Constantinos Venetsanopoulos
-------------------
1077 301294a9 Constantinos Venetsanopoulos
1078 301294a9 Constantinos Venetsanopoulos
As appears in the previous graph, a scale-out Synnefo deployment consists of
1079 301294a9 Constantinos Venetsanopoulos
multiple physical nodes that have the following roles:
1080 301294a9 Constantinos Venetsanopoulos
1081 301294a9 Constantinos Venetsanopoulos
* **WEBSERVER**: A web server running in front of gunicorn (e.g.: Apache, nginx)
1082 301294a9 Constantinos Venetsanopoulos
* **ASTAKOS**: The Astakos application (gunicorn)
1083 301294a9 Constantinos Venetsanopoulos
* **ASTAKOS_DB**: The Astakos database (postgresql)
1084 301294a9 Constantinos Venetsanopoulos
* **PITHOS**: The Pithos application (gunicorn)
1085 301294a9 Constantinos Venetsanopoulos
* **PITHOS_DB**: The Pithos database (postgresql)
1086 301294a9 Constantinos Venetsanopoulos
* **CYCLADES**: The Cyclades application (gunicorn)
1087 301294a9 Constantinos Venetsanopoulos
* **CYCLADES_DB**: The Cyclades database (postgresql)
1088 301294a9 Constantinos Venetsanopoulos
* **MQ**: The message queue (RabbitMQ)
1089 301294a9 Constantinos Venetsanopoulos
* **GANETI_MASTER**: The Ganeti master of a Ganeti cluster
1090 301294a9 Constantinos Venetsanopoulos
* **GANETI_NODE** : A VM-capable Ganeti node of a Ganeti cluster
1091 2f6143c9 Constantinos Venetsanopoulos
1092 301294a9 Constantinos Venetsanopoulos
You will probably also have:
1093 2f6143c9 Constantinos Venetsanopoulos
1094 301294a9 Constantinos Venetsanopoulos
* **CMS**: The CMS used as a frotend portal for the Synnefo services
1095 21d3d487 Constantinos Venetsanopoulos
* **NS**: A nameserver serving all other Synnefo nodes and resolving Synnefo FQDNs
1096 301294a9 Constantinos Venetsanopoulos
* **CLIENT**: A machine that runs the Synnefo clients (e.g.: kamaki, Web UI),
1097 301294a9 Constantinos Venetsanopoulos
              most of the times, the end user's local machine
1098 301294a9 Constantinos Venetsanopoulos
1099 301294a9 Constantinos Venetsanopoulos
From this point we will also refer to the following groups of roles:
1100 301294a9 Constantinos Venetsanopoulos
1101 301294a9 Constantinos Venetsanopoulos
* **SYNNEFO**: [ **ASTAKOS**, **ASTAKOS_DB**, **PITHOS**, **PITHOS_DB**, **CYCLADES**, **CYCLADES_DB**, **MQ**, **CMS**]
1102 301294a9 Constantinos Venetsanopoulos
* **G_BACKEND**: [**GANETI_MASTER**, **GANETI_NODE**]
1103 301294a9 Constantinos Venetsanopoulos
1104 301294a9 Constantinos Venetsanopoulos
Of course, when deploying Synnefo you can combine multiple of the above roles on a
1105 301294a9 Constantinos Venetsanopoulos
single physical node, but if you are trying to scale out, the above separation
1106 301294a9 Constantinos Venetsanopoulos
gives you significant advantages.
1107 301294a9 Constantinos Venetsanopoulos
1108 301294a9 Constantinos Venetsanopoulos
So, in the next section we will take a look on what components you will have to
1109 301294a9 Constantinos Venetsanopoulos
install on each physical node depending on its Synnefo role. We assume the graph's
1110 301294a9 Constantinos Venetsanopoulos
architecture.
1111 301294a9 Constantinos Venetsanopoulos
1112 301294a9 Constantinos Venetsanopoulos
Components for each role
1113 301294a9 Constantinos Venetsanopoulos
------------------------
1114 2f6143c9 Constantinos Venetsanopoulos
1115 301294a9 Constantinos Venetsanopoulos
When deploying Synnefo in large scale, you need to install different Synnefo
1116 301294a9 Constantinos Venetsanopoulos
or/and third party components on different physical nodes according to their
1117 301294a9 Constantinos Venetsanopoulos
Synnefo role, as stated in the previous section.
1118 301294a9 Constantinos Venetsanopoulos
1119 301294a9 Constantinos Venetsanopoulos
Specifically:
1120 301294a9 Constantinos Venetsanopoulos
1121 301294a9 Constantinos Venetsanopoulos
Role **WEBSERVER**
1122 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1123 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Apache
1124 301294a9 Constantinos Venetsanopoulos
Role **ASTAKOS**
1125 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-astakos-app`
1126 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1127 301294a9 Constantinos Venetsanopoulos
Role **ASTAKOS_DB**
1128 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1129 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1130 301294a9 Constantinos Venetsanopoulos
Role **PITHOS**
1131 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-pithos-app`, `snf-pithos-webclient`
1132 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1133 301294a9 Constantinos Venetsanopoulos
Role **PITHOS_DB**
1134 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1135 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1136 301294a9 Constantinos Venetsanopoulos
Role **CYCLADES**
1137 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-cyclades-app`, `snf-vncauthproxy`
1138 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django Gunicorn
1139 301294a9 Constantinos Venetsanopoulos
Role **CYCLADES_DB**
1140 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1141 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1142 301294a9 Constantinos Venetsanopoulos
Role **MQ**
1143 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1144 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: RabbitMQ
1145 301294a9 Constantinos Venetsanopoulos
Role **GANETI_MASTER**
1146 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-cyclades-gtools`
1147 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Ganeti
1148 301294a9 Constantinos Venetsanopoulos
Role **GANETI_NODE**
1149 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-cyclades-gtools`, `snf-network`, `snf-image`, `nfdhcpd`
1150 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Ganeti
1151 301294a9 Constantinos Venetsanopoulos
Role **CMS**
1152 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-cloudcms`
1153 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1154 301294a9 Constantinos Venetsanopoulos
Role **NS**
1155 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1156 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: BIND
1157 301294a9 Constantinos Venetsanopoulos
Role **CLIENT**
1158 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `kamaki`, `snf-image-creator`
1159 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: `None`
1160 301294a9 Constantinos Venetsanopoulos
1161 301294a9 Constantinos Venetsanopoulos
Example scale out installation
1162 301294a9 Constantinos Venetsanopoulos
------------------------------
1163 301294a9 Constantinos Venetsanopoulos
1164 301294a9 Constantinos Venetsanopoulos
In this section we describe an example of a medium scale installation which
1165 301294a9 Constantinos Venetsanopoulos
combines multiple roles on 10 different physical nodes. We also provide a
1166 301294a9 Constantinos Venetsanopoulos
:ref:`guide <i-synnefo>` to help with such an install.
1167 301294a9 Constantinos Venetsanopoulos
1168 301294a9 Constantinos Venetsanopoulos
We assume that we have the following 10 physical nodes with the corresponding
1169 301294a9 Constantinos Venetsanopoulos
roles:
1170 301294a9 Constantinos Venetsanopoulos
1171 301294a9 Constantinos Venetsanopoulos
Node1:
1172 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **ASTAKOS**
1173 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1174 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1175 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1176 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1177 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1178 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-astakos-app <i-astakos>`
1179 301294a9 Constantinos Venetsanopoulos
Node2:
1180 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **PITHOS**
1181 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1182 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1183 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1184 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1185 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1186 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-pithos-app <i-pithos>`
1187 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-pithos-webclient <i-pithos>`
1188 301294a9 Constantinos Venetsanopoulos
Node3:
1189 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **CYCLADES**
1190 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1191 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1192 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1193 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1194 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1195 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-app <i-cyclades>`
1196 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-vncauthproxy <i-cyclades>`
1197 301294a9 Constantinos Venetsanopoulos
Node4:
1198 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **CMS**
1199 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1200 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1201 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1202 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1203 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1204 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cloudcms <i-cms>`
1205 301294a9 Constantinos Venetsanopoulos
Node5:
1206 301294a9 Constantinos Venetsanopoulos
    **ASTAKOS_DB**, **PITHOS_DB**, **CYCLADES_DB**
1207 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1208 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1209 301294a9 Constantinos Venetsanopoulos
        * :ref:`postgresql <i-db>`
1210 301294a9 Constantinos Venetsanopoulos
Node6:
1211 301294a9 Constantinos Venetsanopoulos
    **MQ**
1212 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1213 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1214 301294a9 Constantinos Venetsanopoulos
        * :ref:`rabbitmq <i-mq>`
1215 301294a9 Constantinos Venetsanopoulos
Node7:
1216 301294a9 Constantinos Venetsanopoulos
    **GANETI_MASTER**, **GANETI_NODE**
1217 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1218 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1219 301294a9 Constantinos Venetsanopoulos
        * :ref:`general <i-backends>`
1220 301294a9 Constantinos Venetsanopoulos
        * :ref:`ganeti <i-ganeti>`
1221 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-gtools <i-gtools>`
1222 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-network <i-network>`
1223 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-image <i-image>`
1224 301294a9 Constantinos Venetsanopoulos
        * :ref:`nfdhcpd <i-network>`
1225 301294a9 Constantinos Venetsanopoulos
Node8:
1226 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1227 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1228 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1229 301294a9 Constantinos Venetsanopoulos
        * :ref:`general <i-backends>`
1230 301294a9 Constantinos Venetsanopoulos
        * :ref:`ganeti <i-ganeti>`
1231 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-gtools <i-gtools>`
1232 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-network <i-network>`
1233 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-image <i-image>`
1234 301294a9 Constantinos Venetsanopoulos
        * :ref:`nfdhcpd <i-network>`
1235 301294a9 Constantinos Venetsanopoulos
Node9:
1236 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1237 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1238 301294a9 Constantinos Venetsanopoulos
        `Same as Node8`
1239 301294a9 Constantinos Venetsanopoulos
Node10:
1240 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1241 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1242 301294a9 Constantinos Venetsanopoulos
        `Same as Node8`
1243 301294a9 Constantinos Venetsanopoulos
1244 301294a9 Constantinos Venetsanopoulos
All sections: :ref:`Scale out Guide <i-synnefo>`
1245 547c78f6 Constantinos Venetsanopoulos
1246 bc055d09 Constantinos Venetsanopoulos
1247 bbcd3dd1 Constantinos Venetsanopoulos
Upgrade Notes
1248 bbcd3dd1 Constantinos Venetsanopoulos
=============
1249 bc055d09 Constantinos Venetsanopoulos
1250 457fe4fc Georgios D. Tsoukalas
.. toctree::
1251 457fe4fc Georgios D. Tsoukalas
   :maxdepth: 1
1252 457fe4fc Georgios D. Tsoukalas
1253 1cd3daa1 Constantinos Venetsanopoulos
   v0.12 -> v0.13 <upgrade/upgrade-0.13>
1254 457fe4fc Georgios D. Tsoukalas
1255 bbcd3dd1 Constantinos Venetsanopoulos
1256 3045e739 Constantinos Venetsanopoulos
Changelog, NEWS
1257 bbcd3dd1 Constantinos Venetsanopoulos
===============
1258 bbcd3dd1 Constantinos Venetsanopoulos
1259 bbcd3dd1 Constantinos Venetsanopoulos
* v0.13 :ref:`Changelog <Changelog-0.13>`, :ref:`NEWS <NEWS-0.13>`