Virtualizar servidor

bLero

Hola a todos,

Estoy trabajando en una pequeña startup (3 empleados) de desarrollo de software para dispositivos de realidad aumentada. Como servidores de desarrollo, hasta ahora estábamos usando VPS Cloud de digital ocean.

No es que tengamos muchos, pero el gasto mensual empieza a ser considerable (sobre 50$/mes) por unos mini-servidores mediocres.

Aprovechando que la semana que viene nos cambian la conexión de la oficina por 100Mb simétricos con IP fija, hemos decidido comprar un servidor y montar en la ofi toda nuestra infraestructura de desarrollo, beneficiándonos de la velocidad de la red local y esperando amortizar el coste del servidor en unos meses.

El servidor que hemos comprado es el siguiente:

servidor

La idea es virtualizar el servidor para sacar de él 4-6 máquinas lógicas (no necesitamos mucha potencia excepto para 1). Para ello, al disponer únicamente de 1 IP pública, tenemos pensado montar un firewall + proxy delante que nos redirija a una u otra de las máquinas virtuales según el hostname utilizado.

El problema viene con el software para la virtualización, no sé cuál me daría mayor potencia dadas las carecterísticas de la máquina.

He evaluado las siguientes alternativas (gratuitas):

alternativas

¿Qué software para virtualización utilizaríais vosotros? ¿Alguna mejora / consejo sobre esta configuración?

Como SO host, le meteré Debian 7 (en el caso de no usar hipervisor de tipo 1).

D

#1 Solo conozco uno de esos softwares, montado en mi anterior empresa y funcionaba de cine.
VMWare ESXi. Como necesitas, ellos también tenían varios servicios en el mismo servidor, y por ello decidieron separarlo en "servidores virtuales".

Cojo sitio :D

Pintado

#1 Te diría,casi sin duda VMWare ESXi, llevo trabajando tiempo con vmware y sus productos, sinceramente no he tenido la necesidad de probar otros a fondo, por eso te digo que casi sin duda...
Lo mejor que tiene es que siempre tienes una herramienta o módulo que hace lo que necesitas, ofrece una gestión muy completa de todas las máquinas y hay mucha ayuda o soporte googleando un poco ;)

Pintado

#1 Por cierto si tienes pensado un firewall+proxy por software te recomiendo Endian, esta basado en Linux es gratuito, muy configurable, robusto, fiable y no necesita muchos recursos

1 respuesta
ElRuso

Otro punto mas pare VMware ESXi.
MS HyperV es otra opcion viable.

No puedes hacer un RAID 10 con solo 2 HDD. Espero que es una errata. :)
Y sobre el proxy, para que lo quieres, si sois solo 3 empleados?

1 respuesta
garlor

se referira a raid 1 supongo

1 respuesta
bLero

#4 Mi idea era usar shoreline como firewall y nginx como proxy, nunca habia oido hablar de Endian, le echaré un vistazo.

#5 Se me coló el 1 en el RAID, la idea es montar un raid 0 (data-striping). Sobre el proxy, no me refiero a un proxy de control de acceso, sino a un Reverse Proxy. Ten en cuenta que al tener una única IP fija y múltiples servidores, necesito dirigir de alguna forma las peticiones que llegan a la puerta de enlace para que viajen al servidor solicitado. En este caso utilizo el hostname para ello.

#6 Me refería al 0, voy a poner una raspberry PI a hacer backup de lo importante. Si lo fuese a utilizar para producción sí que utilizaría RAID 1.

Creo que me decantaré por ESXi leídas las opiniones.

1 respuesta
ElRuso

#7 Te entiendo bien que tienes múltiples servidores escuchando en el mismo puerto? Digamos dos servidores web en paralelo? Pq si no, casi cualquier firewall hace Port Forwarding

2 respuestas
bLero

#8 Sí claro, varios servidores escuchando en el 80, 443, 5432 (postgres) ...

B

ESXi no sale muuuuuy cara la licencia?¿ Pregunto, que no lo sé. Y supongo que también dependerá del entorno que vayas a montar, porque para poner tres máquinas virtuales no sé yo si merece la pena...

También le puedes echar un vistazo a Hyper-V (pillas licencia de 2012 Datacenter y listo) si vas a montar algo con Windows.

Y como dice #8 el tráfico lo filtras por puerto directamente a menos que vayas a hacer balanceo de carga con servidores redundantes o algo así.

2 respuestas
D

#10 hay una versión free que para instalarlo en un solo host, va muy bien

1 respuesta
B

#11 Ostras, pues no lo sabía...gracias por la info. ;-) (habrá que echarle un vistazo a ver que tal) xD

bLero

#10 No puedo usar port forwarding porque necesito usar el mismo puerto en varias máquinas virtuales.

La idea sería instalar la versión free claro.

lech0n

ESXi es gratuita si no vas a usar mas de 32 Gb de ram y un numero de procesadores que ahora no recuerdo, esto es para la versión 5.5. además si tu servidor es hp, tienen ISO personalizadas.

https://my.vmware.com/web/vmware/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/5_5

Nosotros tenemos todo en VMWare y no hemos pagado nada porque es Free.
Respecto al RAID porque vas a montar un 0, por la rapidez? yo montaria un 1 por seguridad porque te puede fallar uno y mas en ese servidor que la controladora creo que es integrada en placa; pero como lo vas a utilizar para testing bueno.
Lo bueno de ESXi, es que puedes hacer redes virtuales sin darles salida a internet utilizando tarjetas virtuales, además puedes darle "mas recursos" de los que tiene la maquina, dándole memoria swap en disco o procesadores de mas.

1 respuesta
sPNkKkKkKkKk

En cuanto al proxy inverso podrías utilizar perfectamente squid y al firewall ipfire.

1 respuesta
rastut

Buenas,

Yo te dejo aqui mi humilde opinion de sysadmin xD. Yo he trabajado con ESXi, con Docker, con KVM y OpenVZ, y bueno creo que cada una tiene sus pros y sus contras, y que cada una sirve para lo que sirve. ESXi en su version gratuita, te ofrece un hypervisor que es muy parecido a su version de pago pero con la diferencia en su gestion y capacidades, es decir la version gratuita de ESXi no se puede gestionar con Vcenter y Vcenter es el gestor de host ESXi que te permite pos realizar todas las cosas chulas de Vmware (HA, Fault Tolerance, Vswitch, Migraciones en caliente entre nodos, importaciones según formato y clonaciones, etc). ESXi en su version de pago gestionado por Vcenter tiene una gran escalabilidad asi como muchas soluciones para insfrastructuras grandes, control de gastos, monitorizacion, control de desastres, etc. pero eso si siempre pagando, su version basica tiene carencias para realizar segun que funciones pero para entornos de produccion controlados que no van a crecer o creceran poco es una opcion.

Por otro lado si viste un bonito Debian, esa maquina podria virtualizar con KVM + libvirt, virtualizacion linux que eso te permitiria tener un entorno escalable pero mas a bajo nivel, economico, sencillo y open source. Yo tengo montado por ejemplo un cluster de CentOS/RHEL con un CLVM, esto me permite tener dos nodos de virtualizacion y migracion entre ellos, snaphots y demas historias que me ofrece un Vcenter (excepto la parte de automatizacion de migraciones llamada Vmotion , es decir Vcenter es capaz de migrar una maquina o el almacenamiento si un host tiene mucha carga , segun unos parametros ) pero sin pagar ni un duro, pero eso si todo a bastante bajo nivel sin interfaces graficas ni nada.

Para acabar tienes Docker, que volvemos a lo mismo segun el entorno esta de puta madre, Docker te permite agilidad a la hora de levantar servicios y de escalar segun necesidades. En mi caso docker lo utlizo para el entorno de desarrollo, como trabajo con muchos developas, pos muchas veces son necesarios nose un frontal web o un frontal bbdd para realizar pruebas, docker te permite tener preparado un entorno con un repo local y que gente que no tiene "tiempo" para prepararse un entorno lo tenga arriba en una media de 7 segundos. Docker es muy divertido porque puedes conectar todo por dentro y puedes hacer entornos complejos con llamadas entre contenedores, a parte hacer imagenes de Docker es muy sencillo. El unico problema que le veo a Docker es su corta vida, pero vamos con Redhat detras metiendo pasta promete mucho. Docker es el futuro xD. Virtualizar entornos graficos no es sencillo, y no se puede dockerizar un windows. Por cierto con docker los procesos son independientes es mas no virtualizas una maquina, si no que " virtualizas" el proceso, luego creo que en mi vida habia visto algo mejor que los volumes de Docker y bueno el tema de copiar y exportar pues de los 4 que has dicho es el unico que tiene control de versiones y te permite pos eso hacer rollback de lo que haces en las maquinas, ejecutar versiones viejas del mismo container, yo no le veo tantos problemas a Docker.

Otra alternativa libre tienes por ejemplo Proxmox, que es una combincion de KVM y OpenVZ ( parecido a docker, es decir contenedores basados en LXC) y una interfaz web para gestionar todo. La interfaz web pues te permite realizar todo lo que deberias hacer a manina en un entorno KVM. Es una alternativa sencilla para entornos no muy complejos, no es muy escalable pero es sencillo y mejor que una version de gratuita de ESXi.

Bueno perdon por el tocho xD, espero que sirva de algo xD.

3 2 respuestas
D

#16 Yo estoy haciendo pruebas con Docker mediante el libro The Docker Book y es brutal la potencia de la tecnología.

Para pasar aplicaciones de entornos development y/o preproduction a production es genial. Te quitas el típico error del developer de : "Pues en mi PC funciona"

Lo que me preocupa es la volatilidad de los datos. Es decir, si se para una contenedor docker que tenga datos, qu epasa con esos datos? s evan a tomar viento?

1 respuesta
ninjachu

#1 me uno a la experiencia en esx

rastut

#17 No, vamos almenos yo por ejemplo hago una imagen con un nginx, y le indico que me sace un volume a un path concreto del sistema que ahí tengo montado un volumen de la SAN, y de ahí cuelgan los ficheros del famoso developa. Otro ejemplo, montar un contenedor como volumen de datos. https://docs.docker.com/userguide/dockervolumes/

Pero vamos el tema de hacer un contenedor como volumen , viene siendo la misma historia que los volumes en si. Tambien puedes montar ficheros de tu host y demas.

Creo que hay que tener bastante claro a la hora de trabajar con Docker, es que Docker no es una maquina virtual en si, si no un contenedor que esta diseñado para correr un solo servicio, uno solo. Por lo tanto un servicio suele escriber donde tu le indicas, por así decirlo, y bueno si le das un ojo a la url que te pasado veras como es facil gestionar datos fuera y dentro de los contenedores con persistencia

1 respuesta
D

#19 lo hablaba sobre todo porque vi que hay dockers de MySQL, PostgreSQL, etc... y claro. Si dichocontenedor se para, a donde van a parar las databases? xD Peor si puedes conectar un volumen del sistema que corre el docker, creo que le problema se soluciona.

Tengo que continuar con el libro, ya que me quedé por el 4º capitulo. Supongo que mas adelante comentan este tema.

Por otor lado, lo veo ultra útil para los developers como dices. Crean una aplicación, o una nueva versión, y la quieren testear. Solo hay que generar la imagen del contenedor, y luego en el servidor de preproduction o production, descargarlo y hacerlo correr.

Hablo muy desde el desconocimiento de docker.

bLero

Muchas gracias por todas la opiniones.

#14 Raid 0 por velocidad. Tendre una raspberry pi en la red haciendo copia de seguridad de los datos importantes a una unidad externa aunque es un servidor de desarrollo que no tendrá mucha miga.

#15 Tenia pensado usar shoreline y nginx pero les echaré un vistazo a esos.

#16 Había pensado también en KVM sobre linux, el tema es que al ser un hipervisor de tipo 2, creo que me restará bastante potencia bruta a las máquinas virtuales.

Docker está genial, y lo he usado, pero tiene el gran inconveniente (o ventaja desde otro punto de vista) de que no es un sistema aislado. Es decir, la carga que metas a una box de docker afectará al resto, o la memoria que consuma, el uso de disco, etc.

Casi veo a docker como un complemento a instalar en alguna de las máquinas lógicas que una alternativa a la virtualización global del servidor.

1 respuesta
rastut

#21 KVM funciona a nivel nativo y de kernel es como un baremetal, pero vamos opciones muchas dependiendo lo que necesites. A parte que Docker se le pueden limitar los recursos tanto de cpu como de memoria, asi que no te podra tumbar otros dockers. Tanto en KVM, Docker, OpenVZ y VMware puedes controlar los recursos que usan tus entornos virtuales y evitar que la carga de un servicio, maquina virtual o contenedor consuma mas recursos de los que debe.

Nose Rackspace o Amazon Web Serivce usan Docker y KVM con XEN , un buen ejemplo, para dar servicios en produccion haciendo uso de la ballenita.

1 respuesta
1 año después
hande

peazo de post os habéis currado entre unos y otros, muchas gracias! ;-)

A Docker le veo mucha utilidad y posibilidades para entornos de desarrollo con varios developers, por la facilidad de uso de los contenedores ("clonado" y deploy) para cada fase, pero creéis que Docker sería de utilidad para un sólo programador? Quiero decir, no es demasiado lío para preparar todo el entorno (no sé si me explico) #22

johnjones

Como hypervisor habeis probado XenServer (http://xenserver.org/ )? proyecto opensource de Citrix

neo-ns

#1 tu problema es el hardware, con vmware esxi tendras solo problemas de drivers con: t. de red y si haces raid con la controladora de raid, ya que tiene que ser dedicada y estar en la white list.

La t. de raid integrada de esa placa base, no te va a funcionar, meteras raid0 y al instalar el vmware esxi no te encontrara el raid.

https://www.vmware.com/resources/compatibility/search.php

Tienes Hyper-V, de microsoft con W2012 R2, pero es de pago.

Respecto al firewall, si quieres, me puedes mandar MP. Tengo distribucion de Sophos y para mi lo mejor del mercado a nivel mundial.

Tienes la solucion UTM o XG

https://www.sophos.com/en-us/products/utm-9.aspx
https://www.sophos.com/en-us/products/next-gen-firewall.aspx

1 respuesta
bLero

Respondiendo a #25 y por actualizar un poco el post que es de hace ya 1 año:

Al final me decanté con esxi, y llevo funcionando con ello desde entonces sin ningún problema y con un rendimiento excepcional.

Lo único que tuve que hacer fue instalar ciertos controladores extra para la tarjeta de red y el raid, haciendo un par de búsquedas por la web se encuentran fácil.

Por delante puse una máquina física con 2 tarjetas de red que actúa como gateway + firewall + proxy inverso.

Como firewall uso Shoreline y como proxy Nginx. También tengo una RPI2 conectada a la red interna y un disco duro externo haciendo copias de seguridad con RSYNC a las máquinas del exsi.

1 2 respuestas
neo-ns

#26 ostia, no me he dado cuenta.... XDDDD

4 meses después
I
#26bLero:

Respondiendo a #25 y por actualizar un poco el post que es de hace ya 1 año:

Al final me decanté con esxi, y llevo funcionando con ello desde entonces sin ningún problema y con un rendimiento excepcional.

Lo único que tuve que hacer fue instalar ciertos controladores extra para la tarjeta de red y el raid, haciendo un par de búsquedas por la web se encuentran fácil.

Por delante puse una máquina física con 2 tarjetas de red que actúa como gateway + firewall + proxy inverso.

Como firewall uso Shoreline y como proxy Nginx. También tengo una RPI2 conectada a la red interna y un disco duro externo haciendo copias de seguridad con RSYNC a las máquinas del exsi

Mola, me lo copio.

Usuarios habituales