root / README.admin @ 96b635d9
History | View | Annotate | Download (2.9 kB)
1 |
README.admin - Administration notes |
---|---|
2 |
|
3 |
This file contains notes related to administration of a working Synnefo |
4 |
deployment. This document should be read *after* README.deploy, which contains |
5 |
step-by-step Synnefo deployment instructions. |
6 |
|
7 |
|
8 |
Database |
9 |
======== |
10 |
|
11 |
MySQL: manage.py dbshell seems to ignore the setting of 'init_command' |
12 |
in settings.DATABASES |
13 |
|
14 |
Reconciliation mechanism |
15 |
======================== |
16 |
|
17 |
On certain occasions, such as a Ganeti or RabbitMQ failure, the VM state in the |
18 |
system's database may differ from that in the Ganeti installation. The |
19 |
reconciliation process is designed to bring the system's database in sync with |
20 |
what Ganeti knows about each VM. |
21 |
|
22 |
The administrator can trigger reconciliation manually, by issuing a Ganeti |
23 |
OP_INSTANCE_QUERY_DATA command, using gnt-instance info. |
24 |
|
25 |
Alternatively, the reconciliation process can be triggered for all VMs using the |
26 |
command |
27 |
|
28 |
./manage.py reconcile --all |
29 |
|
30 |
It is advised, though not strictly necessary, to run the reconciliation process |
31 |
periodically, through cron. To avoid overloading the Ganeti master, the periodic |
32 |
reconciliation process takes a staggered approach to updating the VMs, which is |
33 |
configured through the following parameters: |
34 |
|
35 |
* The settings.py RECONCILIATION_MIN parameter, which specifies the maximum time |
36 |
a VM can remain ``non-reconciled''. (default: 30 mins) |
37 |
|
38 |
* The --interval option to the reconcile command, which declares the interval |
39 |
time between reconciliation attempts (default: 1 min) |
40 |
|
41 |
On each invocation of the reconcile command, the system will trigger a |
42 |
reconciliation for ((num_all_vms/RECONCILIATION_MIN) * interval) machines. |
43 |
Obviously the lower the interval value and the higher the setting of |
44 |
RECONCILIATION_MIN, the less load is going to be put on Ganeti. |
45 |
|
46 |
Logging |
47 |
======= |
48 |
|
49 |
Logging in Synnefo is using Python's logging module. The module is configured |
50 |
using a configuration file, whose format is described here: |
51 |
|
52 |
http://docs.python.org/library/logging.config.html |
53 |
|
54 |
By default, the log initialization code will look for the logging.conf file |
55 |
in the following locations in order: |
56 |
|
57 |
1. /etc/synnefo/logging.conf |
58 |
2. os.getcwd()/logging.conf |
59 |
3. synnefo.logic.__path__[0]/logging.conf (<-- this is the default) |
60 |
|
61 |
The default configuration is using Linux conventions: it logs to /dev/log for |
62 |
all loggers. The default configuration can be changed by copying the default |
63 |
file to any of the above mentioned locations and changing it appropriately. |
64 |
|
65 |
* Logging and demonization: If the logging is configured to print to the console |
66 |
(using the consoleHandler handler) then daemon processes (notably, the |
67 |
dispatcher) will not work as it should. This only happens after the daemon |
68 |
has lost its controlling terminal (e.g. because the terminal was closed); |
69 |
in this case the dispatcher does not know where to log to and depending on |
70 |
the system it either crashes or stalls. This can be avoided if the logging |
71 |
module is not configured to output to the console. |