La señora de operación y mantenimiento dijo que este clúster de Consul y la configuración de ACL es excelente (nivel de niñera)

Prefacio

Reembolso de compras https://m.cpa5.cn/

El artículo anterior presentó brevemente a Consul y usó el modelo de desarrollo (dev) para la demostración del proceso, pero en el desarrollo real, es necesario considerar la alta disponibilidad y la seguridad operativa de Consul , por lo que hablemos de la configuración relacionada con el clúster y la ACL , que está involucrada. Los comandos se introducirán en detalle durante el proceso de configuración del entorno.

texto

Con respecto al clúster , la primera reacción es construir algunas máquinas más (o contenedores, etc.), asociarlas y proporcionar funciones; antes de configurar un entorno de clúster, debe estar familiarizado con varios roles, porque en Consul, son importantes. Consulte la figura siguiente (tome un centro de datos como ejemplo):

imagen-20210320132943457

  • Centro de datos (DataCenter) : el conjunto de nodos que ejecuta Consul está conectado entre sí llamado centro de datos ; en el centro de datos, cada nodo de Consul puede ejecutarse en modo servidor o cliente ; para garantizar la disponibilidad y el alto rendimiento, generalmente 3 ~ 5 Se recomiendan servidores (no más de 5) en un centro de datos, y se recomienda que el número de clientes no exceda los 5000 (dependiendo de la decisión comercial).
  • Modo de cliente (Cliente) : el cliente es responsable de registrar servicios, ejecutar comprobaciones de estado y reenviar las RPC relacionadas al servidor, que es relativamente sin estado. El protocolo de chismes Cliente + LAN forma un conjunto de nodos en un centro de datos con alta eficiencia de comunicación.
  • Modo servidor (Servidor) : El servidor contiene las funciones del cliente. Cada Servidor también participa en las elecciones, responde a las consultas de RPC y reenvía información a ServerLeader, etc .; también es responsable de mantener el estado del clúster de Consul ( persistencia ): incluyendo otra información de servidor y cliente, qué servicios están disponibles para el descubrimiento y qué servicios pueden comunicarse entre sí; cada centro de datos de Consul debe tener al menos un servidor .
  • Líder del servidor : además de las funciones del servidor, también es responsable de sincronizar los datos con cada servidor; cada clúster solo puede tener un líder del servidor para garantizar que los datos en el clúster sean consistentes.

En todo el clúster, la asociación se lleva a cabo a través de la red y se requieren múltiples puertos para lograr las funciones correspondientes, como se muestra en la figura anterior; introducción del puerto:

imagen-20210320141456194

Comprenda la estructura de Consul y cada función de rol, el siguiente paso es la operación real.

1. Crea un clúster

Aquí, no hay tantas máquinas. Dos clústeres, un modo de servidor y un modo de cliente (computadoras limitadas, no quiero construir tantas máquinas virtuales). El principio es el mismo, pero el enfoque principal es el proceso:

1.1 Inicie un servidor (solo un servidor, luego debe ser el líder)

A continuación, se muestra una demostración de cómo crear el directorio y los datos del archivo de configuración antes de iniciar el nodo, de la siguiente manera:

imagen-20210320174907497

Use el comando para comenzar:

consul agent -server -bootstrap-expect 1 -datacenter=dc_zoe -config-dir=./config -data-dir ./data -node=s1 -ui -rejoin -bind=192.168.1.6 -client 0.0.0.0

Parte de la información del nodo se incluye al iniciar, de la siguiente manera:

imagen-20210320173149295

Análisis de comandos

  • agente: proceso central de Consul, cada nodo debe ejecutarse en forma de agente;
  • -servidor: representa el modo Servidor, si no hay -servidor, representa el modo Cliente;
  • -bootstrap-hope: el número esperado de nodos de servidor en un centro de datos. El clúster no funcionará hasta que el número de servidores iniciados alcance el número establecido y se elegirá un líder de servidor de él;
  • -bootstrap: especifique manualmente el servidor como líder; cuando el número de servidores es mayor que 0, este parámetro no se puede usar con -bootstrap-hope (no se usa en el comando anterior);
  • -datacenter: especifique el nombre del centro de datos;
  • -config-dir: Especifique el directorio del archivo de configuración, aquí está el directorio de configuración bajo el directorio actual, Consul cargará automáticamente todos los archivos de configuración en formato Json (.json end);
  • -data-dir: especifica la ruta para guardar el estado de los datos del nodo cuando se está ejecutando, donde los datos correspondientes se guardan en el directorio de datos en la carpeta actual;
  • -node: especifica el nombre del nodo, que debe ser único en el clúster y el nombre predeterminado es el nombre de host;
  • -ui: use la interfaz de IU predeterminada, Consul proporciona un proyecto de IU, la descarga puede especificar el directorio correspondiente, use -ui-dir para especificar el directorio de IU correspondiente;
  • -rejoin: Ignora la desconexión anterior e intentará unirse al clúster al reiniciar;
  • -bind: especifique la dirección vinculada, que normalmente se utiliza para la comunicación dentro del clúster, y todas las direcciones de nodo del clúster deben comunicarse normalmente;
  • -cliente: La dirección monitoreada por el servicio Consul. Esta dirección proporciona servicios como HTTP / DNS / RPC. El valor predeterminado es 127.0.0.1, por lo que no se puede acceder desde el exterior y no se puede acceder a la IU a través de la dirección IP; si necesita proporcionar servicios, especifíquelo como 0.0. 0.0 está bien.
  • -encrypt: Especifique una clave secreta para encriptar durante la comunicación. Esta clave secreta se puede consul keygengenerar. En el mismo clúster, cada nodo debe usar la misma clave secreta;

Los parámetros de uso común se enumeran arriba, y hay algunos que se usan con menos frecuencia. Si los usa, vaya al sitio web oficial para verificar (dígales en secreto a los amigos que los parámetros también se pueden unificar en el archivo de configuración).

Si hay varios servidores, solo necesita ejecutar el comando anterior en cada máquina. De acuerdo con la cantidad de servidores, modifique el número detrás de bootstrap-wait y luego cambie la dirección detrás de bind.

1.2 Iniciar un cliente

Iniciar un cliente es casi lo mismo que un servidor, excepto que no es necesario especificar el parámetro del servidor. El valor predeterminado es el modo de cliente. El comando es el siguiente:

consul agent -datacenter=dc_zoe -config-dir=./config -data-dir ./data -node=c1 -bind=192.168.1.8 -client 0.0.0.0

Entonces se inicia el cliente

imagen-20210320235618123

Si hay varios clientes, simplemente ejecute el comando anterior en cada máquina, simplemente cambie la dirección de enlace.

1.3 Agregar nodos al clúster

Lo anterior es solo para iniciar cada nodo.Si es un nodo Servidor y no un Líder, siempre le preguntará que no se puede encontrar el Líder, si es un nodo Cliente, le preguntará que no se puede encontrar el nodo Servidor correspondiente; debido a que debe haber al menos un servidor en un clúster, debe haber uno y solo un líder de servidor en el servidor. Entonces, después de que se inicia el nodo, el siguiente paso es agregar cada nodo al clúster. La práctica habitual es ejecutar los siguientes comandos en cada nodo:

consul join 192.168.1.6 # 通常后面跟的地址是ServerLeader的地址

Después de ejecutar el comando, el nodo correspondiente se agrega al clúster y el nodo se puede ver a través de la interfaz de usuario:

imagen-20210321000630141

También puede verlo a través del comando:

imagen-20210321000739204

Al final se construye un cluster tan simple, el proceso es así, y el resto es el problema del número de nodos.

2. Configuración de ACL

Consul usa listas de control de acceso (ACL-Access Control Lists) para proteger el acceso a la interfaz de usuario, API, CLI, comunicación de servicio y comunicación de agente; el núcleo de ACL es agrupar reglas en políticas y luego asociar una o más políticas con tokens United.

Consul usa la forma de token para el acceso al control de seguridad . El token aquí es una cadena aleatoria. Con el token, hay una autoridad de operación correspondiente; al igual que la interfaz WebAPI más el control de acceso mencionado anteriormente, puede acceder a lo relevante a través de un token autorizado Recursos de interfaz.

El requisito previo para configurar ACL es que todos los nodos deben habilitar ACL y luego un token de arranque , porque debe usarse al generar tokens para subprivilegios (políticas), al igual que el usuario raíz en MySQL, solo con privilegios de root Asignar más permisos para otros usuarios. A continuación, demostraremos la configuración de ACL con acceso a la interfaz de usuario y control de servicios. Todo lo demás es básicamente lo mismo. El punto clave es planificar las reglas de la política.

Primero, habilite ACL cuando se inicie cada nodo, agregue el archivo acl.hcl (debe agregarse para cada nodo) en el directorio de la carpeta de configuración (aquí el nombre del directorio es config), el contenido es el siguiente:

acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true 
}

Descripción de parámetros:

  • habilitado = verdadero significa habilitar ACL;
  • default_policy = "deny" El valor predeterminado es permitir, si necesita permisos personalizados, debe configurarlo para denegar;
  • enable_token_persistence = true habilita la persistencia del token y conserva el token en el disco;

Una cosa a tener en cuenta aquí, dije anteriormente que el archivo Json en el directorio de configuración se cargará automáticamente, de hecho, también hay archivos hcl que también se cargarán automáticamente, aquí hay una demostración en forma de hcl. Una vez que el archivo de configuración esté listo, reinicie el nodo (se deben usar todos los nodos del clúster), intente acceder a la interfaz de usuario y aparecerá la siguiente interfaz:

imagen-20210322123052531

Haga clic para iniciar sesión y debe ingresar un token. Si está configurado en el archivo de configuración, ingrese el token configurado. Si no hay configuración, puede generar un token de arranque en tiempo de ejecución y ejecutar el consul acl bootstrapcomando en cualquier servidor para obtener el token de arranque; en Consul, los tokens son muy importantes y deben conservarse.

imagen-20210322123426117

Ingrese el token de arranque generado en el cuadro de inicio de sesión, y luego podrá obtener la información normalmente;

imagen-20210322123725996

El token de arranque tiene mucha autoridad, y es imposible que todos los socios pequeños lo tengan. Al igual que la autoridad raíz de MySQL, solo unas pocas personas pueden saberlo. Los permisos de otros usuarios deben controlarse por separado; lo mismo ocurre con Consul, que genera los tokens correspondientes para diferentes políticas de permisos, y el uso de este token solo puede acceder u operar recursos dentro de los permisos correspondientes.

Configuración de la interfaz de usuario

La configuración de ACL otros tokens pueden ser en forma de comandos o a través de la interfaz de IU (porque ahora hay una superautoridad de token de arranque), aquí es muy conveniente usar la IU en forma de tres pasos:

  • Crea una estrategia:

    imagen-20210322132923632

    Básicamente no hay nada que decir sobre el resto de información de la estrategia, principalmente la configuración de reglas , que generalmente se configuran para nodos (nodo), servicios (servicio) y pares clave-valor (K / V), que se pueden especificar difuso o específico Especifique lo siguiente:

    node_prefix "": El prefijo de nodo está vacío, lo que significa que todos los nodos usan la estrategia;

    service_prefix "": el prefijo del servicio está vacío, lo que significa que todos los servicios utilizan políticas;

    servicio "Code6688Name": especifique la estrategia de uso del servicio correspondiente;

    key_prefix "redis /": Utilice solo la estrategia correspondiente para las claves con el prefijo "redis /";

    key "dashboard-app": especifique la estrategia de uso de claves correspondiente;

    El alcance de la estrategia especificada anteriormente es un método más comúnmente utilizado; consulte el sitio web oficial para obtener más detalles;

    Por lo general, existen los siguientes tipos de políticas en las reglas :

    leer : solo se puede consultar;

    escribir : se puede comprobar y escribir;

    negar : no puede leer ni escribir;

    Para obtener más detalles, consulte el documento oficial de configuración de ACL.

  • Genere token según la estrategia:

    Una vez que la estrategia está en su lugar, se genera el siguiente token para la estrategia, de la siguiente manera:

    imagen-20210322134443553

    Simplemente ingrese la información correspondiente en el cuadro emergente correspondiente, de la siguiente manera:

    imagen-20210322134848450

    Después de guardar, se genera el token correspondiente, puede ingresar a la página detallada para ver el token generado, y puede entregar el token directamente a otros.

    imagen-20210322135437509

  • Usar token:

    Para las pruebas de interfaz de usuario, envíe el token directamente a otros socios e introdúzcalo cuando inicie sesión. Si se trata de otras operaciones, solo traiga el token; para su propia prueba de interfaz, simplemente cambie el token de la siguiente manera:

    imagen-20210322135736693

    Después de cambiar, en la interfaz, excepto que el nodo puede encontrar la información, no se puede usar. Al operar la Clave / Valor, se informa el siguiente error:

    imagen-20210322135909568

    Si utiliza este token en el registro de servicios o en el descubrimiento de servicios, no puede registrarse y consultar el servicio correctamente, de la siguiente manera:

    imagen-20210322140206071

    Si utiliza el archivo de configuración para el registro del servicio, también debe especificar el token en el archivo de configuración; de lo contrario, el registro del servicio no se realizará correctamente, de la siguiente manera:

    imagen-20210322141401332

    El descubrimiento de servicios también es una verdad:

    imagen-20210322140520950

    Lo mismo ocurre cuando se usa la API HTTP directamente, debe traer el token:

    imagen-20210322151431903

    Modo de comando

¿Es esta forma de configuración de la interfaz de usuario lo suficientemente sencilla? No voy a demostrar la forma de los comandos. Los pasos son los mismos, solo confíe en los comandos, de la siguiente manera:

  • Compilar archivos de reglas;

    imagen-20210322145642624

  • Genere una estrategia basada en un archivo de reglas;

    imagen-20210322150002783

  • Genere tokens según la estrategia;

    imagen-20210322150248490

  • Utilice token;

    Con el token, puede hacer cosas que correspondan al alcance de la autoridad. No se introducirá el uso específico. Ya sea una consulta de interfaz de usuario o API, pruébelo usted mismo (como se mencionó anteriormente).

Nota: Después de habilitar la ACL en los pasos anteriores, el token boostrap del superadministrador no se configura de manera uniforme, por lo que cada operación debe traer el parámetro -token.

para resumir

Hablemos de la configuración del control de acceso del clúster más ACL. Lo principal en el artículo es brindar ideas relevantes. No brinda ejemplos de todos los métodos de configuración de permisos (más). Deje que los amiguitos lo prueben por sí mismos; a través del artículo anterior (Ven, el servicio Consul descubre el uso de la puerta (la que puedes ver de un vistazo)), además de la introducción del entorno de clúster y las ideas de configuración de ACL en este artículo, los pequeños socios no deberían ser un problema en el uso diario; el resto de funciones se basan en el negocio que necesito para volver a estudiarlo, si tengo un escenario de aplicación correspondiente, igual lo compartiré lo antes posible. Hablemos de la puerta de enlace en el próximo número ~~~

Gracias amigos por dar me gusta, volver a publicar y comentar.
Un chico guapo que era feo según el programa, sigue "Code Variety Show" y aprende conmigo ~~~

imagen

Supongo que te gusta

Origin blog.csdn.net/weixin_48967543/article/details/115243839
Recomendado
Clasificación