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