Progetto

Generale

Profilo

LinuxOpenVZHowto » Cronologia » Versione 29

Simone Piccardi, 20-12-2010 18:22

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
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:
12
<pre>
13 1 Amministratore Truelite
aptitude install linux-image-openvz-686
14
</pre>
15 28 Simone Piccardi
alternativamente, se la macchina è stata installata a 64 bit, si dovrà installare il pacchetto linux-image-openvz-amd64. L'installazione del kernel installa automaticamente anche i tool di base necessari alla gestione delle macchine contenute.
16 26 Amministratore Truelite
17 28 Simone Piccardi
Su Debian tutti i file di OpenVZ e dei VE vengono mantenuti sotto /var/lib/vz/, ma per compatibilità con altre versioni è suggerito creare un link simbolico sotto la radice come: 
18 26 Amministratore Truelite
<pre>
19 1 Amministratore Truelite
ln -s /var/lib/vz /vz
20 26 Amministratore Truelite
</pre>
21 1 Amministratore Truelite
22 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:
23 26 Amministratore Truelite
<pre>
24 1 Amministratore Truelite
# ps aux| grep vz
25
root      2488  0.0  0.0      0     0 ?        S    15:20   0:00 [vzmond]
26 26 Amministratore Truelite
</pre>
27 1 Amministratore Truelite
e controllando lo stato con:
28 26 Amministratore Truelite
<pre>
29 1 Amministratore Truelite
# vzlist -a
30 7 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
31 26 Amministratore Truelite
</pre>
32 1 Amministratore Truelite
che sarà vuoto non essendo stato creato alcun VE.
33 9 Amministratore Truelite
34 1 Amministratore Truelite
35 26 Amministratore Truelite
h2. Creazione di un Virtual Environment da un template
36
37 28 Simone Piccardi
Il passo successivo è quello di installare un primo VE, per questo tornano estremamente utili i template, degli scheletri di sistema da cui si può creare in maniera rapida e semplice un nuovo VE; si tratta in sostanza di archivi (in formato .tar.gz) che contengono l'immagine del filesystem di un intero sistema. Questi si possono creare come vedremo più avanti, o scaricare già pronti da "questo sito":http://download.openvz.org/template/precreated/. Nel caso si usi un template giù pronto questo dovrà essere salvato nella directory /var/lib/vz/template/cache, ad esempio per una Debian si potrà fare: 
38 26 Amministratore Truelite
<pre>
39 5 Amministratore Truelite
cd /vz/template/cache
40 1 Amministratore Truelite
wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz
41 26 Amministratore Truelite
</pre>
42 5 Amministratore Truelite
(nel caso si è scaricata è la versione per 686, si usi quella a 64 bit per macchine a 64 bit). 
43 9 Amministratore Truelite
44 29 Simone Piccardi
Dopo di che la creazione di un VE da un template può essere eseguita semplicemente con il comando vzctl create, questo in genere fa riferimento al file di configurazione generale di OpenVZ /etc/vz/vz.conf in cui viene definita la variabile (nel caso di Lenny è @DEF_OSTEMPLATE="debian"@) che indica il _template_ di default da usare se non se ne indica esplicitamente uno per nome. Si tenga presente però che questo fa riferimento ad un file con lo stesso nome sotto /vz/template/cache per cui se si è scaricato il file precedente occorrerà creare un link simbolico con: 
45 26 Amministratore Truelite
<pre>
46 5 Amministratore Truelite
ln -s debian-5.0-x86.tar.gz debian.tar.gz
47 26 Amministratore Truelite
</pre>
48 5 Amministratore Truelite
49 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:
50
<pre>
51 1 Amministratore Truelite
# vzctl create 100 
52
Creating VE private area (debian)
53
Performing postcreate actions
54 5 Amministratore Truelite
VE private area was created
55 26 Amministratore Truelite
</pre>
56 1 Amministratore Truelite
che usa il VEID 100; una volta creato lo potrà far partire con il comando:
57 26 Amministratore Truelite
<pre>
58 1 Amministratore Truelite
# vzctl start 100 
59
Starting VE ...
60
VE is mounted
61
Setting CPU units: 1000
62
Configure meminfo: 65536
63
VE start in progress...
64 26 Amministratore Truelite
</pre>
65 1 Amministratore Truelite
verificarne l'attività con:
66 26 Amministratore Truelite
<pre>
67 1 Amministratore Truelite
# vzlist -a
68
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
69
       100          8 running -               -                               
70 26 Amministratore Truelite
</pre>
71 1 Amministratore Truelite
entrarci con:
72 26 Amministratore Truelite
<pre>
73 1 Amministratore Truelite
# vzctl enter 100
74
entered into VE 100
75
vzserver:/#
76 26 Amministratore Truelite
</pre>
77 1 Amministratore Truelite
fermarlo con:
78 26 Amministratore Truelite
<pre>
79 12 Amministratore Truelite
# vzctl stop 100
80
Stopping VE ...
81 1 Amministratore Truelite
VE was stopped
82
VE is unmounted
83 26 Amministratore Truelite
</pre>
84 1 Amministratore Truelite
85 26 Amministratore Truelite
<pre>
86
<pre>
87 1 Amministratore Truelite
vzctl create 100  --hostname testlenny
88 26 Amministratore Truelite
</pre>
89 24 Amministratore Truelite
oppure una volta creato senza nome lo si può impostare con:
90 26 Amministratore Truelite
<pre>
91 1 Amministratore Truelite
vzctl set 100 --hostname testlenny --save
92 26 Amministratore Truelite
</pre>
93
<pre>
94
<pre>
95 20 Amministratore Truelite
# vzlist -a
96 1 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
97
       100          5 running -               testlenny
98 26 Amministratore Truelite
</pre>
99 1 Amministratore Truelite
100
Se infine si vuole che il nuovo VE sia lanciato automaticamente all'avvio della macchina, si dovrà attivarne la partenza in maniera esplicita con:
101 26 Amministratore Truelite
<pre>
102 1 Amministratore Truelite
vzctl set 103 --onboot yes --save
103 26 Amministratore Truelite
</pre>
104 1 Amministratore Truelite
105
106 26 Amministratore Truelite
h2. Configurazione della rete
107 1 Amministratore Truelite
108
109 26 Amministratore Truelite
<pre>
110 1 Amministratore Truelite
111 26 Amministratore Truelite
112
h3. Configurazione di rete con venet
113
114
115
<pre>
116
117
<pre>
118
<pre>
119 1 Amministratore Truelite
vzctl set 100 --ipadd 192.168.0.100  --save
120 26 Amministratore Truelite
</pre>
121 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: 
122 26 Amministratore Truelite
<pre>
123 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
124 26 Amministratore Truelite
</pre>
125
<pre>
126 1 Amministratore Truelite
127 26 Amministratore Truelite
<pre>
128 1 Amministratore Truelite
129 26 Amministratore Truelite
<pre>
130
<pre>
131 10 Amministratore Truelite
# route -n
132 1 Amministratore Truelite
Kernel IP routing table
133
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
134
192.0.2.1       0.0.0.0         255.255.255.255 UH    0      0        0 venet0
135
0.0.0.0         192.0.2.1       0.0.0.0         UG    0      0        0 venet0
136 26 Amministratore Truelite
</pre>
137
<pre>
138 1 Amministratore Truelite
139
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. 
140
141
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:
142 26 Amministratore Truelite
<pre>
143 1 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/ip_forward
144 26 Amministratore Truelite
</pre>
145
<pre>
146
<pre>
147 20 Amministratore Truelite
net.ipv4.ip_forward=1
148 26 Amministratore Truelite
</pre>
149 21 Amministratore Truelite
150 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:
151 26 Amministratore Truelite
<pre>
152 21 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
153 26 Amministratore Truelite
</pre>
154
<pre>
155
<pre>
156 1 Amministratore Truelite
net.ipv4.conf.eth0.proxy_arp=1
157 26 Amministratore Truelite
</pre>
158 1 Amministratore Truelite
159 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:
160 26 Amministratore Truelite
<pre>
161 1 Amministratore Truelite
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
162 26 Amministratore Truelite
</pre>
163 22 Amministratore Truelite
164 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:
165 26 Amministratore Truelite
<pre>
166 1 Amministratore Truelite
vzctl set 100 --nameserver IP.PUB.DEL.DNS --save
167 26 Amministratore Truelite
</pre>
168 1 Amministratore Truelite
169
170 26 Amministratore Truelite
h3. Configurazione di rete con veth
171
172
173 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.
174 1 Amministratore Truelite
175
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: 
176 26 Amministratore Truelite
<pre>
177 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
178 26 Amministratore Truelite
</pre>
179
<pre>
180
<pre>
181 22 Amministratore Truelite
vzctl set VEID --netif_add ethN --save
182 26 Amministratore Truelite
</pre>
183 1 Amministratore Truelite
184 26 Amministratore Truelite
<pre>
185
<pre>
186 22 Amministratore Truelite
vzctl set VEID --netif_add <ifname>[,<mac>,<host_ifname>,<host_mac>,<bridge>] --save
187 26 Amministratore Truelite
</pre>
188 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. 
189 22 Amministratore Truelite
190 26 Amministratore Truelite
<pre>
191 22 Amministratore Truelite
192 26 Amministratore Truelite
<pre>
193
<pre>
194 23 Amministratore Truelite
auto br0
195 22 Amministratore Truelite
iface br0 inet static
196
      address 192.168.1.1
197 9 Amministratore Truelite
      netmask 255.255.255.0
198
      bridge_ports eth0
199 1 Amministratore Truelite
      bridge_maxwait 5
200 26 Amministratore Truelite
</pre>
201 15 Amministratore Truelite
202 26 Amministratore Truelite
<pre>
203
<pre>
204
vzctl set 100 --netif_add eth0~~br0 --save
205
</pre>
206 25 Amministratore Truelite
207 26 Amministratore Truelite
<pre>
208
<pre>
209 15 Amministratore Truelite
#!/bin/bash
210
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
211 26 Amministratore Truelite
</pre>
212
<pre>
213 1 Amministratore Truelite
214 26 Amministratore Truelite
<pre>
215 25 Amministratore Truelite
216
217 26 Amministratore Truelite
h2. Configurazione delle proprietà di un VE
218 7 Amministratore Truelite
219 26 Amministratore Truelite
220
<pre>
221
222 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:
223 26 Amministratore Truelite
<pre>
224 7 Amministratore Truelite
vzctl set 100 --privvmpages 512M:1G --save
225 26 Amministratore Truelite
</pre>
226
<pre>
227 7 Amministratore Truelite
228 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: 
229
<pre>
230 7 Amministratore Truelite
vzctl set 100 --save --diskspace 10G
231 26 Amministratore Truelite
</pre>
232
<pre>
233 1 Amministratore Truelite
234 7 Amministratore Truelite
235
236 10 Amministratore Truelite
237 7 Amministratore Truelite
238 10 Amministratore Truelite
239 26 Amministratore Truelite
h2. Creazione manuale di un template
240
241
242
<pre>
243
<pre>
244 6 Amministratore Truelite
aptitude install deboostrap
245 26 Amministratore Truelite
</pre>
246 8 Amministratore Truelite
poi si potrà creare un ambiente iniziale con:
247 26 Amministratore Truelite
<pre>
248 8 Amministratore Truelite
debootstrap --arch amd64 lenny /var/lib/vz/private/100 http://ftp.it.debian.org/debian
249 26 Amministratore Truelite
</pre>
250 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:
251 26 Amministratore Truelite
<pre>
252 10 Amministratore Truelite
vzctl set 100 --applyconfig vps.basic --save
253 26 Amministratore Truelite
</pre>
254
<pre>
255
<pre>
256 8 Amministratore Truelite
echo 'OSTEMPLATE="debian"' >> /etc/vz/conf/100.conf
257 26 Amministratore Truelite
</pre>
258 8 Amministratore Truelite
infine si potrà configurare la rete come visto in precedenza per poter operare all'interno dello stesso.
259
260 26 Amministratore Truelite
<pre>
261
<pre>
262 8 Amministratore Truelite
sed -i -e '/getty/d' /var/lib/vz/private/100/etc/inittab
263
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /var/lib/vz/private/100/etc/*syslog.conf
264 10 Amministratore Truelite
rm -f /var/lib/vz/private/100/etc/mtab
265 8 Amministratore Truelite
ln -s /proc/mounts /var/lib/vz/private/100/etc/mtab
266 26 Amministratore Truelite
</pre>
267 14 Amministratore Truelite
268 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:
269 26 Amministratore Truelite
<pre>
270 8 Amministratore Truelite
apt-get update
271 13 Amministratore Truelite
apt-get upgrade
272 8 Amministratore Truelite
apt-get clean
273
dpkg --purge module-init-tools
274
apt-get remove --purge XXX (lista di altra roba da completare)
275
update-rc.d -f klogd remove
276 26 Amministratore Truelite
</pre>
277 8 Amministratore Truelite
e si rimuova tutto quello ritenuto non necessario. 
278
279 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:
280
<pre>
281 1 Amministratore Truelite
vzctl stop 100
282 18 Amministratore Truelite
vzctl set 100 --ipdel all --save
283
echo > /vz/private/100/etc/resolv.conf
284
rm /vz/private/100/etc/hostname
285 26 Amministratore Truelite
</pre>
286
e poi si potrò creare l'immagine del _template_ con:
287
<pre>
288 18 Amministratore Truelite
cd /vz/private/100/
289
tar --numeric-owner -zcf /vz/template/cache/debian-5.0-x86_64-minimal.tar.gz .
290 26 Amministratore Truelite
</pre>
291 18 Amministratore Truelite
ed a questo punto una volta creato il link simbolico:
292 26 Amministratore Truelite
<pre>
293 18 Amministratore Truelite
ln -sf debian-5.0-x86_64-minimal.tar.gz debian.tar.gz
294 26 Amministratore Truelite
</pre>
295 18 Amministratore Truelite
si potrà creare un nuovo VE con:
296 26 Amministratore Truelite
<pre>
297 1 Amministratore Truelite
vzctl create 101
298 26 Amministratore Truelite
</pre>
299 1 Amministratore Truelite
e verificare che funziona con:
300 26 Amministratore Truelite
<pre>
301 1 Amministratore Truelite
vzctl start 101 
302
vzctl enter 101 
303 26 Amministratore Truelite
</pre>
304 1 Amministratore Truelite
305
306 26 Amministratore Truelite
h2. Dump e backup
307 1 Amministratore Truelite
308
309 26 Amministratore Truelite
<pre>
310
311
<pre>
312
313 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:
314 26 Amministratore Truelite
<pre>
315 1 Amministratore Truelite
vzdump --snapshot 101
316 26 Amministratore Truelite
</pre>
317
<pre>
318
<pre>
319 1 Amministratore Truelite
vzdump-openvz-VEID-YYYY_MM_DD-HH_MM_SS
320 26 Amministratore Truelite
</pre>