‫De
‫acuerdo, entonces lo que voy a hacer es, voy a revisar cada uno de estos servicios basados ​​en
‫esta arquitectura, y voy a crear esta aplicación sobre la marcha. En realidad voy a escribir los comandos aquí en el archivo Léame,
‫porque me parece un lugar lógico para hacerlo. Y luego los cortaré y los pegaré en
‫mi nodo.
‫Si lo recuerdas, tengo un Enjambre de 3 nodos aquí. Si hago un nodo docker ls,
‫verás que tengo tres nodos aquí. Son todos nodos gerentes.
‫No tengo contenedores en funcionamiento ni servicios, obviamente. que necesito redes, y necesito un volumen.
‫Lo primero, lo sé en la parte superior, habla de
‫Entonces, es probable que pueda sacar las redes del camino y probablemente pueda alejar eso. Puedo teclear la
‫red docker create d overlay. Recuerde que la red de superposición es el único tipo de red que
‫podemos usar en un Enjambre porque la superposición nos permite abarcar todos los nodos, como si estuvieran todos en la red local.
‫Y luego quiero llamarlo back-end.
‫Y luego, quiero hacer exactamente lo mismo, solo llamarlo frontend.
‫Ahora, no hay nada inherentemente especial acerca de estas dos redes.
‫uno u otro para ayudar a actuar como un pequeño firewall que brinda separación para protección.
‫Simplemente vamos a segmentar nuestros diferentes servicios en
‫En esta votación uno,
‫sé que necesito hacer un servicio de Docker, y tengo que nombrarlo, así que también podría poner el nombre de votación. Y luego tengo que publicar el puerto 80 a 80 en el
‫contenedor, y tiene que estar en una red específica. Entonces, interfaz de
‫red. Necesito dos réplicas
‫Entonces, réplica dos. Y luego, también podría copiar y pegar este nombre. no va a llamarse
‫Ahora, voy a seguir adelante y crear todos estos antes de que realmente los despliegue. voto, se llamará
‫De hecho voy a copiar este aquí abajo. Este será llamado. redis. No tiene que preocuparse de publicar ningún puerto sobre eso.
‫Va a estar en la red frontend. veamos, backend de red, y
‫Quiero dos réplicas, y luego, voy a llamarlo redis tres dos es la imagen. Debido a que una
‫Aquí, el servicio de cremallera crea el nombre del trabajador, va a estar en dos redes. Tengo Estoy escribiendo lo que estoy diciendo. luego solo una réplica. réplica es la
‫que hacer una interfaz de red y. Ups. predeterminada, en realidad no tengo que especificar la réplica y no especifico ningún puerto.
‫Creo que eso es todo lo que necesito allí. Solo necesito copiar la imagen.
‫Bien, el servicio de Docker crea un nombre backend de red db.
‫Ver, una réplica
‫Oh, necesito hacer este volumen.
‫Aquí está la cosa sobre el volumen. El comando -v no es compatible con los servicios de Docker. Porque, por diversas razones, los servicios
‫van a ser más complejos que quizás la ejecución típica de su docker.
‫Y hubo problemas y limitaciones con el -v en el día.
‫Entonces, Docker ha aprendido de eso y ha mejorado el formato. Pero resulta ser un poco más detallado y tal vez un poco más difícil de recordar el
‫formato que comienza.
‫También sucede que no está bien documentado aún en la
‫documentación de Docker porque tiene menos de un año de antigüedad como comando. Entonces, vamos a copiar y pegar esto. que forman parte de un único comando de
‫montaje y los mínimos son un tipo, una fuente y un destino.
‫Si no tiene sentido para usted, básicamente, es esta lista de valores los
‫También hay otras cosas que puede agregar, pero estas son las únicas tres que necesitamos en este escenario.
‫Y puedes ver que mi fuente es solo un volumen con nombre porque no tengo barras en ella.
‫Y si tuviéramos barras, habría sido un montaje de unión y tendríamos que
‫haber especificado un tipo diferente.
‫Así que aquí abajo, --tipo de volumen de montaje, fuente de datos de db, destino.
‫Creo que eso es correcto
‫Y luego puedes simplemente, postgres 9. 4.
‫Y luego, la última es la aplicación de resultado.
‫Por lo tanto, el servicio de Docker crea un nombre para el backend de la red de resultados.
‫Publica el puerto. Vamos a usar 5001 al puerto 80 en el contenedor.
‫Solo puedo ejecutar uno de ellos. Por cierto, la única razón por la que estamos ejecutando uno de estos es un problema poco conocido en esta aplicación, es que en
‫realidad se trata Por lo tanto, en la malla de enrutamiento, realmente
‫de WebSockets, y WebSockets es algo que requiere una conexión persistente. todavía no funciona bien WebSockets porque va a seguir yendo y viniendo entre contenedores y ese WebSocket tiene que estar en un contenedor específico persistentemente.
‫Entonces, con esta aplicación, lo que
‫deberíamos tener realmente es un proxy, pero aún no está en esta aplicación, por lo que probablemente en una versión posterior la actualicen y corrijan para que tengamos un proxy.
‫De esta forma, puede ser redundante y
‫seguro que está llegando al contenedor correcto. Vamos a copiar
‫y pegar esto hasta el final. Me acabo de dar cuenta de que me estoy perdiendo el último valor en esto.
‫De acuerdo, y luego voy a comenzar en la parte superior y simplemente copiar y pegar. Ya ha creado las redes.
‫Sí, esto necesita ser réplicas. Permítanme actualizar eso aquí.
‫Réplicas De acuerdo, vamos a crear el redis. Aquí vamos.
‫Está bien, creó ese. Ahora, notará, por cierto, que recibí una identificación de servicio pero eso no significa
‫que el servicio se haya implementado correctamente.
‫Veremos eso en un minuto.
‫Déjame obtener el resto de estos ahí.
‫Todo bien.
‫Ahora que tenemos eso, deberíamos poder hacer el resto de nuestros comandos aquí. Entonces, el servicio del acoplador ls
‫nos muestra los cinco. Y notará que los números de réplica coinciden.
‫Esa es una buena señal.
‫Eso significa que uno ha sido creado con éxito.
‫Y si quisiera profundizar más, podría hacer un servicio de acoplador ps en cada uno.
‫De acuerdo, entonces uno ha estado corriendo 28 segundos.
‫redis ha estado corriendo un minuto. db está funcionando 53 segundos. votar.
‫obrero.
‫Y verá aquí en el trabajador, que tenemos una tarea fallida que se apaga, y luego una que se está ejecutando.
‫Eso ha estado funcionando durante 47 segundos.
‫De acuerdo, entonces, realmente sé por qué sucedió esto, pero es posible que no lo sepan, así que tal vez tendríamos que hacer un registro.
‫Ahora esto está en node2.
‫través de una configuración opcional en Docker, es hacer la nueva característica experimental, registros de servicio del acoplador.
‫Una característica experimental que puede habilitar a Que realmente saca los registros de muchos nodos diferentes.
‫Con suerte, se lanzará en la próxima versión de Docker a finales de este año.
‫Pero por ahora, es experimental. Así que tuve que habilitarlo dentro del registro del daemon de docker, o daemon.
‫json archivo. Y, para que lo sepas, así es como habilitarías un experimento. trabajador de Puedes ver que este es uno, y luego En realidad, sí.
‫Eso no es parte de esto. Y esto es todo, este en particular, veamos, estos son dos diferentes. el número cambia. Esto es todo uno aquí mismo.
‫Es solo algo que hice, solo para poder mostrar esto muy rápido. Uy. registros. Dice que no hay tal dispositivo o dirección.
‫Es posible que esté viendo este error y que esté pensando, no sé por qué está sucediendo eso. Entonces, básicamente, esto significa que
‫Podemos mirar ese registro. Entonces, podemos hacer un trabajador de registro del servicio de Docker. creé un servicio que estaba buscando un registro DNS que no existía porque aún no había creado el otro servicio. porque Docker realmente puede reiniciar y volver a implementar las cosas correctamente hasta que las aplicaciones no se bloqueen.
‫Y hizo lo que se supone que debe hacer en "Dockerland",
‫que es cuando tiene un error como ese, la aplicación debe bloquearse Y tan pronto como recibo todos mis servicios
‫lanzados, todo dejó de fallar y todo funciona ahora.
‫Y podemos decirlo simplemente volviendo y mirando al trabajador ps. Vemos que ha estado funcionando con éxito
‫durante tres minutos.
‫Así que echemos un vistazo a nuestra aplicación.
‫Si simplemente selecciono la dirección IP, debería obtener los perros y gatos. Voy a votar gatos.
‫Y luego, si voy a la misma IP en el puerto 5001, debería ver la aplicación de resultados. la aplicación.
‫Esa es
‫Ahora sabemos que está funcionando porque la única forma en que esto puede cambiar es si esto llega hasta el final cuando queda
‫atrapado por la redis y luego es procesado por el trabajador y luego ingresa en la base de datos.
‫Así que sabemos que cada uno de nuestros servicios de aplicaciones puede comunicarse entre sí. Y podemos
‫mirar los registros si quisiéramos.
‫Pero, esa es la demostración.
‫