Clúster de Docker (enjambre)

¿Qué es un clúster de Docker?

Swarm organiza uno o más [nodos] Docker para que los usuarios puedan administrarlos en un clúster;

  • Estos nodos pueden ser servidores físicos, máquinas virtuales, Raspberry Pi o instancias en la nube;
  • El nodo se configurará como administrador o trabajador.
  1. El nodo de administración es responsable del plano de control del clúster (Plano de control) y realiza operaciones como monitorear el estado del clúster y distribuir tareas a los nodos de trabajo.
  2. El nodo de trabajo recibe la tarea del nodo de gestión y la ejecuta.

[Precauciones para la construcción de clústeres]

  • Seguridad: todos los nodos deben estar conectados a través de una red confiable; TLS (Protocolo de capa de transporte seguro) se usará inevitablemente al construir un clúster Swarm porque está estrechamente integrado por Swarm. En el día de hoy de la concienciación sobre la seguridad, una herramienta de este tipo merece una promoción vigorosa. Swarm utiliza TLS para el cifrado de comunicaciones, la autenticación de nodos y la autorización de funciones. ¡La rotación automática de teclas es la guinda del pastel! Funciona silenciosamente en segundo plano, y el usuario ni siquiera percibe la existencia de esta función.

 

¿Por qué utilizar el clúster de Docker?

Docker implementa dos contenedores bajo el enlace de una sola máquina (nodo único), nginx y netcore. Si el host de la ventana acoplable deja de funcionar, significa que el servicio de contenedores en él tampoco está disponible. Desde la perspectiva del cliente, el número de visitas del cliente es es incierto y puede aumentar en cualquier momento. En comparación con el host de la ventana acoplable de un solo nodo, la capacidad de carga del servicio también es limitada, lo que no puede cumplir con el escenario de alta concurrencia y, finalmente, conduce a la indisponibilidad del servicio de contenedor. como los dos puntos siguientes:

  1. El host de la ventana acoplable de un solo nodo no puede proporcionar una alta disponibilidad de servicios;
  2. El host de la ventana acoplable de un solo nodo no puede cumplir con un alto acceso a servicios simultáneos;

En vista de los problemas anteriores, es necesario agrupar el host de la ventana acoplable de un solo nodo. La visualización del grupo es la siguiente:

 

Problemas resueltos por el clúster de Docker (que proporciona alta disponibilidad de servicios):

  1. Incrementar la cantidad de simultaneidad;
  2. Resuelva el problema del punto único de falla;

[Cómo administra swarm el clúster de Docker]

 En el enlace anterior, el enjambre de la ventana acoplable implementa un clúster de host de la ventana acoplable a través de la configuración de roles (administrador-trabajador), y el mismo nodo de administración (administrador) también se puede agrupar con varios nodos.

  • gerente :
  1. Configuración de clúster;
  2. Gestión de servicios de contenedores;
  3. Balanceo de carga;
  4. Otra configuración de clúster;
  • trabajador:
  1. Proporcionar servicios de contenedores

Similar a la configuración de maestro (maestro) y esclavo (esclavo) en redis;

 

Herramienta de clúster Docker Swarm

  • Swarm es una herramienta de administración de clústeres proporcionada oficialmente por Dcoker. Su función principal es abstraer varios hosts de Docker en un todo y administrar varios recursos de Docker en estos hosts de Docker a través de una sola entrada;
  • Swarm es similar a Kubernetes, pero es más ligero y tiene menos funciones que Kubernetes;
  • Docker Swarm incluye dos aspectos: 1. Clúster seguro de Docker de nivel empresarial y 2. Motor de orquestación de aplicaciones de microservicios;
  • La información de configuración y estado de Swarm se almacena en un conjunto de bases de datos etcd distribuidas ubicadas en todos los nodos de administración. La base de datos se ejecuta en la memoria y mantiene el último estado de los datos. Lo mejor de esta base de datos es que casi no requiere configuración, se instala como parte de Swarm y no requiere administración;
  • Swarm está integrado de forma predeterminada con almacén de clúster distribuido cifrado (almacén de clúster distribuido cifrado), red cifrada (red cifrada), TLS pública (TLS mutua), token de acceso seguro al clúster Secure Cluster Join Token) y un conjunto de gestión de certificados digitales simplificada PKI (Infraestructura de clave pública). Podemos agregar o eliminar nodos libremente;
  • Swarm proporciona un amplio conjunto de API para facilitar la implementación y la administración de aplicaciones de microservicio complejas. Al definir la aplicación en un archivo de configuración declarativo, puede usar comandos nativos de Docker para completar la implementación. Incluso puede realizar actualizaciones continuas, reversiones y operaciones de escalado;

En cuanto a la orquestación de aplicaciones, la unidad de programación más pequeña en Swarm es un servicio, se introduce con Swarm y es un nuevo elemento de objeto en la API. Encapsula algunas características avanzadas basadas en el contenedor y es un concepto de nivel superior. Cuando un contenedor está encapsulado en un servicio, lo llamamos tarea o copia. Se agregan al servicio características como escalado, actualización gradual y reversión simple.

 

¿Cómo construir un clúster de Docker?

Configure el contenedor mediante servicio, tarea y pila;

  • service = "docker Una colección de contenedores en diferentes hosts (nodos de trabajo);
  • task = "para que el servicio inicie el contenedor del entorno del clúster;
  • stack = "una colección de múltiples servicios;

Preparación del clúster de Docker:

  1. Instale Docker en dos máquinas virtuales o hosts en la nube;
  2. docker-enjambre ;

Observaciones: El lugar donde operar es el nodo de administración, todas las operaciones solo deben procesarse en el nodo de administración y el nodo de trabajo no debe preocuparse;

Anteriormente hicimos una breve introducción al principio de clúster de ventana acoplable, y luego practicaremos la operación, proceso de construcción de clúster [docker-swarm];

[Proceso de construcción del clúster de enjambres]

  • Inicializar un nodo trabajador del clúster = "docker swarm init --advertise-addr [localhost] El valor predeterminado es el nodo de administración,
  • Si el nodo ya existe, elimine el nodo =》 docker swarm leave -f 

  • Otro host de la ventana acoplable se une al nodo del clúster (nodo de trabajo)

  • Ver información detallada de la lista de nodos = "docker --info

[Cómo configurar la colección de servicios (contenedor) en un entorno de clúster]

  • El almacén de réplicas prepara las réplicas de implementación necesarias, como nginx y netcore

  • Create service = "docker service create --replicas 1 --name netcoreservice El parámetro --replicas especifica el número de clústeres y --name es el nombre del servicio;

  • Compruebe [rmcoreservice] en qué nodo de host de la ventana acoplable se está ejecutando = "servicio de la ventana acoplable ps rmcoreservice

  • Ver información de la lista de contenedores =》 contenedor docker ls -a

  • Eliminar rmcoreservice service =》 docker service rm rmcoreservice

 Observaciones: Todas las operaciones de servicio se realizan en el nodo de gestión y el nodo de gestión elimina el nodo trabajador del clúster de servicios. Demuestra: Ver la lista de servicios en el nodo trabajador trabajador =》 servicio docker ls nodo trabajador no tiene derecho a operar, la pantalla es la siguiente:

  • Cree un servicio desde el espejo rmcore, especifique dos nodos de trabajo y exponga el puerto de servicio (mapeo) = "docker service create --replicas 2 --name rmcoreservice --publish 6066: 80 rmcore

[Stack crea dos servicios en el clúster]

 [Explicación detallada de la implementación de la configuración de parámetros opcionales]

endpoint_mode:访问集群服务的方式。
	endpoint_mode: vip 
	# Docker 集群服务一个对外的虚拟 ip。所有的请求都会通过这个虚拟 ip 到达集群服务内部的机器。
	endpoint_mode: dnsrr
	# DNS 轮询(DNSRR)。所有的请求会自动轮询获取到集群 ip 列表中的一个 ip 地址。
labels:在服务上设置标签。可以用容器上的 labels(跟 deploy 同级的配置) 覆盖 deploy 下的 labels。

mode:指定服务提供的模式。
	replicated:复制服务,复制指定服务到集群的机器上。
    global:全局服务,服务将部署至集群的每个节点。	
replicas:mode 为 replicated 时,需要使用此参数配置具体运行的节点数量。

resources:配置服务器资源使用的限制,例如上例子,配置 redis 集群运行需要的 cpu 的百分比 和 内存的占用。避免占用资源过高出现异常。

restart_policy:配置如何在退出容器时重新启动容器。

condition:可选 none,on-failure 或者 any(默认值:any)。
	delay:设置多久之后重启(默认值:0)。
	max_attempts:尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)。
	window:设置容器重启超时时间(默认值:0)。
	rollback_config:配置在更新失败的情况下应如何回滚服务。

parallelism:一次要回滚的容器数。如果设置为0,则所有容器将同时回滚。
	delay:每个容器组回滚之间等待的时间(默认为0s)。
	failure_action:如果回滚失败,该怎么办。其中一个 continue 或者 pause(默认pause)。
	monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
	max_failure_ratio:在回滚期间可以容忍的故障率(默认为0)。
	order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认 stop-first )。
	update_config:配置应如何更新服务,对于配置滚动更新很有用。

parallelism:一次更新的容器数。
	delay:在更新一组容器之间等待的时间。
	failure_action:如果更新失败,该怎么办。其中一个 continue,rollback 或者pause (默认:pause)。
	monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
	max_failure_ratio:在更新过程中可以容忍的故障率。
	order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认stop-first)
  • El nodo de administración crea un directorio de pila =》 pila mkdir
  • Ver la lista de directorios actual, cambiar para redactar

  • Si el archivo docker-compose.yml no existe en el nodo de administración, cree uno => vi docker-compose.yml Cree el archivo e ingrese la edición

  • La información de configuración y edición del archivo docker-compose.yml creado en el directorio de pila del nodo de administración es la siguiente:

  • Pila 命令 =》 docker stack --help

  • Use la información de configuración de implementación en docker-compose.yml para comenzar con el comando de administración de la pila =》 docker stack deploy -c docker-compose.yml rmstack La pila creada por rmstack se identifica como rmstack
  • Ver la lista de información del directorio creada por stack =》 docker stack ls

  • Ver el servicio creado en la pila = "servicio creado por el servicio docker ls rmstack_nginx, rmstack_rmcore

  • Verifique el directorio de la lista de contenedores nuevamente =》 docker container ls

El proceso anterior completa la configuración del grupo de pila;

  • Eliminar configuración de pila =》 docker stack rm rmstack

 Nota: Cuando el nodo de administración crea y elimina un clúster, el nodo trabajador también se elimina.

[Colección de comandos de Docker-swarm]

  • Ver comando de administración de herramientas de enjambre = "docker swarm --help
instrucción Descripción
ese Mostrar certificado de CA
en eso Inicialice el clúster de enjambre y cree un nodo de gestión
unirse Agregue otros nodos de la ventana acoplable al clúster, cree nodos de trabajo y sea administrado por el nodo de administración
token de unión Agregue otros nodos de la ventana acoplable al clúster, cree nodos de trabajo y sea administrado por el nodo de administración [este es el token del nodo de administración]
salir Deja el clúster
desbloquear Abra el clúster
tecla de desbloqueo Administrar la clave de desbloqueo
actualizar Actualizar clúster de grupo

 

[Defecto de enjambre]

  1. No se puede monitorear un determinado nodo de la ventana acoplable (host) =》 Solución k8s
  2. Se necesita tiempo para instalar el host de la ventana acoplable; cada vez que se instala el entorno del sistema operativo, el host de la ventana acoplable debe configurarse en consecuencia, por ejemplo: 10 sistemas Linux, se deben instalar 10 hosts de la ventana acoplable = "máquina-acopladora (clave), consulte a: https: // www. cnblogs.com/sparkdev/p/7066789.html
  3. ¿Cómo hace el contenedor de clúster la persistencia de datos? = "Volúmenes volumen de datos (clave)
  4. Cuando el contenedor del nodo de trabajo del servicio está inactivo, no se puede monitorear ni detectar;

 Soluciones a los [defectos del enjambre] = "[k8s / Kubermetes]

Supongo que te gusta

Origin blog.csdn.net/ChaITSimpleLove/article/details/105340412
Recomendado
Clasificación