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