10. Programación de centralitas privadas Programación de la centralita. Virtualización. - Hipervisor. - Tipos de máquinas virtuales. - Creación de una máquina virtual. Instalación y programación de centralitas software. Programación de terminales VoIP. Arquitectura física de un servidor VoIP. 1
Máquina virtual Arquitectura típica de una máquina virtual. VirtualBox En informática una máquina virtual es un software que simula a un ordenador y puede ejecutar programas como si fuese un ordenador real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de este "ordenador virtual". Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Windows 8, por ejemplo) sin necesidad de instalarlo directamente en nuestro ordenador y sin miedo a que se desconfigure el sistema operativo primario. 2
Tipos de máquinas virtuales Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina. Máquinas virtuales de sistema (en inglés System Virtual Machine) Máquinas virtuales de proceso (en inglés Process Virtual Machine) Máquinas virtuales de sistema Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física real multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o hipervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system"). Aplicaciones de las máquinas virtuales de sistema Varios sistemas operativos distintos pueden coexistir sobre el mismo ordenador, perfectamente aislados el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual puede proporcionar una arquitectura de instrucciones que sea algo distinta de la verdadera máquina. Es decir, podemos simular hardware. Varias máquinas virtuales (cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en ordenadores distintos para evitar 3
interferencias, se puedan ejecutar en la misma máquina de manera completamente aislada y compartiendo los recursos de un único ordenador. La consolidación de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware. La virtualización es una excelente opción hoy día, ya que las máquinas actuales (Laptops, desktops, servidores) en la mayoría de los casos están siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas máquinas, en una ya existente, permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio, etc). Máquinas virtuales de proceso Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno.net de Microsoft que se llama "Common Language Runtime". 4
Inconvenientes de las máquinas virtuales Uno de los inconvenientes de las máquinas virtuales es que agregan gran complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo "anfitrión" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta pérdida de eficiencia. Técnicas Emulación del hardware de la máquina real (ejecución nativa) Esta técnica se suele llamar virtualización completa (full virtualization) del hardware, y se puede implementar usando un hipervisor de Tipo 1 si se ejecuta directamente sobre el hardware o de Tipo 2 si se ejecuta sobre otro sistema operativo Cada máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware de la máquina real. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos simultáneamente en ordenadores "privados" virtuales. El sistema pionero que utilizó este concepto fue la CP-40, la primera versión (1967) de la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de IBM (de 1972 en adelante). Con la arquitectura VM, la mayor parte de usuarios controlan un sistema operativo monousuario relativamente simple llamado CMS que se ejecuta en la máquina virtual VM. Actualmente tanto Intel como AMD han introducido prestaciones a sus procesadores x86 para permitir la virtualización de hardware. Emulación de un sistema no nativo Las máquinas virtuales también pueden actuar como emuladores de hardware, permitiendo que aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teoría no soportan. Algunas máquinas virtuales emulan hardware que sólo existe como una especificación. Por ejemplo: La máquina virtual P-Code que permitía a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier ordenador con esta máquina virtual correctamente instalada. 5
La máquina virtual de Java Esta técnica permite que cualquier ordenador pueda ejecutar software escrito para la máquina virtual. Sólo la máquina virtual en sí misma debe ser portada a cada una de las plataformas de hardware. Virtualización a nivel de sistema operativo Esta técnica consiste en dividir un ordenador en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto actúa como si realmente existiesen varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX. Software de virtualización de sistema VirtualBox de Solaris VirtualBox es un potente virtualización AMD64 / Intel64 de productos x86 tanto para la empresa como el uso doméstico. VirtualBox dispone de características esenciales para clientes empresariales y, además, es también la única solución profesional que está libremente disponible como software de código abierto bajo los términos de la Licencia Pública General de GNU (GPL) versión 2. Actualmente, VirtualBox se ejecuta en Windows, Linux, Macintosh y anfitriones Solaris y soporta un gran número de sistemas operativos invitados incluyendo, pero no limitado, a Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7, Windows 8), DOS / 3.x Windows, Linux (2.4, 2.6 y 3.x), Solaris y OpenSolaris, OS / 2, y OpenBSD. Funcionamiento de VirtualBox Al iniciar el programa vemos la pantalla de la figura. Pulsando en Nueva iniciamos la configuración para un nuevo sistema operativo: Una vez seleccionado el tipo de sistema operativo a instalar, pulsamos en Next en las sucesivas pantallas. No es necesario realizar ninguna modificación. 6
Al final tendremos configurado el programa para proceder a la instalación del sistema operativo. Pulsamos en Iniciar y seleccionamos el lugar en que se encuentra la copia del sistema operativo a instalar. Esta copia puede estar en un DVD o en una copia ISO: A continuación se iniciará el proceso de instalación del sistema operativo siguiendo las pautas normales de instalación. VMware VMware Player es un paquete de software de virtualización suministrado gratuitamente por VMware Inc., VMware Player puede ejecutar aplicaciones virtuales existentes y crear sus propias máquinas virtuales (que requieren un sistema operativo a instalar para ser funcional). Se utiliza el mismo núcleo de la virtualización como VMware Workstation, un programa similar con más funciones, pero no de forma gratuita. VMware Player está disponible para su uso personal y no comercial. Dispone de una página web activa de la comunidad para discutir y resolver problemas, y una base de conocimientos. Funcionamiento de VMware Una vez instalado el programa doble clic en el icono creado para VMware. La pantalla de bienvenida será como la de la figura siguiente: En la figura aparecen dos sistemas operativos ya instalados. Para ejecutarlos basta con hacer doble clic sobre cada uno de ellos. Para añadir otra máquina virtual procederemos de la siguiente forma: 7
Doble clic en Create a New Virtual Machine Es posible añadir una máquina virtual desde una copia del mismo en CD o DVD o desde una copia ISO residente en cualquier carpeta de nuestro disco duro (Opción Browse en la figura anterior). Pulsamos en Next y rellenamos los datos que de configuración del sistema operativo que vamos a instalar: A continuación se instalará el sistema operativo siguiendo las pautas que tenga el propio sistema operativo. 8
Probando Elastix en una máquina virtual Una vez instalada la máquina virtual descargamos una versión de Elastix. Asegurémonos que el archivo seleccionado es similar a este formato: Elastix-2.4.0-Stable-i386-bin-30Jan2013.iso Al hacerlo obtenemos la pantalla de inicio de Elastix, presionamos Enter. Nota: cada vez que debamos navegar entre las diferentes opciones de la pantalla utilizaremos la tecla de tabulación o tab. El primer paso corresponde a la selección del idioma de instalación, navegamos en la pantalla utilizando las flechas de dirección del teclado. También utilizaremos la tecla de tabulación y la barra espaciadora en algún momento de la instalación. Seleccionamos el idioma, luego nos colocamos en OK utilizando la tecla de tabulación y presionamos Enter. El siguiente paso es la selección del teclado, si su teclado esta en español simplemente seleccionen es. Si su teclado está en inglés, deberían seleccionar us-acentos. 9
Nos colocamos en Aceptar y presionamos Enter. Ahora el proceso creará nuevas particiones para nuestra instalación, en el proceso borrará todo el contenido del disco. No pasa nada!, el proceso nos indica que borrará todo el contenido del disco que estamos utilizando, en este caso se refiere al disco virtual que creamos junto con la máquina virtual. En nuestro caso no tenemos nada que comprometa nuestro servidor así que seleccionamos Si y presionamos Enter. Ahora vamos a configurar la interfaz de red de Elastix, este es un proceso diferente al que hiciéramos hace un momento en VirtualBox y no tienen relación directa. Seleccionamos Si y presionamos Enter. 10
En la configuración de red, la opción Activar al inicio se encuentra seleccionada, seleccionamos también Activar soporte IPv4, para esto nos colocamos en ese campo utilizando la tecla de tabulación y luego presionamos la barra espaciadora. Al hacerlo se colocará un asterisco en el cuadro de selección. Luego navegamos con la tecla de tabulación hasta Aceptar y presionamos Enter. Ahora es necesario configurar la IP; a menos que tengamos pre-definida una dirección IP fija en nuestra red, deberíamos seleccionar la opción de IP dinámica, luego podemos configurar una IP fija si fuera necesario. Navegamos hasta Aceptar y presionamos Enter. Ahora configuraremos el huso horario, para lo cual seleccionamos la opción El reloj del sistema utiliza UTC, también con la barra espaciadora. Luego navegamos hasta las opciones de región y buscamos nuestro continente y una ciudad cercana a la nuestra (si la nuestra no estuviera en la lista). En la siguiente pantalla debemos colocar una contraseña para el usuario root de Linux. Este punto es muy importante y es necesario colocar una contraseña lo suficientemente buena y que sea fácil de recordar para nosotros. 11
Colocamos la contraseña y su confirmación, luego navegamos hasta Aceptar y presionamos Enter. Ahora empezará el proceso de instalación, esto tomará varios minutos dependiendo de la máquina virtual que hayamos creado y de nuestro ordenador. Al terminar la instalación el servidor reiniciará, esto es normal, ahora esperamos a que Elastix inicie sin presionar ninguna tecla. Una vez que el servidor ha iniciado aparecerá una pantalla en la cual debemos colocar una contraseña para el usuario root de MySQL, la base de datos que utiliza Elastix. Debemos tener el mismo cuidado que con la contraseña del usuario root de Linux. Al colocar la contraseña navegamos hasta Aceptar y presionamos Enter. Este proceso se realiza una sola vez, junto con una confirmación, en la cual debemos colocar la contraseña nuevamente. Ahora el proceso nos pedirá una contraseña para el usuario admin de la interfaz gráfica de administración. Esta contraseña es la misma para otros servicios que se ejecutan en Elastix, 12
como FreePBX, VTiger, FOP y A2Billing. Al igual que las contraseñas del usuario root de Linux y el usuario root de MySQL, debemos ser muy cuidadosos. Al colocar la contraseña navegamos hasta Aceptar y presionamos Enter. Este proceso también se realiza una sola vez, junto con una confirmación, en la cual debemos colocar la contraseña nuevamente. Al completar todos los pasos obtenemos la pantalla de acceso a la consola de Linux del servidor Elastix que acabamos de instalar. Iniciamos la sesión como usuario root y colocamos la contraseña que establecimos durante la instalación, luego hacemos clic en Enter. Si todo salió bien tendremos la siguiente pantalla. 13
En esta pantalla obtenemos la dirección IP que se asignó al servidor Elastix dinámicamente. En este ejemplo es 192.168.0.106 Instalación y utilización de Putty Como es habitual en la mayoría de los casos, supongamos que queremos acceder a Elastix desde otra máquina, que tendrá, casi seguro Windows. Esto significa que necesitamos una herramienta de conexión remota que utiliza el protocolo SSH, que se llama "Putty". Una vez lo hayamos descargado, procederemos a ejecutarlo dando doble click sobre el programa, luego nos saldrá una opción donde dice "Host name (or IP address)." Ahí colocaremos el IP de nuestro servidor Elastix. Si queremos grabar esta conexión de forma tal que no tengamos que teclear otra vez la direccion IP, vamos a "Saved Sessions". Aquí escribiremos un nombre descriptivo como "mi central IP", "Elastix", etc., y le damos al botón de "Save". Desde aquí pulsamos en Open y ya estamos en Elastix. Desde el mismo equipo vamos a un navegador y colocamos esa dirección. Al colocarla obtenemos una ventana que nos indica que el certificado de seguridad del servidor no es de confianza, en este caso es nuestro servidor así que no tenemos razón para pensar que tendrá algo malicioso así que hacemos clic en continuar de todos modos. 14
Hecho esto obtenemos la ventana de ingreso a la interfaz administrativa de Elastix. Ingresamos con el usuario admin y la contraseña que colocamos durante el inicio del servidor, hacemos clic en Submit y listo. Ahora estamos en la interfaz de administración de Elastix y podemos empezar a crear extensiones, troncales y cualquier cosa que se nos ocurra. 15