Revision 84809111

b/docs/scale/i-apache.rst
12 12
apache ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-apt.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
......
47 48

  
48 49
Test your Setup:
49 50
++++++++++++++++
51

  
52
.. code-block:: console
53

  
54
   apt-cache policy synnefo
b/docs/scale/i-astakos.rst
55 55

  
56 56
    ASTAKOS_COOKIE_DOMAIN = 'example.com'
57 57

  
58
    ASTAKOS_LOGIN_MESSAGES = []
59
    ASTAKOS_SIGNUP_MESSAGES = []
60
    ASTAKOS_PROFILE_MESSAGES = []
61
    ASTAKOS_GLOBAL_MESSAGES = []
62

  
63
    ASTAKOS_PROFILE_EXTRA_LINKS = []
64
    ASTAKOS_INVITATION_EMAIL_SUBJECT = 'Invitation to %s' % ASTAKOS_SITENAME
65
    ASTAKOS_GREETING_EMAIL_SUBJECT = 'Welcome to %s' % ASTAKOS_SITENAME
66
    ASTAKOS_FEEDBACK_EMAIL_SUBJECT = 'Feedback from %s' % ASTAKOS_SITENAME
67
    ASTAKOS_VERIFICATION_EMAIL_SUBJECT = '%s account activation is needed' % ASTAKOS_SITENAME
68
    ASTAKOS_ADMIN_NOTIFICATION_EMAIL_SUBJECT = '%s account created (%%(user)s)' % ASTAKOS_SITENAME
69
    ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT = '%s account activated (%%(user)s)' % ASTAKOS_SITENAME
70
    ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT = 'Email change on %s' % ASTAKOS_SITENAME
71
    ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT = 'Password reset on %s' % ASTAKOS_SITENAME
72

  
73
    ASTAKOS_QUOTAHOLDER_TOKEN = '1234'
74
    ASTAKOS_QUOTAHOLDER_URL = 'https://qh.example.com/quotaholder/v'
75

  
76
    EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
77
    ASTAKOS_SERVICES = {
78
        'cyclades': {
79
            'url': 'https://cyclades.example.com/ui/',
80
            'resources': [{
81
                'name':'disk',
82
                'group':'compute',
83
                'uplimit':30*1024*1024*1024,
84
                'unit':'bytes',
85
                'desc': 'Virtual machine disk size'
86
                },{
87
                'name':'cpu',
88
                'group':'compute',
89
                'uplimit':6,
90
                'desc': 'Number of virtual machine processors'
91
                },{
92
                'name':'ram',
93
                'group':'compute',
94
                'uplimit':6*1024*1024*1024,
95
                'unit':'bytes',
96
                'desc': 'Virtual machines'
97
                },{
98
                'name':'vm',
99
                'group':'compute',
100
                'uplimit':2,
101
                'desc': 'Number of virtual machines'
102
                },{
103
                'name':'network.private',
104
                'group':'network',
105
                'uplimit':1,
106
                'desc': 'Private networks'
107
                }
108
            ]
109
        },
110
        'pithos+': {
111
            'url': 'https://pithos.example.com/ui/',
112
            'resources':[{
113
                'name':'diskspace',
114
                'group':'storage',
115
                'uplimit':5 * 1024 * 1024 * 1024,
116
                'unit':'bytes',
117
                'desc': 'Pithos account diskspace'
118
                }]
119
        }
120
    }
121

  
122

  
58 123
If ``astakos`` is on the same node with ``cyclades`` or ``pithos``, add the following
59 124
line in `/etc/synnefo/astakos.conf` but please note that your setup will be prone to
60 125
csrf attacks:
......
69 134

  
70 135
   # /etc/init.d/gunicorn restart
71 136
   # snf-manage syncdb --noinput
72
   # snf-manage migrate im
137
   # snf-manage migrate im --delete-ghost-migrations
73 138
   # snf-manage loaddata groups
74
   # snf-manage service-add "~okeanos home" https://cms.example.com/ home-icon.png
139
   # snf-manage service-add "home" https://cms.example.com/ home-icon.png
75 140
   # snf-manage service-add "cyclades" https://cyclades.example.com/ui/
76 141
   # snf-manage service-add "pithos+" https://pithos.example.com/ui/
142
   # snf-manage astakos-init --load-service-resources
143
   # snf-manage astakos-quota --sync
77 144
   # /etc/init.d/gunicorn restart
78 145
   # /etc/init.d/apache2 restart
79 146

  
......
105 172

  
106 173
Test your Setup:
107 174
++++++++++++++++
175

  
176
Visit ``http://accounts.example.com/im/`` and login with your credentials.
b/docs/scale/i-backends.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-cms.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
cms ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
......
133 134

  
134 135
Test your Setup:
135 136
++++++++++++++++
137

  
138
Visit https://cms.example.com/
b/docs/scale/i-cyclades.rst
13 13
:ref:`apache <i-apache>` ||
14 14
:ref:`webproject <i-webproject>` ||
15 15
:ref:`astakos <i-astakos>` ||
16
:ref:`qh <i-qh>` ||
16 17
:ref:`cms <i-cms>` ||
17 18
:ref:`pithos <i-pithos>` ||
18 19
cyclades ||
......
33 34

  
34 35
    # apt-get install memcached
35 36
    # apt-get install python-memcache
37
    # apt-get install kamaki
38
    # apt-get install snf-pithos-backend
36 39
    # apt-get install snf-cyclades-app
37 40

  
38 41
In `/etc/synnefo/cyclades.conf` add:
......
42 45
    MAX_CIDR_BLOCK = 21
43 46
    PUBLIC_USE_POOL = True
44 47

  
45
    CUSTOM_BRIDGED_BRIDGE = 'br0'
46

  
47 48
    MAX_VMS_PER_USER = 5
48 49
    VMS_USER_QUOTA = {
49 50
        'user@example.com': 20,
50 51
    }
51 52
    MAX_NETWORKS_PER_USER = 3
52 53
    NETWORKS_USER_QUOTA = { 'user@example.com': 10 }
54

  
55
    CPU_BAR_GRAPH_URL = 'https://cyclades.example.com/stats/%s/cpu-bar.png'
56
    CPU_TIMESERIES_GRAPH_URL = 'https://cyclades.example.com/stats/%s/cpu-ts.png'
57
    NET_BAR_GRAPH_URL = 'https://cyclades.example.com/stats/%s/net-bar.png'
58
    NET_TIMESERIES_GRAPH_URL = 'https://cyclades.example.com/stats/%s/net-ts.png'
59

  
53 60
    GANETI_DISK_TEMPLATES = ('blockdev', 'diskless', 'drbd', 'file', 'plain',
54 61
                             'rbd',  'sharedfile', 'ext')
55 62
    ASTAKOS_URL = 'https://accounts.example.com/im/authenticate'
......
71 78

  
72 79
    AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
73 80

  
81
    TIMEOUT = 60 * 1000
82
    UI_UPDATE_INTERVAL = 2000
83
    FEEDBACK_CONTACTS = (
84
        ('feedback@example.com', 'feedback@example.com'),
85
    )
86
    UI_LOGIN_URL = "https://accounts.example.com/im/login"
87
    UI_LOGOUT_URL = "https://accounts.example.com/im/logout"
88
    UI_FLAVORS_DISK_TEMPLATES_INFO = {
89
        'rbd': {'name': 'Rbd',
90
               'description': 'Volumes residing inside a RADOS cluster'},
91

  
92
        'plain': {'name': 'Local',
93
                 'description': 'Fast, not high available local storage (LVM)'},
94

  
95
        'drbd': {'name': 'Standard',
96
                 'description': 'High available persistent storage (DRBD)'},
97

  
98
        'ext_vlmc': {'name': 'Tmp',
99
                    'description': 'Volatile storage'},
100
    }
101
    UI_SUPPORT_SSH_OS_LIST = ['debian', 'fedora', 'okeanos', 'ubuntu', 'kubuntu',
102
                              'centos', 'archlinux', 'gentoo']
103
    UI_SYSTEM_IMAGES_OWNERS = {
104
        'images@okeanos.io': 'system',
105
    }
106

  
74 107
    CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
75 108
    VMAPI_BASE_URL = 'https://cyclades.example.com/'
76 109

  
110
    CYCLADES_QUOTAHOLDER_TOKEN = '1234'
111
    CYCLADES_QUOTAHOLDER_URL = 'https://qh.example.com/quotaholder/v'
112
    CYCLADES_USE_QUOTAHOLDER = True
113

  
114
    CYCLADES_ASTAKOS_SERVICE_TOKEN = "XXXXXXXXXX"
115

  
116
    CYCLADES_USER_CATALOG_URL = 'https://accounts.example.com/user_catalogs'
117

  
118
    UI_SYSTEM_IMAGES_OWNERS = {
119
        'admin@synnefo.gr': 'system',
120
        'images@synnefo.gr': 'system'
121
    }
122

  
123
XXXXXXXX is the token for cyclades registered service and can be found
124
in astakos node running:
125

  
126
.. code-block:: console
127

  
128
   snf-manage service-list
129

  
77 130

  
78 131
Restart services and initialize database:
79 132

  
......
82 135
   # /etc/init.d/gunicorn restart
83 136
   # /etc/init.d/apache2 restart
84 137
   # snf-manage syncdb
85
   # snf-manage migrate
138
   # snf-manage migrate --delete-ghost-migrations
86 139
   # snf-manage loaddata flavors
87 140

  
88 141
Enable dispatcher:
......
143 196

  
144 197
.. code-block:: console
145 198

  
146
   PRIVATE_MAC_FILTERED_BRIDGE = 'prv0'
199
   DEFAULT_MAC_FILTERED_BRIDGE = 'prv0'
147 200

  
148 201
Add public network where the VM's will eventually connect to in order to
149 202
access Internet:
......
155 208

  
156 209
Test your Setup:
157 210
++++++++++++++++
211

  
212
In cyclades node run:
213

  
214
.. code-block:: console
215

  
216
    snf-manage backend-list
217
    snf-manage network-list
218
    snf-manage server-list
219

  
220
Visit https://cyclades.example.com/ui/ and create a VM or network.
221

  
b/docs/scale/i-db.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-ganeti.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
......
74 75

  
75 76
Test your Setup:
76 77
++++++++++++++++
78

  
79
In master node run:
80

  
81
.. code-block:: console
82

  
83
   gnt-cluster info
84
   gnt-node list
85
   gnt-network list
86
   gnt-instance list
b/docs/scale/i-gtools.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-gunicorn.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-image.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-kamaki.rst
13 13
:ref:`apache <i-apache>` ||
14 14
:ref:`webproject <i-webproject>` ||
15 15
:ref:`astakos <i-astakos>` ||
16
:ref:`qh <i-qh>` ||
16 17
:ref:`cms <i-cms>` ||
17 18
:ref:`pithos <i-pithos>` ||
18 19
:ref:`cyclades <i-cyclades>` ||
......
23 24
++++++++++++
24 25

  
25 26
The following apply to ``client`` node. Here we install a command line tool
26
that the end-user can use instead of web UI. Prerequisites are that the
27
client node can connect to synnefo nodes by using their FQDN and that
28
the user has already aquired an AUTH_TOKEN from his/her profile page after
29
signing in.
27
that the end-user can use instead of web UI. Prerequisites are that the client
28
node can connect to synnefo nodes by using their FQDN and that the user has
29
already aquired an AUTH_TOKEN and UUID from his/her profile page after signing
30
in.
30 31

  
31 32
Install the corresponding package:
32 33

  
......
44 45
    # kamaki config set store.enable on
45 46
    # kamaki config set store.pithos_extensions on
46 47
    # kamaki config set store.url "https://pithos.example.com/v1"
47
    # kamaki config set store.account "user@example.com"
48
    # kamaki config set store.account UUID
48 49

  
49 50
    # kamaki config set global.token AUTH_TOKEN
50 51

  
......
80 81
                    --property OS=debian \
81 82
                    --public
82 83

  
84
Test your Setup:
85
++++++++++++++++
83 86

  
87
.. code-block:: console
84 88

  
89
   # kamaki store list
90
   # kamaki image list
85 91

  
86

  
87
Test your Setup:
88
++++++++++++++++
92
And visit https://cyclades.example.com/ui/ and try to create a VM with the registered image
93
or visit https://pithos.example.com/ui/ and see your uploaded image.
b/docs/scale/i-mq.rst
11 11
:ref:`gunicorn <i-gunicorn>` ||
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`astakos <i-astakos>` ||
14
:ref:`qh <i-qh>` ||
14 15
:ref:`cms <i-cms>` ||
15 16
:ref:`pithos <i-pithos>` ||
16 17
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-network.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
......
69 70

  
70 71
Test your Setup:
71 72
++++++++++++++++
73

  
74
Create a VM inside the public network via UI or Ganeti and see if it has internet connectivity.
b/docs/scale/i-ns.rst
13 13
:ref:`apache <i-apache>` ||
14 14
:ref:`webproject <i-webproject>` ||
15 15
:ref:`astakos <i-astakos>` ||
16
:ref:`qh <i-qh>` ||
16 17
:ref:`cms <i-cms>` ||
17 18
:ref:`pithos <i-pithos>` ||
18 19
:ref:`cyclades <i-cyclades>` ||
......
34 35

  
35 36
For the sake of simplicity we assume we have 6 nodes assinged the following roles:
36 37

  
37
========  =========  ========================   ====================
38
hostname  IP         roles                      FQDN
39
========  =========  ========================   ====================
40
node1     4.3.2.1    ns,router,client,astakos   accounts.example.com
41
node2     4.3.2.2    cyclades                   cyclades.example.com
42
node3     4.3.2.3    pithos                     pithos.example.com
43
node4     4.3.2.4    cms                        cms.example.com
44
node5     4.3.2.5    db                         db.example.com
45
node6     4.3.2.6    mq                         mq.example.com
46
node1     4.3.2.100  master                     ganeti.example.com
47
========  =========  ========================   ====================
38
========  =========  ===========================    ====================
39
hostname  IP         roles                          FQDN
40
========  =========  ===========================    ====================
41
node1     4.3.2.1    ns,router,client,astakos,qh    accounts.example.com
42
node2     4.3.2.2    cyclades                       cyclades.example.com
43
node3     4.3.2.3    pithos                         pithos.example.com
44
node4     4.3.2.4    cms                            cms.example.com
45
node5     4.3.2.5    db                             db.example.com
46
node6     4.3.2.6    mq                             mq.example.com
47
node1     4.3.2.100  master                         ganeti.example.com
48
========  =========  ===========================    ====================
48 49

  
49 50

  
50 51
First install the corresponding package:
......
82 83
    cms             IN        CNAME   node4.example.com.
83 84
    db              IN        CNAME   node5.example.com.
84 85
    mq              IN        CNAME   node6.example.com.
86
    qh              IN        CNAME   node1.example.com.
85 87

  
86 88
    node1           IN        A       4.3.2.1
87 89
    node2           IN        A       4.3.2.2
......
98 100
.. code-block:: console
99 101

  
100 102
    $TTL 86400
101
    $ORIGIN 0-24.2.3.4.in-addr.arpa.
103
    $ORIGIN 2.3.4.in-addr.arpa.
102 104
    @               IN      SOA     ns.example.com. admin.skata.com. (
103 105
    2012070900; the Serial Number
104 106
    172800; the Refresh Rate
......
148 150

  
149 151
Test your Setup:
150 152
++++++++++++++++
153

  
154
Try to ping all FQDNs.
b/docs/scale/i-pithos.rst
13 13
:ref:`apache <i-apache>` ||
14 14
:ref:`webproject <i-webproject>` ||
15 15
:ref:`astakos <i-astakos>` ||
16
:ref:`qh <i-qh>` ||
16 17
:ref:`cms <i-cms>` ||
17 18
pithos ||
18 19
:ref:`cyclades <i-cyclades>` ||
......
68 69
    PITHOS_UPDATE_MD5 = False
69 70
    PITHOS_SERVICE_TOKEN = 'XXXXXXXXXXX'
70 71

  
72
    PITHOS_QUOTAHOLDER_TOKEN = '1234'
73
    PITHOS_QUOTAHOLDER_URL = 'https://qh.example.com/quotaholder/v'
74

  
75
    # Set False if astakos & pithos are on the same node
76
    PITHOS_PROXY_USER_SERVICES = True
77
    PITHOS_USE_QUOTAHOLDER = True
78

  
71 79

  
72 80
Install pithos web UI with:
73 81

  
......
91 99
    PITHOS_UI_FEEDBACK_URL = "/feedback"
92 100

  
93 101

  
94
The ``PITHOS_SERVICE_TOKEN`` and ``PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE``  should be
95
the Pithos+ token and id returned by running on the astakos node:
102
XXXXXXXXXXXXXX  should be the Pithos+ token and id found on astakos node by running:
96 103

  
97 104
.. code-block:: console
98 105

  
......
108 115

  
109 116
Test your Setup:
110 117
++++++++++++++++
118

  
119
Visit https://pithos.example.com/ui/ and upload files.
b/docs/scale/i-qh.rst
1
.. _i-qh:
2

  
3
Synnefo
4
-------
5

  
6
:ref:`synnefo <i-synnefo>` ||
7
:ref:`ns <i-ns>` ||
8
:ref:`apt <i-apt>` ||
9
:ref:`mq <i-mq>` ||
10
:ref:`db <i-db>` ||
11
:ref:`gunicorn <i-gunicorn>` ||
12
:ref:`apache <i-apache>` ||
13
:ref:`webproject <i-webproject>` ||
14
:ref:`astakos <i-astakos>` ||
15
qh ||
16
:ref:`cms <i-cms>` ||
17
:ref:`pithos <i-pithos>` ||
18
:ref:`cyclades <i-cyclades>` ||
19
:ref:`kamaki <i-kamaki>` ||
20
:ref:`backends <i-backends>`
21

  
22
Quataholder Setup
23
+++++++++++++++++
24

  
25
The following apply to ``qh`` node. In the following sections
26
we will refer to its IP as ``qh.example.com`` . Make sure
27
you have db, mq, astakos, apache and gunicorn setup already.
28

  
29
First install the corresponding package:
30

  
31
.. code-block:: console
32

  
33
   # apt-get install snf-quotaholder-app
34

  
35
In `/etc/synnefo/quotaholder.conf` add:
36

  
37
.. code-block:: console
38

  
39
   QUOTAHOLDER_TOKEN = '1234'
40

  
41
and then run:
42

  
43
   # /etc/init.d/gunicorn restart
44
   # snf-manage syncdb --noinput
45

  
46

  
47
Test your Setup:
48
++++++++++++++++
49

  
50
Visit ``http://accounts.example.com/im/`` and login with your credentials and see
51
current usage.
b/docs/scale/i-synnefo.rst
12 12
:ref:`apache <i-apache>` ||
13 13
:ref:`webproject <i-webproject>` ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
b/docs/scale/i-webproject.rst
12 12
:ref:`apache <i-apache>` ||
13 13
webproject ||
14 14
:ref:`astakos <i-astakos>` ||
15
:ref:`qh <i-qh>` ||
15 16
:ref:`cms <i-cms>` ||
16 17
:ref:`pithos <i-pithos>` ||
17 18
:ref:`cyclades <i-cyclades>` ||
......
61 62

  
62 63
   SECRET_KEY = 'sy6)mw6a7x%n)-example_secret_key#zzk4jo6f2=uqu!1o%)'
63 64

  
65
   SESSION_COOKIE_DOMAIN = "example.com"
66

  
64 67
All the above enables pooling (of connections) and greenlet context.
65 68

  
66 69

  

Also available in: Unified diff