User Tools

Site Tools


informatica:linux:docker:webserver

Webserver en alta disponibilidad

Creamos primera instancia de webserver:

Dockerfile:

FROM oraclelinux:6
RUN yum install -y httpd

Creamos la imagen:

# docker build -t local/webserver .

Vemos que ha creado la siguiente imagen:

# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
local/webserver     latest              e51c8b5d8581        17 seconds ago      762.2 MB
oraclelinux         6                   768a3d7b605a        2 weeks ago         222.8 MB

Arrancamos la imagen mapeando el puerto 8881 al 80 de la imagen

# docker run -p 8881:80 -d local/webserver httpd -D FOREGROUND

Si vamos a localhost:8881 nos muestra el apache del docker

Para que nos muestre contenido estático local, creamos las carpetas en nuestro servidor y mapeamos los volumenes.

Creamos carpetas:

/docker/webserver1
/docker/webserver2

Con ficheros index.html

Arrancamos el container:

docker run -p 8881:80 -v /docker/webserver1:/var/www/html -d local/webserver httpd -D FOREGROUND
docker run -p 8882:80 -v /docker/webserver2:/var/www/html -d local/webserver httpd -D FOREGROUND

Ahora creamos un balanceador de carga:

Dockefile

FROM haproxy
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        daemon

defaults
        log     global
        mode    http
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

frontend http

   bind *:80

   default_backend www

backend www
   balance roundrobin
   server f0313555eafe 172.17.0.2 check port 80
   server 6543461a2caa 172.17.0.3 check port 80

Creamos la imagen

docker build -t local/haproxy .

Arrancamos el container:

docker run -d -p 8800:80 local/haproxy

Si navegmos a localhost:8800 nos balancea entre los dos servidores

Añadir otro servidor a la granja

Podemos hacer que el fichero de configuración sea persistente:

docker run -p 8800:80 -d --name my-running-haproxy -v /docker/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro local/haproxy

Entonces hacemos un cambio y reiniciamos container:

docker restart my-running-haproxy
informatica/linux/docker/webserver.txt · Last modified: 2016/06/07 23:13 by jose