Progetto

Generale

Profilo

LinuxOpenVZHowto » Cronologia » Versione 27

Simone Piccardi, 20-12-2010 18:09

1 26 Amministratore Truelite
h1. Come creare un ambiente "virtualizzato" con [[OpenVZ]] su Lenny
2 1 Amministratore Truelite
3
4 26 Amministratore Truelite
Il supporto per "OpenVZ":http://wiki.openvz.org/ è presente in Debian a partire da _Etch_. Come per Vserver la tecnologia dei _container_ usata da "OpenVZ":http://wiki.openvz.org/, pur non fornendo una macchina virtuale vera e propria, consente  un uso estremamente efficiente delle risorse, permettendo creare una serie di sistemi indipendenti, chiamati _virtual-environment_ (da qui in breve VE), che girano sotto lo stesso kernel, utilizzando lo stesso filesystem ed un unico stack di rete, che pur non essendo macchine virtuali in senso stretto, nella gestione ordinaria possono essere tranquillamente considerate come tali.
5 1 Amministratore Truelite
6 26 Amministratore Truelite
Ovviamente non trattandosi di una tecnologia di virtualizzazione, non consente di installare un _virtual-server_ con un sistema operativo diverso, come Windows. Qualora si abbiano di queste esigenze si dovrà ricorrere a tecnologie alternative come Xen o KVM. 
7
8
9
h2. Installazione sistema ospite (HN)
10
11
12
Come accennato [[OpenVZ]] è supportato a partire da Debian _Etch_, una volta installato il sistema base (queste note fanno riferimento alla versione distribuita con _Lenny_), si dovrà installare il kernel modificato per l'uso dello stesso sulla macchina ospite (il cosiddetto _Hardware Node_, o HN) con il comando:
13
<pre>
14 1 Amministratore Truelite
aptitude install linux-image-openvz-686
15 26 Amministratore Truelite
</pre>
16
<pre>
17 1 Amministratore Truelite
18 26 Amministratore Truelite
<pre>
19
<pre>
20 1 Amministratore Truelite
ln -s /var/lib/vz /vz
21 26 Amministratore Truelite
</pre>
22 1 Amministratore Truelite
23 2 Amministratore Truelite
Una volta installato il tutto occorrerà riavviare la macchina per utilizzare il nuovo server, eseguito il riavvio si potrà verificare il funzionamento del sistema verificando che in processo di controllo sia attivo:
24 26 Amministratore Truelite
<pre>
25 1 Amministratore Truelite
# ps aux| grep vz
26
root      2488  0.0  0.0      0     0 ?        S    15:20   0:00 [vzmond]
27 26 Amministratore Truelite
</pre>
28 1 Amministratore Truelite
e controllando lo stato con:
29 26 Amministratore Truelite
<pre>
30 1 Amministratore Truelite
# vzlist -a
31 7 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
32 26 Amministratore Truelite
</pre>
33 1 Amministratore Truelite
che sarà vuoto non essendo stato creato alcun VE.
34 9 Amministratore Truelite
35 4 Amministratore Truelite
36 26 Amministratore Truelite
h2. Creazione di un Virtual Environment da un template
37
38
39
<pre>
40
<pre>
41
<pre>
42 5 Amministratore Truelite
cd /vz/template/cache
43 1 Amministratore Truelite
wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz
44 26 Amministratore Truelite
</pre>
45 5 Amministratore Truelite
(nel caso si è scaricata è la versione per 686, si usi quella a 64 bit per macchine a 64 bit). 
46 9 Amministratore Truelite
47 26 Amministratore Truelite
<pre>
48
<pre>
49 5 Amministratore Truelite
ln -s debian-5.0-x86.tar.gz debian.tar.gz
50 26 Amministratore Truelite
</pre>
51 5 Amministratore Truelite
52 26 Amministratore Truelite
A questo punto si potrà creare un nuovo VE indicando semplicemente un numero intero (quello che in gergo viene chiamato *VEID*) che serve ad identificare univocamente ciascuna macchina; nel nostro caso questo può essere creato semplicemente con il comando:
53
<pre>
54 1 Amministratore Truelite
# vzctl create 100 
55
Creating VE private area (debian)
56
Performing postcreate actions
57 5 Amministratore Truelite
VE private area was created
58 26 Amministratore Truelite
</pre>
59 1 Amministratore Truelite
che usa il VEID 100; una volta creato lo potrà far partire con il comando:
60 26 Amministratore Truelite
<pre>
61 1 Amministratore Truelite
# vzctl start 100 
62
Starting VE ...
63
VE is mounted
64
Setting CPU units: 1000
65
Configure meminfo: 65536
66
VE start in progress...
67 26 Amministratore Truelite
</pre>
68 1 Amministratore Truelite
verificarne l'attività con:
69 26 Amministratore Truelite
<pre>
70 1 Amministratore Truelite
# vzlist -a
71
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
72
       100          8 running -               -                               
73 26 Amministratore Truelite
</pre>
74 1 Amministratore Truelite
entrarci con:
75 26 Amministratore Truelite
<pre>
76 1 Amministratore Truelite
# vzctl enter 100
77
entered into VE 100
78
vzserver:/#
79 26 Amministratore Truelite
</pre>
80 1 Amministratore Truelite
fermarlo con:
81 26 Amministratore Truelite
<pre>
82 12 Amministratore Truelite
# vzctl stop 100
83
Stopping VE ...
84 1 Amministratore Truelite
VE was stopped
85
VE is unmounted
86 26 Amministratore Truelite
</pre>
87 1 Amministratore Truelite
88 26 Amministratore Truelite
<pre>
89
<pre>
90 1 Amministratore Truelite
vzctl create 100  --hostname testlenny
91 26 Amministratore Truelite
</pre>
92 24 Amministratore Truelite
oppure una volta creato senza nome lo si può impostare con:
93 26 Amministratore Truelite
<pre>
94 1 Amministratore Truelite
vzctl set 100 --hostname testlenny --save
95 26 Amministratore Truelite
</pre>
96
<pre>
97
<pre>
98 20 Amministratore Truelite
# vzlist -a
99 1 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
100
       100          5 running -               testlenny
101 26 Amministratore Truelite
</pre>
102 1 Amministratore Truelite
103
Se infine si vuole che il nuovo VE sia lanciato automaticamente all'avvio della macchina, si dovrà attivarne la partenza in maniera esplicita con:
104 26 Amministratore Truelite
<pre>
105 1 Amministratore Truelite
vzctl set 103 --onboot yes --save
106 26 Amministratore Truelite
</pre>
107 1 Amministratore Truelite
108
109 26 Amministratore Truelite
h2. Configurazione della rete
110 1 Amministratore Truelite
111
112 26 Amministratore Truelite
<pre>
113 1 Amministratore Truelite
114 26 Amministratore Truelite
115
h3. Configurazione di rete con venet
116
117
118
<pre>
119
120
<pre>
121
<pre>
122 1 Amministratore Truelite
vzctl set 100 --ipadd 192.168.0.100  --save
123 26 Amministratore Truelite
</pre>
124 10 Amministratore Truelite
da ripetere quante volte si vuole per assegnare ulteriori indirizzi che saranno aggiunti alla lista, questi potranno essere rimossi completamente con il comando: 
125 26 Amministratore Truelite
<pre>
126 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
127 26 Amministratore Truelite
</pre>
128
<pre>
129 1 Amministratore Truelite
130 26 Amministratore Truelite
<pre>
131 1 Amministratore Truelite
132 26 Amministratore Truelite
<pre>
133
<pre>
134 10 Amministratore Truelite
# route -n
135 1 Amministratore Truelite
Kernel IP routing table
136
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
137
192.0.2.1       0.0.0.0         255.255.255.255 UH    0      0        0 venet0
138
0.0.0.0         192.0.2.1       0.0.0.0         UG    0      0        0 venet0
139 26 Amministratore Truelite
</pre>
140
<pre>
141 1 Amministratore Truelite
142
Questo meccanismo piuttosto complesso ha però il risultato di rendere ogni VE del tutto indipendente dagli altri, e consente di impostare delle regole di firewall all'interno dei singoli VE senza dover essere costretti, come avveniva con VServer, a gestire le regole esclusivamente a livello di sistema ospite. 
143
144
Una volta assegnato l'IP al nostro container il resto della configurazione deve essere effettuato sulla macchine ospite, che deve occuparsi di instradarlo correttamente verso internet, per questo una delle configurazioni essenziali è l'abilitazione del reinoltro dei pacchetti, da farsi manualmente con il comando:
145 26 Amministratore Truelite
<pre>
146 1 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/ip_forward
147 26 Amministratore Truelite
</pre>
148
<pre>
149
<pre>
150 20 Amministratore Truelite
net.ipv4.ip_forward=1
151 26 Amministratore Truelite
</pre>
152 21 Amministratore Truelite
153 1 Amministratore Truelite
Viene inoltre consigliato, quando si effettua la configurazione di VE con IP pubblico proprio, di abilitare il proxy arp per l'interfaccia della macchina ospite dietro la quale operano, questo si fa manualmente con il comando:
154 26 Amministratore Truelite
<pre>
155 21 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
156 26 Amministratore Truelite
</pre>
157
<pre>
158
<pre>
159 1 Amministratore Truelite
net.ipv4.conf.eth0.proxy_arp=1
160 26 Amministratore Truelite
</pre>
161 1 Amministratore Truelite
162 22 Amministratore Truelite
Il primo caso è quello in cui per i VE si utilizzano degli IP privati, in questo caso perché internet sia raggiungibile occorrerà effettuare un opportuno NAT degli stessi, per cui si dovrà impostare anche:
163 26 Amministratore Truelite
<pre>
164 1 Amministratore Truelite
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
165 26 Amministratore Truelite
</pre>
166 22 Amministratore Truelite
167 1 Amministratore Truelite
A parte la configurazione degli indirizzi e dell'instradamento, un'altra configurazione necessaria a consentire l'uso della rete ai singoli VE è quella del DNS, che può essere effettuata con il comando:
168 26 Amministratore Truelite
<pre>
169 1 Amministratore Truelite
vzctl set 100 --nameserver IP.PUB.DEL.DNS --save
170 26 Amministratore Truelite
</pre>
171 1 Amministratore Truelite
172
173 26 Amministratore Truelite
h3. Configurazione di rete con veth
174
175
176 22 Amministratore Truelite
Come accennato questa modalità di gestione della rete è leggermente meno efficiente e più complessa rispetto alla precedente, ma consente di delegare al VE la gestione di una vera e propria interfaccia ethernet virtuale, sulla quale compiere tutte le operazioni volute. Inoltre in caso di macchine dotate di più interfacce di rete consente anche di associare un VE ad una interfaccia o all'altra, ottenendo una separazione delle rispettive reti.
177 1 Amministratore Truelite
178
Questa modalità è alternativa alla precedente, e non si deve pertanto assegnare un IP dall'HN, ma farlo direttamente all'interno del VE, come una macchina reale; per questo, qualora esso fosse presente, occorre rimuoverlo preventivamente con il comando: 
179 26 Amministratore Truelite
<pre>
180 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
181 26 Amministratore Truelite
</pre>
182
<pre>
183
<pre>
184 22 Amministratore Truelite
vzctl set VEID --netif_add ethN --save
185 26 Amministratore Truelite
</pre>
186 1 Amministratore Truelite
187 26 Amministratore Truelite
<pre>
188
<pre>
189 22 Amministratore Truelite
vzctl set VEID --netif_add <ifname>[,<mac>,<host_ifname>,<host_mac>,<bridge>] --save
190 26 Amministratore Truelite
</pre>
191 1 Amministratore Truelite
che consente di impostare sia MAC address che nome sia per l'interfaccia nel VE che nell'HN (cosa che in genere non si fa mai, utilizzando i default del comando) ed infine un eventuale bridge (che invece è la configurazione consigliata) attraverso il quale usare l'interfaccia. 
192 22 Amministratore Truelite
193 26 Amministratore Truelite
<pre>
194 22 Amministratore Truelite
195 26 Amministratore Truelite
<pre>
196
<pre>
197 23 Amministratore Truelite
auto br0
198 22 Amministratore Truelite
iface br0 inet static
199
      address 192.168.1.1
200 9 Amministratore Truelite
      netmask 255.255.255.0
201
      bridge_ports eth0
202 1 Amministratore Truelite
      bridge_maxwait 5
203 26 Amministratore Truelite
</pre>
204 15 Amministratore Truelite
205 26 Amministratore Truelite
<pre>
206
<pre>
207
vzctl set 100 --netif_add eth0~~br0 --save
208
</pre>
209 25 Amministratore Truelite
210 26 Amministratore Truelite
<pre>
211
<pre>
212 15 Amministratore Truelite
#!/bin/bash
213
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
214 26 Amministratore Truelite
</pre>
215
<pre>
216 1 Amministratore Truelite
217 26 Amministratore Truelite
<pre>
218 25 Amministratore Truelite
219
220 26 Amministratore Truelite
h2. Configurazione delle proprietà di un VE
221 7 Amministratore Truelite
222 26 Amministratore Truelite
223
<pre>
224
225 7 Amministratore Truelite
Ad esempio se la RAM disponibile in un VE è insufficiente, e se ne vuole aumentare la disponibilità con un limite fra 512M e 1G si potrà utilizzare il comando:
226 26 Amministratore Truelite
<pre>
227 7 Amministratore Truelite
vzctl set 100 --privvmpages 512M:1G --save
228 26 Amministratore Truelite
</pre>
229
<pre>
230 7 Amministratore Truelite
231 26 Amministratore Truelite
Oltre alle risorse associate ai  _bean counters_ si possono impostare limiti anche su altre risorse generiche come lo spazio disco operando allo stesso modo con ulteriori parametri; se ad esempio si vuole impostare un limite sullo spazio disco totale si potrà usare il comando: 
232
<pre>
233 7 Amministratore Truelite
vzctl set 100 --save --diskspace 10G
234 26 Amministratore Truelite
</pre>
235
<pre>
236 1 Amministratore Truelite
237 7 Amministratore Truelite
238
239 10 Amministratore Truelite
240 7 Amministratore Truelite
241 10 Amministratore Truelite
242 26 Amministratore Truelite
h2. Creazione manuale di un template
243
244
245
<pre>
246
<pre>
247 6 Amministratore Truelite
aptitude install deboostrap
248 26 Amministratore Truelite
</pre>
249 8 Amministratore Truelite
poi si potrà creare un ambiente iniziale con:
250 26 Amministratore Truelite
<pre>
251 8 Amministratore Truelite
debootstrap --arch amd64 lenny /var/lib/vz/private/100 http://ftp.it.debian.org/debian
252 26 Amministratore Truelite
</pre>
253 8 Amministratore Truelite
(si usi il valore di architettura adeguato alla propria macchina). Questo preparerà i file per un VE con id 100; una volta completato il comando occorrerà generare una opportuna configurazione per lo stesso con:
254 26 Amministratore Truelite
<pre>
255 10 Amministratore Truelite
vzctl set 100 --applyconfig vps.basic --save
256 26 Amministratore Truelite
</pre>
257
<pre>
258
<pre>
259 8 Amministratore Truelite
echo 'OSTEMPLATE="debian"' >> /etc/vz/conf/100.conf
260 26 Amministratore Truelite
</pre>
261 8 Amministratore Truelite
infine si potrà configurare la rete come visto in precedenza per poter operare all'interno dello stesso.
262
263 26 Amministratore Truelite
<pre>
264
<pre>
265 8 Amministratore Truelite
sed -i -e '/getty/d' /var/lib/vz/private/100/etc/inittab
266
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /var/lib/vz/private/100/etc/*syslog.conf
267 10 Amministratore Truelite
rm -f /var/lib/vz/private/100/etc/mtab
268 8 Amministratore Truelite
ln -s /proc/mounts /var/lib/vz/private/100/etc/mtab
269 26 Amministratore Truelite
</pre>
270 14 Amministratore Truelite
271 8 Amministratore Truelite
A questo punto si potrà far partire il nostro VE e completare le operazioni di aggiornamento e  pulizia dal suo interno, per questo si eseguano i comandi:
272 26 Amministratore Truelite
<pre>
273 8 Amministratore Truelite
apt-get update
274 13 Amministratore Truelite
apt-get upgrade
275 8 Amministratore Truelite
apt-get clean
276
dpkg --purge module-init-tools
277
apt-get remove --purge XXX (lista di altra roba da completare)
278
update-rc.d -f klogd remove
279 26 Amministratore Truelite
</pre>
280 8 Amministratore Truelite
e si rimuova tutto quello ritenuto non necessario. 
281
282 26 Amministratore Truelite
Una volta completata la pulizia all'interno si potrà uscire e passare alla creazione del _template_, per questo però occorre prima rimuovere i dati di indirizzo e DNS inseriti per consentire al nostro VE di accedere ad internet, per questo si faccia:
283
<pre>
284 1 Amministratore Truelite
vzctl stop 100
285 18 Amministratore Truelite
vzctl set 100 --ipdel all --save
286
echo > /vz/private/100/etc/resolv.conf
287
rm /vz/private/100/etc/hostname
288 26 Amministratore Truelite
</pre>
289
e poi si potrò creare l'immagine del _template_ con:
290
<pre>
291 18 Amministratore Truelite
cd /vz/private/100/
292
tar --numeric-owner -zcf /vz/template/cache/debian-5.0-x86_64-minimal.tar.gz .
293 26 Amministratore Truelite
</pre>
294 18 Amministratore Truelite
ed a questo punto una volta creato il link simbolico:
295 26 Amministratore Truelite
<pre>
296 18 Amministratore Truelite
ln -sf debian-5.0-x86_64-minimal.tar.gz debian.tar.gz
297 26 Amministratore Truelite
</pre>
298 18 Amministratore Truelite
si potrà creare un nuovo VE con:
299 26 Amministratore Truelite
<pre>
300 1 Amministratore Truelite
vzctl create 101
301 26 Amministratore Truelite
</pre>
302 1 Amministratore Truelite
e verificare che funziona con:
303 26 Amministratore Truelite
<pre>
304 1 Amministratore Truelite
vzctl start 101 
305
vzctl enter 101 
306 26 Amministratore Truelite
</pre>
307 1 Amministratore Truelite
308
309 26 Amministratore Truelite
h2. Dump e backup
310 1 Amministratore Truelite
311
312 26 Amministratore Truelite
<pre>
313
314
<pre>
315
316 1 Amministratore Truelite
Per eseguire un dump basta indicare il VEID del VE che si vuole salvare, non indicando nulla saranno salvati tutti quelli presenti. Ad esempio si potrà salvare la precedente macchina virtuale con:
317 26 Amministratore Truelite
<pre>
318 1 Amministratore Truelite
vzdump --snapshot 101
319 26 Amministratore Truelite
</pre>
320
<pre>
321
<pre>
322 1 Amministratore Truelite
vzdump-openvz-VEID-YYYY_MM_DD-HH_MM_SS
323 26 Amministratore Truelite
</pre>