Revision 301294a9 docs/admin-guide.rst

b/docs/admin-guide.rst
16 16
between them. It is a good idea to first go through the Quick Administrator's
17 17
Guide before proceeding.
18 18

  
19
.. image:: images/synnefo-architecture1.png
19
.. image:: images/synnefo-arch2.png
20 20
   :width: 100%
21
   :target: _images/synnefo-architecture1.png
21
   :target: _images/synnefo-arch2.png
22 22

  
23 23

  
24 24

  
......
557 557
CoW volumes. Moreover, it enables live migration of thinly-provisioned VMs with
558 558
no physically shared storage.
559 559

  
560
Architecture
561
------------
560
Archipelago Architecture
561
------------------------
562

  
562 563
.. image:: images/archipelago-architecture.png
563 564
   :width: 50%
564 565
   :target: _images/archipelago-architecture.png
565 566

  
567
.. _syn+archip+rados:
568

  
569
Overview of Synnefo + Archipelago + RADOS
570
-----------------------------------------
571

  
572
.. image:: images/synnefo-arch3.png
573
   :width: 100%
574
   :target: _images/synnefo-arch3.png
575

  
566 576
Prereqs
567 577
-------
578

  
568 579
The administrator must initialize the storage backend where archipelago volume
569 580
blocks will reside.
570 581

  
571

  
572 582
In case of a files backend, the administrator must create two directories. One
573 583
for the archipelago data blocks and one for the archipelago map blocks. These
574 584
should probably be over shared storage to enable sharing archipelago volumes
......
579 589
for data blocks, and one for the map blocks. These pools, must be the same pools
580 590
used in pithos, in order to enable volume creation based on pithos images.
581 591

  
582

  
583 592
Installation
584 593
------------
594

  
585 595
Archipelago consists of
586 596

  
587 597
* ``libxseg0``: libxseg used to communicate over shared memory segments
......
702 712

  
703 713
* ``vlmc create <volumename> --snap <snapname> --size <size>``: creates a new
704 714
  volume named <volumename> from snapshot name <snapname> with size <size>.
705
    The ``--snap`` and ``--size`` are optional, but at least one of them is
706
    mandatory. e.g:
715
  The ``--snap`` and ``--size`` are optional, but at least one of them is
716
  mandatory. e.g:
707 717

  
708
    ``vlmc create <volumename> --snap <snapname>`` creates a volume named
709
    volumename from snapshot snapname. The size of the volume is the same as
710
    the size of the snapshot.
718
  ``vlmc create <volumename> --snap <snapname>`` creates a volume named
719
  volumename from snapshot snapname. The size of the volume is the same as
720
  the size of the snapshot.
711 721

  
712
    ``vlmc create <volumename> --size <size>`` creates an empty volume of size
713
    <size> named <volumename>.
722
  ``vlmc create <volumename> --size <size>`` creates an empty volume of size
723
  <size> named <volumename>.
714 724

  
715 725
* ``vlmc remove <volumename>``: removes the volume and all the related
716 726
  archipelago blocks from storage.
......
859 869
  the above components, and updates the Cyclades DB accordingly.
860 870

  
861 871
Installation
862
````````````
872
~~~~~~~~~~~~
873

  
863 874
Please check the RabbitMQ documentation which covers extensively the
864 875
`installation of RabbitMQ server <http://www.rabbitmq.com/download.html>`_ and
865 876
the setup of a `RabbitMQ cluster <http://www.rabbitmq.com/clustering.html>`_.
......
951 962
Scaling up to multiple nodes
952 963
============================
953 964

  
954
Here we will describe how to deploy all services, interconnected with each
955
other, on multiple physical nodes.
965
Here we will describe how should a large scale Synnefo deployment look like. Make
966
sure you are familiar with Synnefo and Ganeti before proceeding with this section.
967
This means you should at least have already set up successfully a working Synnefo
968
deployment as described in the :ref:`Admin's Quick Installation Guide
969
<quick-install-admin-guide>` and also read the Administrator's Guide until this
970
section.
956 971

  
957
synnefo components
958
------------------
972
Graph of a scale-out Synnefo deployment
973
---------------------------------------
959 974

  
960
You need to install the appropriate synnefo software components on each node,
961
depending on its type, see :ref:`Architecture <cyclades-architecture>`.
975
Each box in the following graph corresponds to a distinct physical node:
962 976

  
963
Please see the page of each synnefo software component for specific
964
installation instructions, where applicable.
977
.. image:: images/synnefo-arch2-roles.png
978
   :width: 100%
979
   :target: _images/synnefo-arch2-roles.png
980

  
981
The above graph is actually the same with the one at the beginning of this
982
:ref:`guide <admin-guide>`, with the only difference that here we show the
983
Synnefo roles of each physical node. These roles are described in the
984
following section.
985

  
986
Physical Node roles
987
-------------------
988

  
989
As appears in the previous graph, a scale-out Synnefo deployment consists of
990
multiple physical nodes that have the following roles:
991

  
992
* **WEBSERVER**: A web server running in front of gunicorn (e.g.: Apache, nginx)
993
* **ASTAKOS**: The Astakos application (gunicorn)
994
* **ASTAKOS_DB**: The Astakos database (postgresql)
995
* **PITHOS**: The Pithos application (gunicorn)
996
* **PITHOS_DB**: The Pithos database (postgresql)
997
* **CYCLADES**: The Cyclades application (gunicorn)
998
* **CYCLADES_DB**: The Cyclades database (postgresql)
999
* **MQ**: The message queue (RabbitMQ)
1000
* **GANETI_MASTER**: The Ganeti master of a Ganeti cluster
1001
* **GANETI_NODE** : A VM-capable Ganeti node of a Ganeti cluster
965 1002

  
966
Install the following synnefo components:
1003
You will probably also have:
967 1004

  
968
Nodes of type :ref:`APISERVER <APISERVER_NODE>`
969
    Components
970
    :ref:`snf-common <snf-common>`,
971
    :ref:`snf-webproject <snf-webproject>`,
972
    :ref:`snf-cyclades-app <snf-cyclades-app>`
973
Nodes of type :ref:`GANETI-MASTER <GANETI_MASTER>` and :ref:`GANETI-NODE <GANETI_NODE>`
974
    Components
975
    :ref:`snf-common <snf-common>`,
976
    :ref:`snf-cyclades-gtools <snf-cyclades-gtools>`
977
Nodes of type :ref:`LOGIC <LOGIC_NODE>`
978
    Components
979
    :ref:`snf-common <snf-common>`,
980
    :ref:`snf-webproject <snf-webproject>`,
981
    :ref:`snf-cyclades-app <snf-cyclades-app>`.
1005
* **CMS**: The CMS used as a frotend portal for the Synnefo services
1006
* **NS**: A nameserver serving all other nodes
1007
* **CLIENT**: A machine that runs the Synnefo clients (e.g.: kamaki, Web UI),
1008
              most of the times, the end user's local machine
1009

  
1010
From this point we will also refer to the following groups of roles:
1011

  
1012
* **SYNNEFO**: [ **ASTAKOS**, **ASTAKOS_DB**, **PITHOS**, **PITHOS_DB**, **CYCLADES**, **CYCLADES_DB**, **MQ**, **CMS**]
1013
* **G_BACKEND**: [**GANETI_MASTER**, **GANETI_NODE**]
1014

  
1015
Of course, when deploying Synnefo you can combine multiple of the above roles on a
1016
single physical node, but if you are trying to scale out, the above separation
1017
gives you significant advantages.
1018

  
1019
So, in the next section we will take a look on what components you will have to
1020
install on each physical node depending on its Synnefo role. We assume the graph's
1021
architecture.
1022

  
1023
Components for each role
1024
------------------------
982 1025

  
1026
When deploying Synnefo in large scale, you need to install different Synnefo
1027
or/and third party components on different physical nodes according to their
1028
Synnefo role, as stated in the previous section.
1029

  
1030
Specifically:
1031

  
1032
Role **WEBSERVER**
1033
    * Synnefo components: `None`
1034
    * 3rd party components: Apache
1035
Role **ASTAKOS**
1036
    * Synnefo components: `snf-webproject`, `snf-astakos-app`
1037
    * 3rd party components: Django, Gunicorn
1038
Role **ASTAKOS_DB**
1039
    * Synnefo components: `None`
1040
    * 3rd party components: PostgreSQL
1041
Role **PITHOS**
1042
    * Synnefo components: `snf-webproject`, `snf-pithos-app`, `snf-pithos-webclient`
1043
    * 3rd party components: Django, Gunicorn
1044
Role **PITHOS_DB**
1045
    * Synnefo components: `None`
1046
    * 3rd party components: PostgreSQL
1047
Role **CYCLADES**
1048
    * Synnefo components: `snf-webproject`, `snf-cyclades-app`, `snf-vncauthproxy`
1049
    * 3rd party components: Django Gunicorn
1050
Role **CYCLADES_DB**
1051
    * Synnefo components: `None`
1052
    * 3rd party components: PostgreSQL
1053
Role **MQ**
1054
    * Synnefo components: `None`
1055
    * 3rd party components: RabbitMQ
1056
Role **GANETI_MASTER**
1057
    * Synnefo components: `snf-cyclades-gtools`
1058
    * 3rd party components: Ganeti
1059
Role **GANETI_NODE**
1060
    * Synnefo components: `snf-cyclades-gtools`, `snf-network`, `snf-image`, `nfdhcpd`
1061
    * 3rd party components: Ganeti
1062
Role **CMS**
1063
    * Synnefo components: `snf-webproject`, `snf-cloudcms`
1064
    * 3rd party components: Django, Gunicorn
1065
Role **NS**
1066
    * Synnefo components: `None`
1067
    * 3rd party components: BIND
1068
Role **CLIENT**
1069
    * Synnefo components: `kamaki`, `snf-image-creator`
1070
    * 3rd party components: `None`
1071

  
1072
Example scale out installation
1073
------------------------------
1074

  
1075
In this section we describe an example of a medium scale installation which
1076
combines multiple roles on 10 different physical nodes. We also provide a
1077
:ref:`guide <i-synnefo>` to help with such an install.
1078

  
1079
We assume that we have the following 10 physical nodes with the corresponding
1080
roles:
1081

  
1082
Node1:
1083
    **WEBSERVER**, **ASTAKOS**
1084
      Guide sections:
1085
        * :ref:`apt <i-apt>`
1086
        * :ref:`gunicorn <i-gunicorn>`
1087
        * :ref:`apache <i-apache>`
1088
        * :ref:`snf-webproject <i-webproject>`
1089
        * :ref:`snf-astakos-app <i-astakos>`
1090
Node2:
1091
    **WEBSERVER**, **PITHOS**
1092
      Guide sections:
1093
        * :ref:`apt <i-apt>`
1094
        * :ref:`gunicorn <i-gunicorn>`
1095
        * :ref:`apache <i-apache>`
1096
        * :ref:`snf-webproject <i-webproject>`
1097
        * :ref:`snf-pithos-app <i-pithos>`
1098
        * :ref:`snf-pithos-webclient <i-pithos>`
1099
Node3:
1100
    **WEBSERVER**, **CYCLADES**
1101
      Guide sections:
1102
        * :ref:`apt <i-apt>`
1103
        * :ref:`gunicorn <i-gunicorn>`
1104
        * :ref:`apache <i-apache>`
1105
        * :ref:`snf-webproject <i-webproject>`
1106
        * :ref:`snf-cyclades-app <i-cyclades>`
1107
        * :ref:`snf-vncauthproxy <i-cyclades>`
1108
Node4:
1109
    **WEBSERVER**, **CMS**
1110
      Guide sections:
1111
        * :ref:`apt <i-apt>`
1112
        * :ref:`gunicorn <i-gunicorn>`
1113
        * :ref:`apache <i-apache>`
1114
        * :ref:`snf-webproject <i-webproject>`
1115
        * :ref:`snf-cloudcms <i-cms>`
1116
Node5:
1117
    **ASTAKOS_DB**, **PITHOS_DB**, **CYCLADES_DB**
1118
      Guide sections:
1119
        * :ref:`apt <i-apt>`
1120
        * :ref:`postgresql <i-db>`
1121
Node6:
1122
    **MQ**
1123
      Guide sections:
1124
        * :ref:`apt <i-apt>`
1125
        * :ref:`rabbitmq <i-mq>`
1126
Node7:
1127
    **GANETI_MASTER**, **GANETI_NODE**
1128
      Guide sections:
1129
        * :ref:`apt <i-apt>`
1130
        * :ref:`general <i-backends>`
1131
        * :ref:`ganeti <i-ganeti>`
1132
        * :ref:`snf-cyclades-gtools <i-gtools>`
1133
        * :ref:`snf-network <i-network>`
1134
        * :ref:`snf-image <i-image>`
1135
        * :ref:`nfdhcpd <i-network>`
1136
Node8:
1137
    **GANETI_NODE**
1138
      Guide sections:
1139
        * :ref:`apt <i-apt>`
1140
        * :ref:`general <i-backends>`
1141
        * :ref:`ganeti <i-ganeti>`
1142
        * :ref:`snf-cyclades-gtools <i-gtools>`
1143
        * :ref:`snf-network <i-network>`
1144
        * :ref:`snf-image <i-image>`
1145
        * :ref:`nfdhcpd <i-network>`
1146
Node9:
1147
    **GANETI_NODE**
1148
      Guide sections:
1149
        `Same as Node8`
1150
Node10:
1151
    **GANETI_NODE**
1152
      Guide sections:
1153
        `Same as Node8`
1154

  
1155
All sections: :ref:`Scale out Guide <i-synnefo>`
983 1156

  
984 1157

  
985 1158
Upgrade Notes

Also available in: Unified diff