Ejecutar contenedores linux (lxc) en ubuntu para aislar los procesos del servidor web (ruby / thin)

Pregunta:

Estoy intentando configurar un servidor en el que ejecutaría varias aplicaciones. Principalmente internos, pero también podrían ser proyectos de código abierto como Redmine. Todos serían aplicaciones Rails / Ruby / scripts de prueba que se ejecutan en navegadores sin cabeza. En esencia, estoy tratando de configurar un entorno similar a heroku internamente y quería algún tipo de aislamiento de proceso entre estos procesos en ejecución.

Primero me topé con las cárceles chroot y luego me enteré de LXC. LXC parece ofrecer un mejor control sobre las cárceles chroot simples. Tengo una interfaz nginx y me gustaría ejecutar los procesos de la aplicación del servidor web (thin / mongrel / webrick) en contenedores aislados. Por lo general, simplemente comenzamos estos procesos en la dirección IP local y tenemos un proxy nginx para ellos. ¿Cuál es la mejor manera de hacer esto? ¿Las personas configuran una IP con puente estático para el contenedor y hacen que nginx apunte a ella? ¿Cómo me aseguro de que los servidores web que se ejecutan en los contenedores solo sean accesibles para el host externo?

La documentación sobre LXC parece ser un poco escasa. Agradeceríamos mucho las sugerencias para algunos buenos tutoriales o CÓMO. Mi entorno de implementación de destino es una caja Lucid de 64 bits.

PD: No soy un gurú de Linux. Entonces, sé gentil.

Respuesta:

Supongamos que su propia IP es 192.168.1.1, su puerta de enlace es 192.168.1.254 y su red es 192.168.1.0/24.

Debe crear una interfaz en puente en su máquina host, como esta en el archivo / etc / network / interfaces

 auto lo
 iface lo inet loopback

 auto br0
 iface br0 inet static
     address 192.168.1.1
     network 192.168.1.0
     netmask 255.255.255.0
     broadcast 192.168.1.255
     gateway 192.168.1.254
     bridge_ports eth0
     bridge_stp off
     bridge_fd 3
     bridge_hello 1
     bridge_maxage 5

y luego instale un ubuntu básico en LXC:

 apt-get install lxc vlan bridge-utils python-software-properties screen
 mkdir /lxc
 debootstrap oeniric /lxc/ubuntu
 chroot ubuntu
 locale-gen en_US.UTF-8
 apt-get update
 apt-get install lxcguest ssh
 passwd
 rm /etc/mtab
 ln -s /proc/mounts /etc/mtab
 exit

crea un archivo /lxc/ubuntu.config con el contenido

 lxc.utsname = ubuntu
 lxc.tty = 8
 lxc.rootfs = /lxc/ubuntu
 lxc.mount = /lxc/ubuntu.fstab
 lxc.network.type = veth
 lxc.network.flags = up
 lxc.network.link = br0
 lxc.network.name = eth0
 lxc.network.mtu = 1500
 lxc.network.ipv4 = 192.168.1.10/24

/lxc/ubuntu.fstab con

 none /lxc/ubuntu/dev/pts devpts defaults 0 0
 none /lxc/ubuntu/proc proc defaults 0 0
 none /lxc/ubuntu/sys sysfs defaults 0 0
 none /lxc/ubuntu/run tmpfs defaults 0 0

agregar a /lxc/ubuntu/etc/rc.local

 route add default gw 192.168.1.254

edite /lxc/ubuntu/etc/resolv.cont según sus necesidades.

Entonces puedes crear tu máquina con

 lxc-create -f /lxc/ubuntu.config -n ubuntu

entonces empezar

 lxc-start -n ubuntu

o parar

 lxc-stop -n ubuntu

o finalmente destruir

 lxc-destroy -n ubuntu

Su nueva máquina virtual tendrá la IP 192.168.1.10 y será accesible en la red.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım