Revision 9684d509 doc/design-2.3.rst
b/doc/design-2.3.rst | ||
---|---|---|
7 | 7 |
|
8 | 8 |
.. contents:: :depth: 4 |
9 | 9 |
|
10 |
Detailed design |
|
11 |
=============== |
|
12 |
|
|
13 | 10 |
As for 2.1 and 2.2 we divide the 2.3 design into three areas: |
14 | 11 |
|
15 | 12 |
- core changes, which affect the master daemon/job queue/locking or |
... | ... | |
18 | 15 |
- external interface changes (e.g. command line, os api, hooks, ...) |
19 | 16 |
|
20 | 17 |
Core changes |
21 |
------------
|
|
18 |
============
|
|
22 | 19 |
|
23 | 20 |
Job priorities |
24 |
~~~~~~~~~~~~~~
|
|
21 |
--------------
|
|
25 | 22 |
|
26 | 23 |
Current state and shortcomings |
27 |
++++++++++++++++++++++++++++++
|
|
24 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
28 | 25 |
|
29 | 26 |
.. TODO: Describe current situation |
30 | 27 |
|
31 | 28 |
Proposed changes |
32 |
++++++++++++++++
|
|
29 |
~~~~~~~~~~~~~~~~
|
|
33 | 30 |
|
34 | 31 |
.. TODO: Describe changes to job queue and potentially client programs |
35 | 32 |
|
36 | 33 |
Worker pool |
37 |
^^^^^^^^^^^
|
|
34 |
+++++++++++
|
|
38 | 35 |
|
39 | 36 |
To support job priorities in the job queue, the worker pool underlying |
40 | 37 |
the job queue must be enhanced to support task priorities. Currently |
... | ... | |
69 | 66 |
priorities. |
70 | 67 |
|
71 | 68 |
IPv6 support |
72 |
~~~~~~~~~~~~
|
|
69 |
------------
|
|
73 | 70 |
|
74 | 71 |
Currently Ganeti does not support IPv6. This is true for nodes as well |
75 | 72 |
as instances. Due to the fact that IPv4 exhaustion is threateningly near |
... | ... | |
77 | 74 |
bigger clusters are supported. |
78 | 75 |
|
79 | 76 |
Supported IPv6 setup |
80 |
++++++++++++++++++++
|
|
77 |
~~~~~~~~~~~~~~~~~~~~
|
|
81 | 78 |
|
82 | 79 |
In Ganeti 2.3 we introduce additionally to the ordinary pure IPv4 |
83 | 80 |
setup a hybrid IPv6/IPv4 mode. The latter works as follows: |
... | ... | |
102 | 99 |
boundaries. |
103 | 100 |
|
104 | 101 |
netutils: Utilities for handling common network tasks |
105 |
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
102 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
106 | 103 |
|
107 | 104 |
Currently common util functions are kept in the utils modules. Since |
108 | 105 |
this module grows bigger and bigger network-related functions are moved |
... | ... | |
110 | 107 |
will be IPv6-enabled. |
111 | 108 |
|
112 | 109 |
Cluster initialization |
113 |
++++++++++++++++++++++
|
|
110 |
~~~~~~~~~~~~~~~~~~~~~~
|
|
114 | 111 |
|
115 | 112 |
As mentioned above there will be two different setups in terms of IP |
116 | 113 |
addressing: pure IPv4 and hybrid IPv6/IPv4 address. To choose that a |
117 | 114 |
new cluster init parameter *--primary-ip-version* is introduced. This is |
118 | 115 |
needed as a given name can resolve to both an IPv4 and IPv6 address on a |
119 |
dual-stack host effectively making it impossible to infer that bit.
|
|
116 |
dual-stack host effectively making it impossible to infer that bit. |
|
120 | 117 |
|
121 | 118 |
Once a cluster is initialized and the primary IP version chosen all |
122 | 119 |
nodes that join have to conform to that setup. In the case of our |
... | ... | |
128 | 125 |
daemon listening on network sockets to the IPv6 address. |
129 | 126 |
|
130 | 127 |
Node addition |
131 |
+++++++++++++
|
|
128 |
~~~~~~~~~~~~~
|
|
132 | 129 |
|
133 | 130 |
When adding a new node to a IPv6/IPv4 cluster it must have a IPv6 |
134 | 131 |
address to be used as primary and a IPv4 address used as secondary. As |
... | ... | |
139 | 136 |
the correct address needs to be passed to it. |
140 | 137 |
|
141 | 138 |
Name resolution |
142 |
+++++++++++++++
|
|
139 |
~~~~~~~~~~~~~~~
|
|
143 | 140 |
|
144 | 141 |
Since the gethostbyname*() functions do not support IPv6 name resolution |
145 | 142 |
will be done by using the recommended getaddrinfo(). |
146 | 143 |
|
147 | 144 |
IPv4-only components |
148 |
++++++++++++++++++++
|
|
145 |
~~~~~~~~~~~~~~~~~~~~
|
|
149 | 146 |
|
150 | 147 |
============================ =================== ==================== |
151 | 148 |
Component IPv6 Status Planned Version |
... | ... | |
157 | 154 |
|
158 | 155 |
|
159 | 156 |
Feature changes |
160 |
---------------
|
|
157 |
===============
|
|
161 | 158 |
|
162 | 159 |
|
163 | 160 |
External interface changes |
164 |
--------------------------
|
|
161 |
==========================
|
|
165 | 162 |
|
166 | 163 |
|
167 | 164 |
.. vim: set textwidth=72 : |
Also available in: Unified diff