Swarm
Instalación y configuración
Describimos como instalar swarm y jugar con él un poco.
Pre-requisitos
Sistema Operativo
- Instalación mínima de Fedora 25
- Red pública para el controlador (ens3)
- Red privada para los nodos (ens4)
Firewall
El firewall debe modificarse para permitir acceso de/a swarm por la interfaz de red privada. Solo abriremos los puertos necesarios.
# configurar zona
firewall-cmd --permanent --zone=work --add-port=2377/tcp --add-port=7946/tcp --add-port=7946/udp --add-port=4789/udp
# modificar la zona de ens4
nmcli connection modify ens4 connection.zone work
# activar
firewall-cmd --full-reload
nmcli connection reload ens4
# verificar
nmcli connection show ens4
firewall-cmd --list-all
firewall-cmd --list-all --zone=work
Instalación
Instalaremos la versión más reciente en los repositorios de Fedora.
# instalar
dnf -y install docker-latest
# activar
systemctl enable docker-latest
systemctl start docker-latest
Configuración
Debemos iniciar un swarm y unir los nodos a él.
# crear un swarm (manager)
docker swarm init --advertise-addr 192.168.77.1
# agregar nodos (nodos)
# ejecutar ésto en nodos swarm2 y swarm3
docker swarm join --token <token-generado> 192.168.77.1:2377
# verificar (manager)
docker info
docker node ls
Despliegue
Veremos como desplegar algunas aplicaciones, usando ejemplos simplificados.
# crear un servicio con 1 réplica
docker service create --replicas 1 --name helloworld alpine ping docker.com
docker service ls
docker service rm helloworld
# crear un servicio con 3 réplicas
docker service create --replicas 3 --name helloworld alpine ping docker.com
docker service ls
# inspeccionar el servicio
docker service inspect --pretty helloworld
# escalar
## abajo
docker service scale helloworld=1
docker service inspect --pretty helloworld
## arriba
docker service scale helloworld=5
docker service inspect --pretty helloworld
docker service rm helloworld
# exponer servicios
docker service create --name my-web --publish 8080:80 --replicas 3 nginx
docker service ls
docker ps
## probar
curl localhost:8080
curl 192.168.77.1:8080
curl 104.36.16.224:8080