Virtualización Zonas

Anuncio
Virtualización Zonas
David Galán Ortiz.
www.opensolarisblog.org
[email protected]
< Spain OpenSolaris Users Groups >
<OrangeBooks>
USE
IMPROVE
EVANGELIZE
Spain OpenSolaris Users Group
LICENCIA.................................................................................................................3
REFERENCIAS .............................................................................................................3
CONTENEDORES....................................................................................................4
ZONAS EN SOLARIS 10.................................................................................................4
CREAR UNA ZONA........................................................................................................5
Asignar CPU......................................................................................................6
Memoria.............................................................................................................7
Espacio en disco................................................................................................7
RED....................................................................................................................8
Creación de una zona no compartida o Small-Zone.........................................8
Arrancar la zona..............................................................................................12
Zlogin entrar en la nueva zona........................................................................12
Parar la Zona virtual......................................................................................14
Crear una zona no compartida o BIG-ZONE..................................................15
ESTADOS DE UNA ZONA..............................................................................................17
MONITORIZAR UNA ZONA............................................................................................18
VALIDARSE EN UNA ZONA...........................................................................................19
DESINSTALAR UNA ZONA.............................................................................................20
2
Spain OpenSolaris Users Group
Licencia
Esta obra está bajo una licencia Reconocimiento-NoComercialSinObraDerivada-2.5 España de Creative Commons. Para ver una copia de esta
licencia, visite http://creativecommons.org/licenses/by-nc-nd/2.5/es o envíe una carta
a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Usted es libre de:
-
Copiar, distribuir y comunicar públicamente la obra.
Bajo las condiciones siguientes:
-
Reconocimiento. Debe reconocer los créditos de la obra de la manera
especificada por el autor o el licenciador.
-
No comercial. No puede utilizar esta obra para fines comerciales.
-
Compartir bajo la misma licencia. Si altera o transforma esta obra, o
genera una obra derivada, sólo puede distribuir la obra generada bajo una
licencia idéntica a ésta.
-
Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la
licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor.
Referencias
Todos los nombres propios de programas, sistemas operativos, equipos hardware,
etc., que aparecen en este libro son marcas registradas de sus respectivas compañías
u organizaciones.
3
Spain OpenSolaris Users Group
Contenedores
Zonas en Solaris 10
La tecnología de contendedores permite la virtualización de
Solaris 10 en zonas aisladas del resto del sistema. La denominación de
contenedores es la suma de el SRM (Gestor de Recursos de Solaris) +
Zonas.
Las zonas ejecutan los procesos de forma aislada al sistema
anfitrión sin comunicación con otros procesos fuera de la zona.
Las zonas solo pueden ejecutar entornos virtuales con el
operativo Solaris 10 compartiendo el kernel del sistema anfitrión
Las zonas se dividen en:
-
Zona Global: es la primera instalación que se realiza de Solaris 10
físicamente en la máquina y en la que se basan el resto de zonas.
Tiene el control de todo el sistema y el hardware de la máquina.
-
Zona no global: es un contenedor aislado de la zona global donde se
pueden ejecutar Solaris 10 y aplicaciones forma aislada a la zona
global.
4
Spain OpenSolaris Users Group
Crear una zona
La zonas no globales pueden compartir directorios con la zona
global o estar aislada. Una zona no global puede compartir con la zona
global los sistemas de ficheros:

/usr

/lib

/sbin

/platform
El uso de una zona no global compartida ocupa tan solo 100MB
al tener compartidos directorios con la zona global tal como se puede ver
en la figura 5.1.
Zona Global 0
Zona local
Compartida
/dev/rdsk/c0d0s0
lofs(ro)
/usr
/usr
/lib
/lib
/sbin
/sbin
/platform
/platform
/var
/var
/etc
/etc
4GB
100MB
Figura 5.1 Zona compartida
5
Spain OpenSolaris Users Group
Zona Global 0
BIG ZONE
/dev/dsk/c0d0
/dev/dsk/c1d0
/usr
/usr
/lib
/lib
/sbin
/sbin
/platform
/platform
/var
/var
/etc
/etc
4GB
3GB
Figura 5.2 Zona no compartida
Las zonas no compartidas o zonas grandes ocupan 4GB ya que
no comparten sistema de ficheros. Al no compartir sistemas de ficheros
con la zona global podemos aplicar parches a la zona distintos a los de la
zona global. Podemos tener varias zonas con niveles de parche distintos
según las necesidades de las aplicaciones. En la figura 5.2 se representa
una zona no compartida.
Control de recursos
Cuando creamos una zona tenemos que asignarlas recursos como
red, memoria, CPU etc..
Asignar CPU
tipos:
El control de recursos sobre la CPU en zonas puede ser de tres
6
Spain OpenSolaris Users Group
-
CPU fija: una zona puede tener asignada una o mas CPUs de
forma fija. Esta forma puede ser útil cuando licenciamos
aplicaciones por el numero de CPU. Esta opción tiene una
desventaja si la zona no requiere mucho uso de CPU ya que
perdemos capacidad de procesamiento estando la CPU solamente
asignada una zona.
-
CPUs dinamicas: se asigna un mínimo y un máximo de CPU´s para
una zona. El demonio poold se encarga de balancear el numero de
CPUs disponibles según la necesidades de cada zona.
-
CPUs compartidas: consiste en un pool de CPUs asignado a todas
las zonas. El sistema repartirá las CPU según las necesidades de
cada zona.
Memoria
El control de memoria para zonas no globales hasta la versión
11/06 de Solaris 10 no se podía realizar de forma directa se utiliza el
resource control del sistema. Se ha incluido una nueva propiedad
denominada zone.max-locked-memory que establece el limite de memoria
para una zona.
Espacio en disco
La zonas puedes ser creadas en:

Discos independientes o particiones (slices): una zona puede ser
creada en un directorio de cualquier sistema de ficheros, una
partición o en un disco independiente.
7
Spain OpenSolaris Users Group

Volúmenes independientes: puede instalarse las zonas en
volúmenes de Solaris Volume Manager y beneficiarse de políticas
como RAID1, RAIRD 5 etc..

ZFS: Puede instalarse una zona en uns sistema de ficheros ZFS o
compartir un sistema de ficheros de la zona global.
RED
Cuando creamos una zona se le asigna una dirección IP e interfaz
de red de la zona global.
Creación de una zona no compartida o Small-Zone
En el siguiente apartado vamos a seguir los pasos necesarios para
crear una zona Solaris 10 no compartida ocupando tan solo 100MB . La
zona a crear tiene un dirección IP asociada a la interfaz pcn1 y se instala
en /babilonia/mizona.
forma:
Ejecutamos el comando zonecfg con la opción –z de la siguiente
zonecfg –z [nombre de la zona]
Al ejecutar el comando aparece un mensaje indicando que la zona
no esta configurada. Para configurar la zona tenemos que introducir los
comandos de configuración el editor de zonezfg. Los datos a introducir
son:

autoboot=trae: este parámetro define si la zona es persintente a
los reinitos del sistema. Si reiniciamos la máquina anfitriona
la zona también arrancara.

zonepath: PATH donde se instalara la zona Solarias 10.

set address: asigna una dirección IP para la zona
8
Spain OpenSolaris Users Group

set physical: asocia una interfaz de la zona no global para su uso
en la zona.
El ejemplo siguiente muestra el proceso completo para la
creación de la zona:
# zonecfg -z mizona
mizona: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.
zonecfg:mizona> create
zonecfg:mizona> set autoboot=true
zonecfg:mizona> set zonepath=/babilonia/mizona
zonecfg:mizona> add net
zonecfg:mizona:net> set address=10.73.111.25
zonecfg:mizona:net> set physical=pcn1
zonecfg:mizona:net> end
zonecfg:mizona> info
zonename: mizona
zonepath: /babilonia/mizona
autoboot: true
pool:
limitpriv:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 10.73.130.25
physical: pcn1
zonecfg:mizona> verify
zonecfg:mizona> commit
zonecfg:mizona> exit
Con los pasos anteriores hemos creado la zona. Al realizar el
commit se crea un fichero XML en /etc/zones con los datos de la zona:
9
Spain OpenSolaris Users Group
Ejemplo de mizona.xml:
# more mizona.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE zone PUBLIC "-//Sun Microsystems Inc//DTD Zones//EN"
"file:///usr/share/lib/xml/dtd/zonecfg.dtd.1">
<!-DO NOT EDIT THIS FILE. Use zonecfg(1M) instead.
-->
<zone name="mizona" zonepath="/babilonia/mizona" autoboot="true">
<inherited-pkg-dir directory="/lib"/>
<inherited-pkg-dir directory="/platform"/>
<inherited-pkg-dir directory="/sbin"/>
<inherited-pkg-dir directory="/usr"/>
<network address="10.73.130.25" physical="pcn1"/>
</zone>
Para comprobar que la máquina esta correctamente creada
ejecutamos el comando:
zoneadm list -cv
# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
- mizona
configured /babilonia/mizona
Ya esta creada la zona y tenemos que inicializarla para que se
instalen los paquetes necesarios. Este paso puede tardar varios minutos
por que implica la copia de todos los paquetes necesarios.
Antes de iniciar la instalación de paquetes para la zona debemos
de comprobar los permisos de la zona par ello acudimos al comando
zoneadm para verificar que la zona tiene los permisos necesarios para su
creación.
Para verificar ejecutamos:
zoneadm –z [nombre de la zona] verify
10
Spain OpenSolaris Users Group
Al lanzar el comando nos muestra un mensaje avisando que los
permisos sobre los ficheros de la zona no son los correctos:
bash-3.00# zoneadm -z mizona verify
/babilonia/mizona no debe ser legible por grupo.
/babilonia/mizona no debe ser ejecutable por grupo.
/babilonia/mizona no debe ser legible por todos.
/babilonia/mizona no debe ser ejecutable por todos.
no se ha podido verificar rutazona /babilonia/mizona
debido a los errores anteriores.
zoneadm: la zona mizona no se ha podido verificar
Solucionamos el problema aplicando el comando chmod con los
permisos 700.
chmod 700 /babilonia/mizona/
Si ejecutamos nuevamente el comando zoneadm para verificar la
zona no observaremos ningún error. Instalamos la máquina ejecutando
la orden:
zoneadm –z [nombre de la zona] install
bash-3.00# zoneadm -z mizona install
Preparing to install zone <mizona>.
Creating list of files to copy from the global zone.
Copying <2430> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1042> packages on the zone.
Initialized <1042> packages on zone.
Zone <mizona> is initialized.
El archivo </babilonia/mizona/root/var/sadm/system/logs/install_log> contiene un
registro de la instalación por zonas.
Una vez finalizada la copia de paquetes comprobamos que la
maquina esta instalada correctamente ejecutando zoneadm list –cv:
11
Spain OpenSolaris Users Group
bash-3.00# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
- mizona
installed
/babilonia/mizona
Arrancar la zona
La máquina ya esta configurada e instalada ahora tenemos que
arrancar la zona con el comando zoneadm y el parámetro boot:
zoneadm –z [nombre de la zona] boot
bash-3.00#zoneadm –z mizona boot
bash-3.00# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
4 mizona
running
/babilonia/mizona
Para verificar que la zona esta arrancada ejecutamos el comando
zoneadm list –cv y veremos que su estado es running.
Zlogin entrar en la nueva zona
Tenemos la máquina virtual ejecutándose correctamente y queda
realizar el ultimo paso supone entrar en la máquina y responder unas
preguntas sobre la configuración que queremos para la zona. Las
preguntas son las mismas que en una instalación normal de Solaris,
realizará las siguientes preguntas:

Nombre de la máquina

Idioma del sistema

Idioma del teclado
12
Spain OpenSolaris Users Group
–C:

Tipo de Terminal

Zona geográfica

Contraseña de root

Compatibilidad NTFS v4
Para entrar en la máquina ejecutamos la orden zlogin con el parámetro
zlogin –C [nombre de la zona]
Como se aprecia en el siguiente ejemplo se inicia un pequeño
instalador que pregunta nuestras preferencias para el sistema:
bash-3.00# zlogin -C mizona
[Conectado a la consola de la zona 'mizona']
Select a Language
0. English
1. Spanish
2. it
Please make a choice (0 - 2), or press h or ? for help:
Sobre el Terminal:
¿Qué tipo de terminal esta usando?
1) Est√°ndar ANSI CRT
2) DEC VT52
3) DEC VT100
4) Heathkit 19
5) Lear Siegler ADM31
6) Consola PC
7) Herramienta de comandos Sun
8) Estación de Trabajo (Workstation) Sun
9) Televideo 910
10) Televideo 925
11) Wyse, modelo 50
12) Emulador X Terminal (xterms)
13
Spain OpenSolaris Users Group
13) Emulador de terminal CDE (dtterm)
14) Otros
Introduzca el número seleccionado y presione Intro:
Cuando finalizamos la preguntas se configura e inicia el arranque
del sistema operativo Solaris 10 como en cualquier máquina:
SunOS Release 5.10 Version Generic_118855-33 32-bit
Copyright 1983-2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: babilonia
babilonia console login: Feb 13 03:09:03 babilonia sendmail[5971]: My unqualified host
name (localhost) unknown; sleeping for retry
babilonia console login:
Estamos dentro de la máquina virtual babilonia y podemos hacer
login con el usuario introducido en las preguntas de la instalación de la
zona. Ahora podemos instalar y configurar la máquina virtual como
cualquier otra.
Ahora se puede hacer telnet o ssh a la dirección IP que tenemos
asociada a nuestra máquina virtual e instar cualquier servicio
normalmente.
Parar la Zona virtual
Para parar una máquina virtual podemos proceder de dos formas
diferentes:
1. Al ser una máquina virtual responde a los mismos comandos de
parada que cualquier instalación normal de Solaris por lo tanto
podemos parar con comandos como init 0, shutdown o halt.
2. Desde la zona global podemos o reiniciar la máquina utilizando
el comando zoneadm con los parámetros reboot y halt:
14
Spain OpenSolaris Users Group
a. zoneadm -z [nombre de la zona] reboot
b. zoneadm -z [nombre de la zona] halt
Crear una zona no compartida o BIG-ZONE
Tal como hemos visto al comienzo una zona no compartida no
comparte los directorios /usr./lib,/sbin y /platform por lo tanto ocupa 4GB
de espacio aportando la ventaja de tener una zona totalmente
independiente donde se puede aplicara un nivel de parches diferente a la
zona global.
Para crear una zona no compartida vamos utilizar un disco
completo de 6GB con sistema de ficheros UFS montado en /bigzone.
disco:
Antes de instalar la zona vemos que tan solo ocupamos el 1% del
/dev/dsk/c1d0s0
5783070
5753 5719487
1%
/bigzone
Al finalizar la instalación el espacio ocupado por la zona es igual a
una instalación completa de Solaris 10:
/dev/dsk/c1d0s0
5783070 2951463 2773777
52%
/bigzone
Una zona no compartida o BigZone se crea igual que una zona
compartida con la salvedad de que indicamos que no se compartan los
sistemas de ficheros /usr./lib,/sbin y /platform con los parámetros:

remove inherit-pkg-dir dir=/sbin

remove inherit-pkg-dir dir=/usr

remove inherit-pkg-dir dir=/platform

remove inherit-pkg-dir dir=/lib
Los pasos a realizar son los siguientes:
15
Spain OpenSolaris Users Group
# zonecfg -z mibigzone
mibigzone: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.
zonecfg:mibigzone> create
zonecfg:mibigzone> remove inherit-pkg-dir dir=/sbin
zonecfg:mibigzone> remove inherit-pkg-dir dir=/usr
zonecfg:mibigzone> remove inherit-pkg-dir dir=/platform
zonecfg:mibigzone> remove inherit-pkg-dir dir=/lib
zonecfg:mibigzone> set autoboot=true
zonecfg:mibigzone> set zonepath=/bigzone
zonecfg:mibigzone> add net
zonecfg:mibigzone:net> set address=127.0.0.100
zonecfg:mibigzone:net> set physical=lo0
zonecfg:mibigzone:net> end
zonecfg:mibigzone> info
zonename: mibigzone
zonepath: /bigzone
autoboot: true
pool:
limitpriv:
net:
address: 127.0.0.100
physical: lo0
zonecfg:mibigzone> verify
zonecfg:mibigzone> commit
zonecfg:mibigzone> exit
Establecemos los permisos de fichero para la zona:
chmod 700 /bigzone
Verificamos la zona y procedemos a la instalación de los paquetes
necesarios para la ejecución de la zona:
bash-3.00# zoneadm -z nocompartida verify
bash-3.00# zoneadm -z nocompartida install
Preparing to install zone <nocompartida>.
Creating list of files to copy from the global zone.
16
Spain OpenSolaris Users Group
Copying <130622> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1042> packages on the zone.
Initialized <1042> packages on zone.
Zone <nocompartida> is initialized.
El archivo </bigzone/root/var/sadm/system/logs/install_log> contiene un registrde
la instalación por zonas.
Arrancamos la zona:
# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
- nocompartida installed
/bigzone
# zoneadm -z nocompartida boot
# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
2 nocompartida running
/bigzone
Y finalizamos el proceso de instalación estableciendo el nombre
de máquina, contraseña de root, zona geográfica etc..:
bash-3.00# zlogin -C nocompartida
[Conectado a la consola de la zona 'nocompartida']
Select a Language
0. English
1. Spanish
2. it
Please make a choice (0 - 2), or press h or ? for help:
Estados de una zona
Hemos visto como crear una zona, configurarlas y las
operaciones de parada y arranque. Ahora veremos como detectar el
17
Spain OpenSolaris Users Group
estado de una máquina desde la zona global. Con el comando zoneadm list
–cv obtenemos información sobre el estado de una zona:
# zoneadm list -cv
ID NAME
STATUS
PATH
0 global
running
/
- nocompartida installed
/bigzone
Los estados posibles son:

Configured: se encuentra en estado estado cuando finalizamos la
configuración y realizamos un commit.

Incomplete: mostrará este estado muestran se están instalando los
paquetes al ejecutar zoneadm con la opción install.

Installed: la zona tiene todos los paquetes necesarios para su
funcionamiento.

Ready: la zona esta lista tiene creado el kernel, los controladores
de red están cargados y los sistemas de ficheros montados.

Running: la zona esta arrancada.

Shutting Down: la zona esta en proceso de parada.
Monitorizar una zona
Una zona puede ser monitorizada desde la zona global utilizando
el comando zlogin con la opción –S que permite la ejecución de un
comando dentro la zona y enviar la salida del comando a la zona global.
Zlogin –S [nombre de la zona] “comando”
Ejemplos para monitorizar una zona:
18
Spain OpenSolaris Users Group
Uptime:
# zlogin -S nocompartida "uptime"
10:43am up 8 min(s), 0 users, load average: 0.18, 0.87, 0.98
FileSystems:
#
# zlogin -S nocompartida "df -k"
Filesystem
kbytes used avail capacity Mounted on
/
5783070 2964445 2760795 52% /
/dev
5783070 2964445 2760795 52% /dev
proc
0
0
0 0% /proc
ctfs
0
0
0 0% /system/contract
swap
513036 260 512776 1% /etc/svc/volatile
mnttab
0
0
0 0% /etc/mnttab
/usr/lib/libc/libc_hwcap1.so.1 5783070 2964445 2760795 52%
fd
0
0
0 0% /dev/fd
swap
512812
36 512776 1% /tmp
swap
512796
20 512776 1% /var/run
/lib/libc.so.1
Uname –a:
# zlogin -S nocompartida "uname -a"
SunOS babilonia 5.10 Generic_118855-33 i86pc i386 i86pc
Validarse en una zona
Para entrar a una zona podemos realizar un telnet o ssh a la
dirección IP asociada a la zona o entrar por consola con la utilizad zlogin:
zlogin –l [usuario] [nombre de zona]
Ejemplo de conexión a una zona con un usuario:
19
Spain OpenSolaris Users Group
# zlogin -l aulaunix nocompartida
[Conectado a la zona 'nocompartida' pts/5]
No directory! Logging in with home=/
Sun Microsystems Inc. SunOS 5.10
Generic January 2005
$ id
uid=100(aulaunix) gid=1(other)
$
Desinstalar una zona
Para desinstalar una zona tenemos que detener la zona y ejecutar
el comando zoneadm con la opción uninstall. Hay que usar esta opción con
mucha precaución ya que elimina todos los ficheros:
# zoneadm -z nocompartida halt
# zoneadm -z nocompartida uninstall –F
# df –k
/dev/dsk/c1d0s0
5783070 5894 5719346
1%
/bigzone
La desinstalación de la zona puede tardar varios minutos al igual
que al crearla.
20
Descargar