1 00:00:05,060 --> 00:00:11,310 ‫Entonces ese poquito de magia no era realmente mágico. Era la malla de enrutamiento. The Routing Mesh es una 2 00:00:11,310 --> 00:00:18,510 ‫red entrante o entrante que distribuye paquetes para nuestro servicio a las tareas para ese servicio, porque 3 00:00:18,510 --> 00:00:20,880 ‫podemos tener más de una tarea. 4 00:00:20,940 --> 00:00:26,700 ‫En realidad, abarca todos los nodos, y está utilizando primitivas Kernel que llevan Entonces no estamos hablando de un nuevo servicio elegante. Realmente estamos hablando de las características principales del Kernel 5 00:00:26,700 --> 00:00:28,310 ‫un tiempo llamado IPVS. de Linux. Lo que realmente hace aquí es equilibrar la carga 6 00:00:29,100 --> 00:00:33,150 ‫en todos los nodos y escuchar en todos los nodos el tráfico. 7 00:00:33,150 --> 00:00:39,780 ‫Hay un par de formas en que podemos hablar sobre cómo funciona esto. 8 00:00:39,780 --> 00:00:43,360 ‫El primer ejemplo es de un contenedor a otro. 9 00:00:43,380 --> 00:00:46,110 ‫Si nuestro sistema de back-end, como 10 00:00:46,110 --> 00:00:50,050 ‫por ejemplo las bases de datos, se incrementara a 11 00:00:50,160 --> 00:00:57,780 ‫dos réplicas, las interfaces que hablan con los backends, en realidad no hablarían directamente con su dirección IP. 12 00:00:57,780 --> 00:00:58,900 ‫De hecho, hablarían con algo 13 00:00:58,900 --> 00:01:01,920 ‫llamado VIP o Virtual IP, que Swarm pone al frente de todos los servicios. 14 00:01:01,920 --> 00:01:07,530 ‫Esta es una IP privada dentro de la red virtual de Swarm, y asegura que la carga se distribuya entre todas las 15 00:01:07,530 --> 00:01:08,570 ‫tareas de un servicio. 16 00:01:08,640 --> 00:01:14,730 ‫rol de trabajador en su aplicación, y tenía 10 contenedores diferentes, no tiene que poner un balanceador de carga frente a eso. 17 00:01:14,730 --> 00:01:16,680 ‫Entonces, si puede imaginar si tuvo un 18 00:01:16,690 --> 00:01:24,000 ‫Esto hace eso por ti. 19 00:01:24,180 --> 00:01:26,210 ‫Cuando habla de tráfico de un servicio dentro de su red virtual hablando 20 00:01:26,220 --> 00:01:27,550 ‫con otro servicio dentro de su red virtual. 21 00:01:27,570 --> 00:01:33,420 ‫Y el segundo ejemplo de cómo funciona la malla de enrutamiento es que el tráfico externo que llega a tu enjambre puede elegir golpear cualquiera 22 00:01:33,480 --> 00:01:34,910 ‫de los nodos en tu enjambre. 23 00:01:35,340 --> 00:01:41,400 ‫Cualquiera de los nodos de trabajadores tendrá abierto ese puerto publicado y escuchando el tráfico de ese contenedor, y luego 24 00:01:41,400 --> 00:01:45,180 ‫redirigirá ese tráfico al contenedor adecuado en función de su equilibrio de carga. 25 00:01:45,180 --> 00:01:51,990 ‫Lo que esto significa es que cuando estás desplegando contenedores en un enjambre, no se supone que tengas 26 00:01:51,990 --> 00:01:57,990 ‫que preocuparte por el servidor en el que se encuentra porque eso podría moverse, ¿no? 27 00:01:57,990 --> 00:02:02,610 ‫Si un contenedor falla, y la tarea es recreada por el enjambre, podría poner eso en un nodo diferente. Y ciertamente no quiere tener que cambiar su firewall o 28 00:02:02,700 --> 00:02:05,280 ‫su configuración de DNS para que 29 00:02:05,280 --> 00:02:10,560 ‫el contenedor vuelva a funcionar. 30 00:02:10,560 --> 00:02:15,000 ‫La malla de enrutamiento resuelve muchos de esos problemas al permitir que nuestro sitio web de Drupal en el puerto 80 sea accesible desde 31 00:02:15,000 --> 00:02:15,840 ‫cualquier nodo en el enjambre. Y en 32 00:02:15,840 --> 00:02:21,480 ‫segundo plano, está tomando esos paquetes de ese servidor y luego los enruta al contenedor. diferente, lo enrutará a través de las redes virtuales. 33 00:02:21,480 --> 00:02:26,880 ‫Si está en un nodo 34 00:02:26,910 --> 00:02:31,170 ‫Si está en el mismo nodo, simplemente lo redirigirá al puerto de ese contenedor. 35 00:02:31,170 --> 00:02:31,960 ‫Y no tuvimos que hacer nada para habilitar esto. 36 00:02:32,100 --> 00:02:35,580 ‫Esto fue todo fuera de la caja. 37 00:02:35,760 --> 00:02:37,500 ‫Veamos un diagrama de cómo esto podría funcionar. 38 00:02:37,500 --> 00:02:39,590 ‫Si creé un servicio de noticias, y le dije que tuviera tres réplicas. Y creó tres tareas, con 39 00:02:39,750 --> 00:02:41,640 ‫tres contenedores, en tres nodos. Dentro de esa red de superposición, en realidad 40 00:02:42,560 --> 00:02:49,340 ‫está creando una IP virtual que está asignada al nombre DNS del servicio, ¿verdad? DNS, es el nombre del servicio. 41 00:02:49,340 --> 00:02:56,930 ‫Y el servicio, por defecto, el nombre 42 00:02:57,050 --> 00:03:02,810 ‫En este caso, creé un servicio llamado my-web, y cualquier otro 43 00:03:02,810 --> 00:03:03,190 ‫contenedor que 44 00:03:03,190 --> 00:03:09,470 ‫tengo en mis redes superpuestas que necesitan hablar con ese servicio dentro del enjambre, solo tienen que preocuparse por usar el DNS de mi web. La IP adecuada carga correctamente rebota el tráfico entre 45 00:03:09,470 --> 00:03:13,160 ‫todas las tareas en ese servicio. 46 00:03:13,160 --> 00:03:19,370 ‫Esto no es realmente DNS Round Robin. Esa es en realidad una configuración ligeramente diferente. Podríamos habilitar 47 00:03:19,460 --> 00:03:23,750 ‫eso si quisiéramos. De hecho, hay una opción para usar DNS Round Robin. 48 00:03:23,750 --> 00:03:29,240 ‫cachés de DNS dentro de nuestras aplicaciones nos impiden distribuir correctamente la carga. 49 00:03:29,240 --> 00:03:33,040 ‫Los beneficios de los VIP sobre Round Robin es que muchas veces nuestros 50 00:03:33,350 --> 00:03:41,230 ‫En lugar de luchar con nuestros clientes de DNS en la configuración de DNS, solo confiamos en el VIP, que es algo así como lo que tendría si 51 00:03:41,240 --> 00:03:43,480 ‫comprara un equilibrador de carga de hardware dedicado. 52 00:03:43,490 --> 00:03:49,640 ‫En el segundo ejemplo, esto muestra 53 00:03:49,640 --> 00:03:54,700 ‫cómo sería el tráfico externo. 54 00:03:54,780 --> 00:03:59,640 ‫Esto es similar a lo que acabamos de hacer con Drupal, donde cuando creé esos cuadros amarillos, al crear un servicio, llamado 55 00:03:59,640 --> 00:03:59,990 ‫mi web, 56 00:04:00,000 --> 00:04:06,150 ‫creé dos tareas y las apliqué a dos nodos diferentes, cada uno de esos nodos tiene un -en el equilibrador de carga en la dirección IP externa. IP es la que DigitalOcean me dio. 57 00:04:06,150 --> 00:04:13,950 ‫Para mí, porque estoy usando DigitalOcean, esa dirección Cuando uso el -p y lo publico en un puerto, en este ejemplo está usando el puerto 80:80, cualquier 58 00:04:13,950 --> 00:04:21,120 ‫tráfico que ingrese a cualquiera de estos tres nodos 59 00:04:21,120 --> 00:04:27,950 ‫golpea ese equilibrador de carga en el puerto 80:80. El equilibrador de carga decide qué contenedor debe obtener 60 00:04:27,950 --> 00:04:34,260 ‫el tráfico y si ese tráfico está o no en el nodo local, o necesita enviar el 61 00:04:34,800 --> 00:04:42,270 ‫tráfico a través de la red a un nodo diferente. 62 00:04:42,300 --> 00:04:46,740 ‫Nuevamente, todo esto sucede en el fondo sin ningún esfuerzo especial de nuestra parte. 63 00:04:46,740 --> 00:04:48,570 ‫Todo bien. Veamos este enrutamiento Mesh en acción. 64 00:04:48,570 --> 00:04:53,450 ‫Ya vimos el ejemplo con Drupal y cómo escucha en los tres nodos. 65 00:04:54,970 --> 00:04:57,080 ‫Pero, ¿y si tuviéramos varias tareas para ver que el equilibrador de carga funciona? 66 00:04:57,100 --> 00:05:00,700 ‫Si hacemos un servicio de Docker crear, lo que 67 00:05:00,790 --> 00:05:05,090 ‫vamos a hacer es, vamos a utilizar un contenedor Elasticsearch. Vamos a llamarlo búsqueda y le 68 00:05:05,110 --> 00:05:07,780 ‫daremos tres réplicas. Y desea publicarlo en el puerto 9200, que es su puerto predeterminado. 69 00:05:10,430 --> 00:05:19,610 ‫En este caso, definitivamente queremos que: 2 esté allí porque es la 70 00:05:19,610 --> 00:05:25,550 ‫versión más fácil de implementar en este momento. Mientras eso está creando, mencionaré que Elasticsearch es 71 00:05:30,880 --> 00:05:35,240 ‫en realidad una base de datos de búsqueda accesible a través de 72 00:05:35,240 --> 00:05:37,930 ‫una API web JSON. 73 00:05:37,970 --> 00:05:43,820 ‫Por lo tanto, es muy fácil golpear con curl y darnos buenos ejemplos de cómo funciona esto. 74 00:05:43,820 --> 00:05:44,290 ‫Hago una búsqueda ps del servicio Docker, podemos ver que ha creado inteligentemente cada tarea en un nodo diferente. 75 00:05:44,300 --> 00:05:49,500 ‫Si hago un curl en mi servidor local, en 76 00:05:49,550 --> 00:05:59,480 ‫el nodo uno en el puerto 9200 porque publiqué ese puerto, obtendré la información básica de Elasticsearch. Parte de eso es que 77 00:05:59,710 --> 00:06:08,290 ‫realmente creará un nombre aleatorio. 78 00:06:09,580 --> 00:06:16,810 ‫Esa es solo una característica de Elasticsearch. 79 00:06:16,810 --> 00:06:17,360 ‫y 80 00:06:17,380 --> 00:06:20,020 ‫luego comenzará a repetirse de esa manera. 81 00:06:20,020 --> 00:06:27,160 ‫Si doblo esto varias veces, verás en este Patch, el servidor Patch, y luego una tercera vez, Jane Foster, 82 00:06:27,160 --> 00:06:28,260 ‫Esa es realmente 83 00:06:28,330 --> 00:06:34,080 ‫la IP virtual que actúa como equilibrador de carga y distribuye mi carga entre las tres tareas. 84 00:06:34,160 --> 00:06:40,610 ‫Algunas notas más sobre la malla de enrutamiento. En 17. 03, que es el lanzamiento en el que te estoy mostrando esto, la malla de enrutamiento y el balanceo de carga son actualmente un equilibrador 85 00:06:40,610 --> 00:06:41,790 ‫de carga sin estado. 86 00:06:41,840 --> 00:06:50,700 ‫Si alguna vez ha tratado con State dentro del equilibrador de 87 00:06:50,700 --> 00:06:55,570 ‫carga clásico de Amazon u otras tecnologías de equilibrio de carga, ya sabe de qué se trata. 88 00:06:55,590 --> 00:07:02,930 ‫un cliente consistente, entonces es posible que deba agregar algunas otras cosas para ayudar a resolver ese problema. 89 00:07:02,940 --> 00:07:05,200 ‫Básicamente, esto significa que si tiene 90 00:07:05,280 --> 00:07:12,330 ‫que usar cookies de sesión en su aplicación, o si espera que un contenedor consistente esté hablando con 91 00:07:12,330 --> 00:07:18,420 ‫De fábrica, cada vez que aciertes en un servicio con múltiples tareas, te dará potencialmente 92 00:07:18,480 --> 00:07:19,740 ‫un resultado diferente. 93 00:07:19,740 --> 00:07:25,350 ‫Además, si nos adentramos en los detalles de esto, en realidad se trata de un balanceador de carga de capa 3, y eso realmente funciona en la 94 00:07:25,350 --> 00:07:26,320 ‫capa de IP y puerto. 95 00:07:27,890 --> 00:07:34,640 ‫En realidad, no opera en la capa de DNS. 96 00:07:34,640 --> 00:07:37,510 ‫puerto, en el mismo servidor, esto aún no lo hará. 97 00:07:37,520 --> 00:07:40,720 ‫Si alguna vez ha ejecutado varios sitios web en el mismo 98 00:07:40,790 --> 00:07:46,940 ‫Todavía necesitarás otra pieza del rompecabezas además de eso si realmente deseas ejecutar varios sitios web en el mismo puerto, en el 99 00:07:46,940 --> 00:07:47,360 ‫mismo enjambre. 100 00:07:47,480 --> 00:07:51,290 ‫Afortunadamente, esa es una solicitud bastante común, 101 00:07:51,290 --> 00:07:57,840 ‫y hay varias opciones que puede hacer para resolver estos dos problemas. 102 00:07:58,130 --> 00:08:03,080 ‫Una de ellas es utilizar Nginx o HAProxy, que son ejemplos bastante buenos de contenedores que se colocarán al frente 103 00:08:03,080 --> 00:08:04,070 ‫con su malla de 104 00:08:04,950 --> 00:08:12,220 ‫enrutamiento, y en realidad actúan como un balanceador de carga con estado o una capa para equilibrador de carga, que también puede almacenar en caché y muchas otras cosas algunos de ellos en los recursos de esta sección. 105 00:08:12,340 --> 00:08:19,480 ‫Si lo necesita, es posible que desee verificar 106 00:08:19,480 --> 00:08:24,970 ‫También debo mencionar que si pagases por una suscripción a la edición 107 00:08:24,970 --> 00:08:28,220 ‫Docker Enterprise, conlleva algo llamado UCP o Docker Data Center, que es una interfaz web. Pero debería mencionar esa edición de Docker Enterprise, si 108 00:08:28,330 --> 00:08:33,700 ‫obtienes una suscripción a eso para tus nodos de enjambre, en realidad viene con una 109 00:08:33,700 --> 00:08:39,760 ‫capa incorporada para proxy web que te permite simplemente 110 00:08:39,760 --> 00:08:45,190 ‫arrojar nombres DNS en la configuración web de tus servicios de enjambre y todo solo funciona 111 00:08:45,190 --> 00:08:54,240 ‫