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> |