====== 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