Vamos a introducir algunos comandos básicos de administración de zonas que nos ayudarán a mantener nuestra instalación de Hadoop en óptimas condiciones. Este post lo escribo no para ser un referente en la administración de las zonas de Solaris, más bien, debido a que un amigo me ha pedido algunas nociones básicas para la gestión, así que ahí va.
Para la gestión de las zonas en Solaris contamos con los siguientes comandos:
- zonecfg nos permite configurar los parámetros de la zona (Nombre, IP, Packages, Resources, ...)
- zoneadm nos permite administrar la zona (Iniciar, Detener, Reiniciar)
- zlogin nos permite conectarnos a la sesión de una zona
- zonename nos permite saber el nombre de la zona en la que nos encontramos
Si ha esto le sumamos que las partes constantes del O.S. se encuentran compartidas (/dev, /lib) podemos ver cómo la utilización de Solaris Zones puede darnos una gran ventaja en las arquitecturas Web.
Puedes ver una imagen de la arquitectura obtenida desde http://www.solarisinternals.com/wiki/index.php/Zones_Best_Practices donde explican con detalle el funcionamiento y estructura de Solaris Zones
Solaris siempre tendrá una zona especial llamada Global correspondiente a la instalación del sistema operativo, es decir, la principal y sobre la cual deberemos realizar las tareas de administración de las Zonas Hijas (non-global zone).
Cada zona necesita una ubicación local donde almacenar aquellas partes que no se encuentren compartidas (Shared) y este path debe pertenecer a root y sólo él debe poder escribir. Esto que parece algo tonto es de vital importancia, como hemos comentado al principio, las zonas son aisladas unas de otras, a excepción de la zona Global que gestiona todas las demás, por lo tanto, si "alguien" tomase el control de la zona global, tendrá control sobre las non-global zones.
Por lo tanto, podremos ver el estado de todas las non-global desde la zona global para ello Solaris ha incorporado una opción -Z que hace referencia a todas las zonas en los comandos ps y prstat
Este tema, aunque la gente parece no tener en cuenta es de vital importancia y creo que si merece un post sobre cómo Gestionar la Seguridad en Zonas de Solaris 10 para Hadoop (os lo prometo)
Creación de una Zona
Vamos a crear una zona que nos servirá como template para la creación de datanodes de forma automatizada, para ello desde la zona global haremos lo siguiente
# mkdir -p /opt/zonesFácil no? Yo he establecido el valor de la propiedad autoboot a false ya que mi intención es mantener esta zona apagada como un template para desplegar datanodes, sin embargo, si quieres que Solaris inicie la zona automáticamente sólo tienes que poner el valor a true
# chmod 700 /opt/zones
# zonecfg -z node-template
node-template: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.
zonecfg:node-template> create
zonecfg:node-template> set zonepath=/opt/zones/node-template
zonecfg:node-template> set autoboot=false
zonecfg:node-template> add net
zonecfg:node-template:net> set physical=e1000g0
zonecfg:node-template:net> set address=10.1.1.7/24
zonecfg:node-template:net> set defrouter=10.1.1.254
zonecfg:node-template:net> end
zonecfg:node-template> verify
zonecfg:node-template> commit
zonecfg:node-template> exit
Configuración de una Zona Existente
# zonecfg -z node-templateY si queremos borrar una propiedad?
zonecfg:node-template> info
zonename: node-template
zonepath: /opt/zones/node-template
brand: native
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 10.1.1.7/24
physical: e1000g0
defrouter: 10.1.1.254
zonecfg:node-template> exit
zonecfg:node-template> remove net
zonecfg:node-template> info
zonename: node-template
zonepath: /opt/zones/node-template
brand: native
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
Instalación de una Zona
Una vez ya hemos configurado la zona, podemos comenzar la instalación con el siguiente comando
# zoneadm -z node-template installYa hemos instalado la zona, podemos comprobar su estado utilizando el comando zoneadm list
Preparing to install zone.
Creating list of files to copy from the global zone.
Copying <8137> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1194> packages on the zone.
Initialized <1194> packages on zone.
Zoneis initialized.
# zoneadm list -cvTodavía nos queda un último paso que es configurar el sistema, para ello, deberemos conectarnos a la consola de la zona utilizando la opción -C
ID NAME STATUS PATH BRAND IP
0 global running / native shared
1 node2 running /opt/zones/node2 native shared
2 node3 running /opt/zones/node3 native shared
3 node1 running /opt/zones/node1 native shared
- node-template installed /opt/zones/node-template native shared
Nota: zlogin -C utiliza como secuencia de escape ~. sin embargo, es posible cambiarla por la que queramos utilizando -e
Nos conectamos a la consola y finalizamos la instalación de Solaris como siempre (he puesto como caracter de escape #. en vez de ~.)
# zoneadm -z node-template bootUna vez concluida la identificación del sistema nuestra zona ya está preparada
# zlogin -C -e\# node-template
[Conectado a la consola de la zona 'node-template']
boot/reboot/halt de una Zona
Para las tareas de administración de la zona utilizaremos el comando zoneadm, a continuación podemos ver la opciones que tiene
# zoneadmPara ver las zonas disponibles y sus estados utilizaremos
sintaxis: zoneadm help
zoneadm [-z] [-u ] list
zoneadm {-z|-u }
Subórdenes:
help
boot [-- boot_arguments]
halt
ready
reboot [-- boot_arguments]
list [-cipv]
verify
install [-x nodataset] [brand-specific args]
uninstall [-F]
clone [-m method] [-s] zonename
move zonepath
detach [-n]
attach [-F] [-n] [-b patchid]* [-u]
mark incomplete
# zoneadm list -cvSi queremos bootar una zona ejecutaremos el siguiente comando
# zoneadm -z _nombre_zona_ bootSi queremos parar una zona ejecutaremos el siguiente comando
# zoneadm -z _nombre_zona haltSi queremos rebootar una zona ejecutaremos el siguiente comando
# zoneadm -z _nombre_zona rebootSi queremos que una zona deje de estar disponible para su gestión, pero no borrarla
# zoneadm -z _nombre_zona detachSi queremos que una zona vuelva a estar disponible para su gestión
# zoneadm -z _nombre_zona attachClonación de una Zona
Para poder clonar una zona, ésta debe estar halted y attached para ello, procederemos a clonar nuestra node-template a una nueva zona node4. Cuando clonamos una zona ésta (la clonada) se clona en estado unconfigured y por lo tanto es necesario conectarse a la consola para concluir la instalación. En cierta medida, la única diferencia entre crear una zona desde cero y una clonación es el origen de los paquetes (básicamente)
Obtenemos la configuración de la zona node-template (source)
# zonecfg -z node-template > node-template.cfgA continuación editamos el archivo de configuración y cambiamos los parámetros
zonename, zonepath y net, por ejemplo, con los siguientes valores
zonename: node4Crearemos la nueva zona con la configuración que hemos modificado
zonepath: /opt/zones/node4
brand: native
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 10.1.1.8/24
physical: e1000g0
defrouter: 10.1.1.254
# zonecfg -z node4 -f node-template.cfgDetenemos la zona de la cual vamos a clonar
# zoneadm -z node-template haltIniciaremos el proceso de Clonación
# zoneadm -z node4 clone node-templateUna vez concluido el proceso de clonación, podemos conectarnos a la consola de la nueva zona node4 y finalizar el proceso de identificación del sistema como hemos visto en el paso de Instalación
Espero que aunque sé que es muy breve, os sirva para recordar y perder el miedo a las zonas.
Más información sobre Administración de Solaris Zones
Que tal. me gustaría saber si en la instalación de zonas, existe posibilidad de que la instalación de la zona no se haga desde Internet sino que desde un repositorio de forma local, para lograr una mejor velocidad o en lugares donde existan restricciones de internet como datacenters
ResponderEliminarUn Saludo
Hola, Si es totalmente factible, para solaris 11, te bajas la imagen del repositorio de aca:
ResponderEliminarhttp://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html
El proceso es un poco largo, pero es factible!!!
Excelente artículo!
ResponderEliminarHe configurado mis zonas con todos sus recursos, sin embargo, al hacer un reinicio de mi servidor, pierdo el acceso a las zonas locales. Tienen el atributo autoboot en true, me hace falta algo más?
Salu2
Yo hice una nueva zona, sin embargo al tratar de realizar un respaldo, me indicó que no existían los dispositivos (no agregó los dispositivos de la zona global), revisando la siguiente dirección no los encontré /dev/rmt (vacío) como puedo hacer para agregar los dispositivos (cinta de respaldo /dev/rmt/0n)
ResponderEliminarEn respuesta a Anónimo, creo deberías activar también el inicio del servicio de zonas "svcadm enable zones" en la zona global.
ResponderEliminarHola, excelente articulo, en la universidad me pidieron crear una zona lo cual es un proceso relativamente fácil, ahora me piden la creación de una zona personalizada, es decir, elaborar un template a partir del cual pueda crear zonas que por ejemplo tengan algún software adicional en el momento de instalación. He buscado información al respecto pero no he podido realizar esto. Tienes alguna sugerencia?
ResponderEliminar