Statistics
| Branch: | Tag: | Revision:

root / docs / admin-guide.rst @ c0d88cf3

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