Statistics
| Branch: | Tag: | Revision:

root / docs / scale / i-cyclades.rst @ d1e7d2b4

History | View | Annotate | Download (6.2 kB)

1 6928da52 Dimitris Aragiorgis
.. _i-cyclades:
2 6928da52 Dimitris Aragiorgis
3 6928da52 Dimitris Aragiorgis
Synnefo
4 6928da52 Dimitris Aragiorgis
-------
5 6928da52 Dimitris Aragiorgis
6 6928da52 Dimitris Aragiorgis
7 6928da52 Dimitris Aragiorgis
:ref:`synnefo <i-synnefo>` ||
8 6928da52 Dimitris Aragiorgis
:ref:`ns <i-ns>` ||
9 6928da52 Dimitris Aragiorgis
:ref:`apt <i-apt>` ||
10 6928da52 Dimitris Aragiorgis
:ref:`mq <i-mq>` ||
11 6928da52 Dimitris Aragiorgis
:ref:`db <i-db>` ||
12 6928da52 Dimitris Aragiorgis
:ref:`gunicorn <i-gunicorn>` ||
13 6928da52 Dimitris Aragiorgis
:ref:`apache <i-apache>` ||
14 6928da52 Dimitris Aragiorgis
:ref:`webproject <i-webproject>` ||
15 6928da52 Dimitris Aragiorgis
:ref:`astakos <i-astakos>` ||
16 84809111 Dimitris Aragiorgis
:ref:`qh <i-qh>` ||
17 6928da52 Dimitris Aragiorgis
:ref:`cms <i-cms>` ||
18 6928da52 Dimitris Aragiorgis
:ref:`pithos <i-pithos>` ||
19 6928da52 Dimitris Aragiorgis
cyclades ||
20 6928da52 Dimitris Aragiorgis
:ref:`kamaki <i-kamaki>` ||
21 6928da52 Dimitris Aragiorgis
:ref:`backends <i-backends>`
22 6928da52 Dimitris Aragiorgis
23 6928da52 Dimitris Aragiorgis
Cyclades Setup
24 6928da52 Dimitris Aragiorgis
++++++++++++++
25 6928da52 Dimitris Aragiorgis
26 6928da52 Dimitris Aragiorgis
The following apply to ``cyclades`` node. In the rest of the sections
27 6928da52 Dimitris Aragiorgis
we will refer to its IP with FQDN ``cyclades.example.com``.Please make sure you have
28 6928da52 Dimitris Aragiorgis
db, mq, gunicorn, apache, webproject, pithos and astakos already setup.
29 6928da52 Dimitris Aragiorgis
30 76db6d5e Dimitris Aragiorgis
Install the corresponding package. Please note that memcache is needed for
31 76db6d5e Dimitris Aragiorgis
versions >= 0.13 :
32 6928da52 Dimitris Aragiorgis
33 6928da52 Dimitris Aragiorgis
.. code-block:: console
34 6928da52 Dimitris Aragiorgis
35 76db6d5e Dimitris Aragiorgis
    # apt-get install memcached
36 76db6d5e Dimitris Aragiorgis
    # apt-get install python-memcache
37 84809111 Dimitris Aragiorgis
    # apt-get install kamaki
38 84809111 Dimitris Aragiorgis
    # apt-get install snf-pithos-backend
39 6928da52 Dimitris Aragiorgis
    # apt-get install snf-cyclades-app
40 6928da52 Dimitris Aragiorgis
41 6928da52 Dimitris Aragiorgis
In `/etc/synnefo/cyclades.conf` add:
42 6928da52 Dimitris Aragiorgis
43 6928da52 Dimitris Aragiorgis
.. code-block:: console
44 6928da52 Dimitris Aragiorgis
45 6928da52 Dimitris Aragiorgis
    MAX_CIDR_BLOCK = 21
46 6928da52 Dimitris Aragiorgis
    PUBLIC_USE_POOL = True
47 6928da52 Dimitris Aragiorgis
48 6928da52 Dimitris Aragiorgis
    MAX_VMS_PER_USER = 5
49 6928da52 Dimitris Aragiorgis
    VMS_USER_QUOTA = {
50 6928da52 Dimitris Aragiorgis
        'user@example.com': 20,
51 6928da52 Dimitris Aragiorgis
    }
52 6928da52 Dimitris Aragiorgis
    MAX_NETWORKS_PER_USER = 3
53 6928da52 Dimitris Aragiorgis
    NETWORKS_USER_QUOTA = { 'user@example.com': 10 }
54 84809111 Dimitris Aragiorgis
55 84809111 Dimitris Aragiorgis
    CPU_BAR_GRAPH_URL = 'https://cyclades.example.com/stats/%s/cpu-bar.png'
56 84809111 Dimitris Aragiorgis
    CPU_TIMESERIES_GRAPH_URL = 'https://cyclades.example.com/stats/%s/cpu-ts.png'
57 84809111 Dimitris Aragiorgis
    NET_BAR_GRAPH_URL = 'https://cyclades.example.com/stats/%s/net-bar.png'
58 84809111 Dimitris Aragiorgis
    NET_TIMESERIES_GRAPH_URL = 'https://cyclades.example.com/stats/%s/net-ts.png'
59 84809111 Dimitris Aragiorgis
60 6928da52 Dimitris Aragiorgis
    GANETI_DISK_TEMPLATES = ('blockdev', 'diskless', 'drbd', 'file', 'plain',
61 6928da52 Dimitris Aragiorgis
                             'rbd',  'sharedfile', 'ext')
62 4ab620b6 Christos Stavrakakis
    ASTAKOS_URL = 'https://accounts.example.com/'
63 6928da52 Dimitris Aragiorgis
64 6928da52 Dimitris Aragiorgis
    SECRET_ENCRYPTION_KEY= "oEs0pt7Di1mkxA0P6FiK"
65 6928da52 Dimitris Aragiorgis
66 6928da52 Dimitris Aragiorgis
    GANETI_CREATEINSTANCE_KWARGS = {
67 6928da52 Dimitris Aragiorgis
        'os': 'snf-image+default',
68 25d7843d Dimitris Aragiorgis
        'hvparams': {'serial_console': False},
69 6928da52 Dimitris Aragiorgis
        'wait_for_sync': False}
70 6928da52 Dimitris Aragiorgis
71 6928da52 Dimitris Aragiorgis
    GANETI_USE_HOTPLUG = True
72 6928da52 Dimitris Aragiorgis
    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
73 6928da52 Dimitris Aragiorgis
    CLOUDBAR_ACTIVE_SERVICE = '2'
74 6928da52 Dimitris Aragiorgis
    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
75 6928da52 Dimitris Aragiorgis
    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
76 6928da52 Dimitris Aragiorgis
    BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos'
77 6928da52 Dimitris Aragiorgis
    BACKEND_BLOCK_PATH = '/srv/pithos/data/'
78 6928da52 Dimitris Aragiorgis
79 6928da52 Dimitris Aragiorgis
    AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
80 6928da52 Dimitris Aragiorgis
81 84809111 Dimitris Aragiorgis
    TIMEOUT = 60 * 1000
82 84809111 Dimitris Aragiorgis
    UI_UPDATE_INTERVAL = 2000
83 84809111 Dimitris Aragiorgis
    FEEDBACK_CONTACTS = (
84 84809111 Dimitris Aragiorgis
        ('feedback@example.com', 'feedback@example.com'),
85 84809111 Dimitris Aragiorgis
    )
86 84809111 Dimitris Aragiorgis
    UI_LOGIN_URL = "https://accounts.example.com/im/login"
87 84809111 Dimitris Aragiorgis
    UI_LOGOUT_URL = "https://accounts.example.com/im/logout"
88 84809111 Dimitris Aragiorgis
    UI_FLAVORS_DISK_TEMPLATES_INFO = {
89 84809111 Dimitris Aragiorgis
        'rbd': {'name': 'Rbd',
90 84809111 Dimitris Aragiorgis
               'description': 'Volumes residing inside a RADOS cluster'},
91 84809111 Dimitris Aragiorgis
92 84809111 Dimitris Aragiorgis
        'plain': {'name': 'Local',
93 84809111 Dimitris Aragiorgis
                 'description': 'Fast, not high available local storage (LVM)'},
94 84809111 Dimitris Aragiorgis
95 84809111 Dimitris Aragiorgis
        'drbd': {'name': 'Standard',
96 84809111 Dimitris Aragiorgis
                 'description': 'High available persistent storage (DRBD)'},
97 84809111 Dimitris Aragiorgis
98 84809111 Dimitris Aragiorgis
        'ext_vlmc': {'name': 'Tmp',
99 84809111 Dimitris Aragiorgis
                    'description': 'Volatile storage'},
100 84809111 Dimitris Aragiorgis
    }
101 84809111 Dimitris Aragiorgis
    UI_SUPPORT_SSH_OS_LIST = ['debian', 'fedora', 'okeanos', 'ubuntu', 'kubuntu',
102 84809111 Dimitris Aragiorgis
                              'centos', 'archlinux', 'gentoo']
103 84809111 Dimitris Aragiorgis
    UI_SYSTEM_IMAGES_OWNERS = {
104 84809111 Dimitris Aragiorgis
        'images@okeanos.io': 'system',
105 84809111 Dimitris Aragiorgis
    }
106 84809111 Dimitris Aragiorgis
107 76db6d5e Dimitris Aragiorgis
    CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
108 76db6d5e Dimitris Aragiorgis
    VMAPI_BASE_URL = 'https://cyclades.example.com/'
109 76db6d5e Dimitris Aragiorgis
110 84809111 Dimitris Aragiorgis
    CYCLADES_QUOTAHOLDER_TOKEN = '1234'
111 84809111 Dimitris Aragiorgis
    CYCLADES_QUOTAHOLDER_URL = 'https://qh.example.com/quotaholder/v'
112 84809111 Dimitris Aragiorgis
    CYCLADES_USE_QUOTAHOLDER = True
113 84809111 Dimitris Aragiorgis
114 84809111 Dimitris Aragiorgis
    CYCLADES_ASTAKOS_SERVICE_TOKEN = "XXXXXXXXXX"
115 84809111 Dimitris Aragiorgis
116 84809111 Dimitris Aragiorgis
    CYCLADES_USER_CATALOG_URL = 'https://accounts.example.com/user_catalogs'
117 84809111 Dimitris Aragiorgis
118 84809111 Dimitris Aragiorgis
    UI_SYSTEM_IMAGES_OWNERS = {
119 84809111 Dimitris Aragiorgis
        'admin@synnefo.gr': 'system',
120 84809111 Dimitris Aragiorgis
        'images@synnefo.gr': 'system'
121 84809111 Dimitris Aragiorgis
    }
122 84809111 Dimitris Aragiorgis
123 84809111 Dimitris Aragiorgis
XXXXXXXX is the token for cyclades registered service and can be found
124 84809111 Dimitris Aragiorgis
in astakos node running:
125 84809111 Dimitris Aragiorgis
126 84809111 Dimitris Aragiorgis
.. code-block:: console
127 84809111 Dimitris Aragiorgis
128 84809111 Dimitris Aragiorgis
   snf-manage service-list
129 84809111 Dimitris Aragiorgis
130 6928da52 Dimitris Aragiorgis
131 6928da52 Dimitris Aragiorgis
Restart services and initialize database:
132 6928da52 Dimitris Aragiorgis
133 6928da52 Dimitris Aragiorgis
.. code-block:: console
134 6928da52 Dimitris Aragiorgis
135 6928da52 Dimitris Aragiorgis
   # /etc/init.d/gunicorn restart
136 6928da52 Dimitris Aragiorgis
   # /etc/init.d/apache2 restart
137 6928da52 Dimitris Aragiorgis
   # snf-manage syncdb
138 84809111 Dimitris Aragiorgis
   # snf-manage migrate --delete-ghost-migrations
139 6928da52 Dimitris Aragiorgis
   # snf-manage loaddata flavors
140 6928da52 Dimitris Aragiorgis
141 6928da52 Dimitris Aragiorgis
Enable dispatcher:
142 6928da52 Dimitris Aragiorgis
143 6928da52 Dimitris Aragiorgis
.. code-block:: console
144 6928da52 Dimitris Aragiorgis
145 6928da52 Dimitris Aragiorgis
   # sed -i 's/false/true/' /etc/default/snf-dispatcher
146 6928da52 Dimitris Aragiorgis
   # /etc/init.d/snf-dispatcher start
147 6928da52 Dimitris Aragiorgis
148 6928da52 Dimitris Aragiorgis
In order end-user to have access to the VM's console:
149 6928da52 Dimitris Aragiorgis
150 6928da52 Dimitris Aragiorgis
.. code-block:: console
151 6928da52 Dimitris Aragiorgis
152 6928da52 Dimitris Aragiorgis
   # apt-get install snf-vncauthproxy
153 6928da52 Dimitris Aragiorgis
154 6928da52 Dimitris Aragiorgis
Edit `/etc/default/vncauthproxy`:
155 6928da52 Dimitris Aragiorgis
156 6928da52 Dimitris Aragiorgis
.. code-block:: console
157 6928da52 Dimitris Aragiorgis
158 6928da52 Dimitris Aragiorgis
   CHUID="www-data:nogroup"
159 6928da52 Dimitris Aragiorgis
160 6928da52 Dimitris Aragiorgis
161 6928da52 Dimitris Aragiorgis
At this point you should setup a :ref:`backend <i-backends>`. Please refer to the
162 6928da52 Dimitris Aragiorgis
coresponding section.  Here we assume that at least one backend is up and running,
163 6928da52 Dimitris Aragiorgis
so we can add it in Cyclades with:
164 6928da52 Dimitris Aragiorgis
165 6928da52 Dimitris Aragiorgis
.. code-block:: console
166 6928da52 Dimitris Aragiorgis
167 6928da52 Dimitris Aragiorgis
   # snf-manage backend-add --clustername=ganeti.example.com --user=synnefo --pass=example_rapi_passw0rd
168 6928da52 Dimitris Aragiorgis
169 c5e6a4b6 Dimitris Aragiorgis
After 0.13 every backend added stays in drained mode (no VMs can be added).
170 c5e6a4b6 Dimitris Aragiorgis
Therefore get your backend ID (propably 1) and run:
171 c5e6a4b6 Dimitris Aragiorgis
172 c5e6a4b6 Dimitris Aragiorgis
.. code-block:: console
173 c5e6a4b6 Dimitris Aragiorgis
174 c5e6a4b6 Dimitris Aragiorgis
   # snf-manage backend-list
175 c5e6a4b6 Dimitris Aragiorgis
   # snf-manage backend-modify --drained=False 1
176 c5e6a4b6 Dimitris Aragiorgis
177 6928da52 Dimitris Aragiorgis
Further assumptions:
178 6928da52 Dimitris Aragiorgis
179 6928da52 Dimitris Aragiorgis
- Preprovisioned Bridges: ``br0``, ``prv0``, ``prv1..prv20``
180 6928da52 Dimitris Aragiorgis
- Available "public" Subnet: ``10.0.1.0/24``
181 6928da52 Dimitris Aragiorgis
- Available "public" Gateway: ``10.0.1.1``
182 6928da52 Dimitris Aragiorgis
- Connectivity link for public network: ``br0``
183 6928da52 Dimitris Aragiorgis
184 6928da52 Dimitris Aragiorgis
185 6928da52 Dimitris Aragiorgis
Here admin has to define two different resource pools in Synnefo:
186 6928da52 Dimitris Aragiorgis
187 6928da52 Dimitris Aragiorgis
 - MAC prefix Pool
188 6928da52 Dimitris Aragiorgis
 - Bridge Pool
189 6928da52 Dimitris Aragiorgis
190 6928da52 Dimitris Aragiorgis
.. code-block:: console
191 6928da52 Dimitris Aragiorgis
192 6928da52 Dimitris Aragiorgis
   # snf-manage pool-create --type=mac-prefix --base=aa:00:0 --size=65536
193 6928da52 Dimitris Aragiorgis
   # snf-manage pool-create --type=bridge --base=prv --size=20
194 6928da52 Dimitris Aragiorgis
195 6928da52 Dimitris Aragiorgis
Add the synnefo setting in :file:`/etc/synnefo/cyclades.conf`:
196 6928da52 Dimitris Aragiorgis
197 6928da52 Dimitris Aragiorgis
.. code-block:: console
198 6928da52 Dimitris Aragiorgis
199 84809111 Dimitris Aragiorgis
   DEFAULT_MAC_FILTERED_BRIDGE = 'prv0'
200 6928da52 Dimitris Aragiorgis
201 6928da52 Dimitris Aragiorgis
Add public network where the VM's will eventually connect to in order to
202 6928da52 Dimitris Aragiorgis
access Internet:
203 6928da52 Dimitris Aragiorgis
204 6928da52 Dimitris Aragiorgis
.. code-block:: console
205 6928da52 Dimitris Aragiorgis
206 6928da52 Dimitris Aragiorgis
   # snf-manage network-create --subnet=10.0.1.0/24 --gateway=10.0.1.1 --public --dhcp --flavor=CUSTOM --mode=bridged --link=br0 --name=Internet --backend-id=1
207 81b92b0f Dimitris Aragiorgis
208 81b92b0f Dimitris Aragiorgis
209 81b92b0f Dimitris Aragiorgis
Test your Setup:
210 81b92b0f Dimitris Aragiorgis
++++++++++++++++
211 84809111 Dimitris Aragiorgis
212 84809111 Dimitris Aragiorgis
In cyclades node run:
213 84809111 Dimitris Aragiorgis
214 84809111 Dimitris Aragiorgis
.. code-block:: console
215 84809111 Dimitris Aragiorgis
216 84809111 Dimitris Aragiorgis
    snf-manage backend-list
217 84809111 Dimitris Aragiorgis
    snf-manage network-list
218 84809111 Dimitris Aragiorgis
    snf-manage server-list
219 84809111 Dimitris Aragiorgis
220 84809111 Dimitris Aragiorgis
Visit https://cyclades.example.com/ui/ and create a VM or network.