+ All Categories
Transcript
Page 1: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon ManagedStreaming for Apache Kafka

Guía para desarrolladores

Page 2: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Amazon Managed Streaming for Apache Kafka: Guía para desarrolladoresCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Table of Contents¿Qué es Amazon MSK? ...................................................................................................................... 1Configuración ..................................................................................................................................... 3

Inscripción en AWS .................................................................................................................... 3Descargar bibliotecas y herramientas ............................................................................................ 3

Introducción ....................................................................................................................................... 4Paso 1. Creación de una VPC ..................................................................................................... 4Paso 2. Activar alta disponibilidad y tolerancia a fallos ..................................................................... 7Paso 3. Crear un clúster ............................................................................................................. 8Paso 4. Crear una máquina cliente ............................................................................................. 10Paso 5. Creación de un tema ..................................................................................................... 11Paso 6. Producir y consumir datos .............................................................................................. 12Paso 7. Visualización de las métricas .......................................................................................... 13Paso 8. Eliminar el clúster ......................................................................................................... 14

: cómo funciona ................................................................................................................................ 15Creación de un clúster .............................................................................................................. 15

Tipos de instancia del agente ............................................................................................. 15Creación de un clúster mediante la Consola de administración de AWS ..................................... 16Creación de un clúster mediante la AWS CLI ........................................................................ 17Creación de un clúster con una configuración MSK personalizada mediante el comando AWSCLI ................................................................................................................................. 18Creación de un clúster mediante la API ............................................................................... 18

Eliminación de un clúster ........................................................................................................... 19Eliminación de un clúster mediante la Consola de administración de AWS ................................. 19Eliminación de un clúster mediante la AWS CLI .................................................................... 19Eliminación de un clúster mediante la API ............................................................................ 19

Obtención de la cadena de conexión Apache ZooKeeper ................................................................ 19Obtención de la cadena de conexión Apache ZooKeeper mediante la Consola de administraciónde AWS .......................................................................................................................... 19Obtención de la cadena de conexión Apache ZooKeeper mediante la AWS CLI .......................... 19Obtención de la cadena de conexión Apache ZooKeeper mediante la API .................................. 20

Obtención de los agentes de arranque ......................................................................................... 21Obtención de los agentes de arranque mediante la Consola de administración de AWS ................ 21Obtención de los agentes de arranque mediante la AWS CLI .................................................. 21Obtención de los agentes de arranque mediante la API .......................................................... 21

Listado de clústeres de .............................................................................................................. 21Listado de clústeres mediante la Consola de administración de AWS ........................................ 21Listado de clústeres mediante la AWS CLI ........................................................................... 22Listado de clústeres mediante la API ................................................................................... 22

Ampliación del almacenamiento del agente ................................................................................... 22Ampliación del almacenamiento del agente mediante la Consola de administración de AWS .......... 22Ampliación del almacenamiento del agente mediante la AWS CLI ............................................ 22Ampliación del almacenamiento del agente mediante la API .................................................... 23

Actualización de la configuración de un clúster .............................................................................. 23Actualización de la configuración de un clúster mediante la AWS CLI ........................................ 23Actualización de la configuración de un clúster mediante la API ............................................... 24

Eliminación de la configuración de un clúster ................................................................................ 25Eliminación de la configuración de un clúster mediante la AWS CLI .......................................... 25Eliminación de la configuración de un clúster mediante la API de ............................................. 24

Expansión de un clúster ............................................................................................................ 26Expansión de un clúster mediante la Consola de administración de AWS ................................... 26Expansión de un clúster mediante la AWS CLI ...................................................................... 26Expansión de un clúster mediante la API ............................................................................. 27

Monitoreo de un clúster ............................................................................................................. 27Niveles de monitoreo de Amazon MSK para métricas de CloudWatch ....................................... 28

iii

Page 4: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch .................................................... 28Visualización de métricas de Amazon MSK mediante CloudWatch ............................................ 34Comprobación de retraso del consumidor con Burrow ............................................................ 35Monitoreo abierto con Prometheus ...................................................................................... 38

Reinicio de un agente para un clúster .......................................................................................... 41Reinicio de un agente usando el AWS CLI ........................................................................... 41Reinicio de un agente con la API ........................................................................................ 41

Etiquetado de un clúster ............................................................................................................ 42Conceptos básicos de etiquetas .......................................................................................... 43Seguimiento de costos utilizando el etiquetado ...................................................................... 43Restricciones de las etiquetas ............................................................................................ 43Etiquetado de recursos mediante la API Amazon MSK ........................................................... 44

: Configuration .................................................................................................................................. 45Configuraciones personalizadas .................................................................................................. 45

Configuración dinámica ...................................................................................................... 51Configuración de nivel de tema ........................................................................................... 51Estados ........................................................................................................................... 51

Configuración predeterminada ..................................................................................................... 51Operaciones de configuración ..................................................................................................... 54

Crear configuración ........................................................................................................... 54Para actualizar una configuración de MSK ............................................................................ 55Para eliminar una configuración de MSK .............................................................................. 55Para describir una configuración de MSK ............................................................................. 56Para describir una revisión de configuración de MSK ............................................................. 56Para enumerar todas las configuraciones de MSK de su cuenta para la región actual ................... 57

Seguridad ........................................................................................................................................ 58Protección de los datos ............................................................................................................. 58

Cifrado ............................................................................................................................ 59¿Cómo empiezo a utilizar el cifrado? ................................................................................... 60

Identity and Access Management ................................................................................................ 62Funcionamiento de Amazon Managed Streaming for Apache Kafka con IAM .............................. 62Ejemplos de políticas basadas en identidad .......................................................................... 65Roles vinculados a servicios ............................................................................................... 68Solución de problemas ...................................................................................................... 69

Autenticación del cliente ............................................................................................................ 69ACL de Apache Kafka ............................................................................................................... 72Control del acceso a Apache ZooKeeper ...................................................................................... 73Registro ................................................................................................................................... 74

Registros de agente .......................................................................................................... 74Registro de llamadas a API ................................................................................................ 76

Validación de la conformidad ...................................................................................................... 79Resiliencia ............................................................................................................................... 79Seguridad de la infraestructura ................................................................................................... 80

Acceso al clúster .............................................................................................................................. 81Interconexión de Amazon VPC ................................................................................................... 81AWS Direct Connect ................................................................................................................. 81AWS Transit Gateway ............................................................................................................... 81Conexiones de VPN .................................................................................................................. 81Proxies REST .......................................................................................................................... 81Conectividad de varias VPC en regiones diferentes ....................................................................... 82EC2-Classic ............................................................................................................................. 82Información del puerto ............................................................................................................... 82

Migración ......................................................................................................................................... 83Migración de su clúster de Apache Kafka a Amazon MSK ............................................................... 83Migración de un Clúster de Amazon MSK a otro ........................................................................... 84Prácticas recomendadas de MirrorMarker 1.0 ................................................................................ 84Ventajas de MirrorMaker 2.* ....................................................................................................... 85

iv

Page 5: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Límites ............................................................................................................................................ 86Versiones de Apache Kafka ............................................................................................................... 87

Versiones compatibles de Apache Kafka ...................................................................................... 87Amazon MSK bug-fix versión 2.4.1.1 ................................................................................... 87Versión 2.4.1 de Apache Kafka ........................................................................................... 87Versión 2.3.1 de Apache Kafka ........................................................................................... 88Versión 2.2.1 de Apache Kafka ........................................................................................... 88Versión 1.1.1 de Apache Kafka ........................................................................................... 88

Actualización de la versión de Apache Kafka ................................................................................ 88Solución de problemas ...................................................................................................................... 91

El grupo de consumidores está atascado en PreparingRebalance estado ..................................... 91Protocolo de afiliación estática ............................................................................................ 91Identificar y reiniciar .......................................................................................................... 92

Error al entregar los registros de agente a Amazon CloudWatch Logs ............................................... 92Ningún grupo de seguridad predeterminado .................................................................................. 92El clúster aparece atascado en el estado CREATING (Creando) ...................................................... 93El estado del clúster pasa de CREATING (Creando) a FAILED (Error) .............................................. 93El estado del clúster es ACTIVE (Activo), pero los productores no pueden enviar datos o losconsumidores no pueden recibir datos ......................................................................................... 93La AWS CLI no reconoce Amazon MSK ...................................................................................... 93Las particiones se desconectan o las réplicas no están sincronizadas ............................................... 93El espacio en el disco se está agotando ...................................................................................... 94La memoria se está agotando .................................................................................................... 94Al productor le aparece NotLeaderForPartitionException ................................................................. 94Particiones subreplicadas (URP) mayores que cero ....................................................................... 94Problemas de red ..................................................................................................................... 94

Cliente Amazon EC2 y Clúster de MSK en la misma VPC ....................................................... 95Cliente Amazon EC2 y Clúster de MSK en distintas VPC ........................................................ 95Cliente en las instalaciones ................................................................................................ 95AWS Direct Connect ......................................................................................................... 96

Prácticas recomendadas de ............................................................................................................... 97Ajustar el tamaño del clúster ...................................................................................................... 97

Número de particiones por tabla ........................................................................................ 97Número de corredores por cluster ...................................................................................... 97

Crear clústeres de alta disponibilidad ........................................................................................... 97Monitorear el espacio en disco ................................................................................................... 98Ajuste los parámetros de retención de datos ................................................................................. 98No agregue a agentes que no sean de MSK ................................................................................ 99Habilitar el cifrado en tránsito ..................................................................................................... 99Reasignar particiones ................................................................................................................ 99

Historial de revisión ......................................................................................................................... 100AWS glossary ................................................................................................................................. 101....................................................................................................................................................... cii

v

Page 6: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

¿Qué es Amazon MSK?Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administradoque le permite crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming.Amazon MSK proporciona las operaciones de plano de control, como crear, actualizar y eliminar clústeres.Le permite utilizar operaciones de plano de datos de Apache Kafka, como producir y consumir datos.Ejecuta versiones de código abierto de Apache Kafka. Esto significa que las aplicaciones, herramientasy complementos existentes de los socios y la comunidad Apache Kafka son compatibles sin necesidadde cambios en el código de la aplicación. Puede utilizar Amazon MSK para crear clústeres que utilicenversiones 1.1.1, 2.2.1, 2.3.1 o 2.4.1 de Apache Kafka.

El siguiente diagrama ofrece información general sobre cómo funciona Amazon MSK.

El diagrama ilustra la interacción entre los siguientes componentes:

• Nodos de agente — Al crear un Clúster de Amazon MSK, especifique cuántos nodos de agente deseaque Amazon MSK cree en cada zona de disponibilidad. En el clúster de ejemplo que se muestra en estediagrama, hay un agente por zona de disponibilidad. Cada zona de disponibilidad tiene su propia subredde nube virtual privada (VPC).

• Nodos ZooKeeper — Amazon MSK también crean nodos ZooKeeper de Apache para usted. ApacheZooKeeper es un servidor de código abierto que permite una coordinación distribuida altamenteconfiable.

• Productores, consumidores y creadores de temas l— Amazon MSK le permite utilizar operaciones deplano de datos de Apache Kafka para crear temas y producir y consumir datos.

• AWS CLI — Puede utilizar AWS Command Line Interface (AWS CLI) o las API del SDK para realizaroperaciones de plano de control. Por ejemplo, puede utilizar AWS CLI o el SDK para crear o eliminar

1

Page 7: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

un Clúster de Amazon MSK, enumerar todos los clústeres de una cuenta o ver las propiedades de unclúster.

Amazon MSK detecta y se recupera automáticamente de los escenarios de error más comunes paraclústeres de modo que sus aplicaciones de productor y consumidor puedan continuar sus operacionesde escritura y lectura con un impacto mínimo. Cuando Amazon MSK detecta un error de agente, mitiga elerror o reemplaza al agente inaccesible o incorrecto por uno nuevo. Además, cuando es posible, reutilizael almacenamiento del agente más antiguo para reducir los datos que Apache Kafka necesita replicar. Suimpacto en la disponibilidad se limita al tiempo necesario para que Amazon MSK complete la detección yrecuperación. Después de una recuperación, las aplicaciones de productor y consumidor pueden seguircomunicándose con las mismas direcciones IP del agente que usaban antes del error.

Para empezar a usar Amazon MSK, consulte Introducción (p. 4).

Para ver las operaciones de plano de control disponibles en Amazon MSK, consulte Referencia de la APIAde Amazon MSK.

Después de crear un clúster, puede utilizar Amazon CloudWatch para supervisarlo. Para obtener másinformación sobre cómo supervisar el clúster con el uso de métricas, consulte the section called “Monitoreode un clúster” (p. 27).

2

Page 8: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Inscripción en AWS

Configuración de Amazon MSKAntes de usar Amazon MSK por primera vez, realice las siguientes tareas:

Tareas• Inscripción en AWS (p. 3)• Descargar bibliotecas y herramientas (p. 3)

Inscripción en AWSAl inscribirse en Amazon Web Services (AWS), su cuenta de AWS se inscribe automáticamente en todoslos servicios de AWS, incluido Amazon MSK. Solo se le cobrará por los servicios que utilice.

Si ya dispone de una cuenta de AWS, pase a la siguiente tarea. Si no dispone de una cuenta de AWS,utilice el siguiente procedimiento para crear una.

Para inscribirse en una cuenta de AWS

1. Abra https://portal.aws.amazon.com/billing/signup.2. Siga las instrucciones en línea.

Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código deverificación en el teclado del teléfono.

Descargar bibliotecas y herramientasLas siguientes bibliotecas y herramientas pueden ayudarle a trabajar con Amazon MSK:

• AWS Command Line Interface (AWS CLI) admite Amazon MSK. AWS CLI permite controlar variosservicios de AWS desde la línea de comandos y automatizarlos mediante scripts. Actualice su AWSCLI a la versión más reciente para asegurarse de que tiene soporte para Amazon MSK. Para obtenerinstrucciones detalladas sobre cómo actualizar el AWS CLI, consulte Instalación de la interfaz de líneade comandos de AWS.

• El Referencia de la API de Amazon Managed Streaming for Kafka documento de las operaciones de APIque Amazon MSK admite.

• Los AWS SDK para Go, Java, JavaScript, .NET, Node.js, PHP, Python y Ruby incluyen soporte ymuestras de Amazon MSK.

3

Page 9: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 1. Creación de una VPC

Introducción al uso de Amazon MSKEn esta sección se muestra un ejemplo de cómo crear un Clúster de MSK, producir y consumir datosy monitorear el estado del clúster mediante métricas. Este ejemplo no representa todas las opcionesque puede elegir al crear un Clúster de MSK. En diferentes partes de este tutorial, elegimos opcionespredeterminadas por motivos de simplicidad. Esto no significa que sean las únicas opciones que funcionanpara configurar instancias de cliente o un Clúster de MSK.

Este es un tutorial paso a paso que utiliza la Consola de administración de AWS y la AWS CLI. Si prefiereseguir una estrategia diferente, puede realizar los tipos de operaciones de AWS descritos en este tutorialutilizando solo la Consola de administración de AWS, solo la AWS CLI, solo la API de AWS o unacombinación de los tres entornos. Alternativamente, puede usar AWS CloudFormation para configurar unClúster de MSK. Para ver algunas plantillas de ejemplo de AWS CloudFormation, consulte Ejemplos deAmazon MSK CloudFormation.

Prerequisites

Antes de comenzar, asegúrese de que tiene una cuenta de AWS y de que tiene la AWS Command LineInterface (AWS CLI) instalada en el equipo. Para obtener más información acerca de estos requisitosprevios, consulte Configuración (p. 3).

Important

Asegúrese de que tiene la última versión de la AWS CLI. Es posible que las versiones anterioresno tengan la funcionalidad completa de Amazon MSK.

Temas• Paso 1. Crear un VPC para su clúster MSK (p. 4)• Paso 2. Activar alta disponibilidad y tolerancia a fallos (p. 7)• Paso 3. Creación de un Clúster de Amazon MSK (p. 8)• Paso 4. Crear una máquina cliente (p. 10)• Paso 5. Creación de un tema (p. 11)• Paso 6. Producir y consumir datos (p. 12)• Paso 7. Uso Amazon CloudWatch para ver Amazon MSK Métricas (p. 13)• Paso 8. Elimine la Clúster de Amazon MSK (p. 14)

Paso 1. Crear un VPC para su clúster MSKEn el primer paso de la Introducción al uso de Amazon MSK (p. 4), se utiliza la Consola de AmazonVPC para crear una Amazon Virtual Private Cloud (Amazon VPC). Creará un Clúster de MSK en esta VPCmás adelante.

Para crear una VPC

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

2. Elija Launch VPC Wizard (Lanzar el asistente de VPC).

4

Page 10: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 1. Creación de una VPC

3. Seleccione Select (Seleccionar) para aceptar la configuración predeterminada de Amazon VPC,denominada VPC with a Single Public Subnet (VPC con una única subred pública).

5

Page 11: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 1. Creación de una VPC

4. Para Nombre de VPC, introducir AWSKafkaTutorialVPC. Si copia este nombre y péguelo en laconsola, elimine cualquier espacio blanco que vaya al campo de texto antes del nombre.

5. En Availability Zone (Zona de disponibilidad), elija us-east-1a.6. Para Nombre de subred, introducir AWSKafkaTutorialSubnet-1. Si copia este nombre y péguelo

en la consola, elimine cualquier espacio blanco que vaya al campo de texto antes del nombre.7. Elija Create VPC (Crear VPC) y, a continuación, elija OK (Aceptar).8. En la lista de VPC, busque AWSKafkaTutorialVPC y copie su ID de la columna VPC ID (ID de VPC).

Guarde este ID en algún lugar, porque lo necesita en algunos de los pasos siguientes.

Paso siguiente

Paso 2. Activar alta disponibilidad y tolerancia a fallos (p. 7)

6

Page 12: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 2. Activar alta disponibilidad y tolerancia a fallos

Paso 2. Activar alta disponibilidad y tolerancia afallos

En este paso de Introducción al uso de Amazon MSK (p. 4), habilita la alta disponibilidad y latolerancia a errores. Para ello, agregue dos subredes a la VPC que creó con una subred en el pasoanterior. Después de completar este paso, tendrá tres subredes en tres zonas de disponibilidad diferentes.

Para añadir subredes a la VPC

1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.2. En el panel de navegación, elija Subnets.3. En la lista de subredes, busque AWSKafkaTutorialSubnet-1 y, a continuación, busque la

columna denominada Route table (Tabla de enrutamiento). Copie el valor asociado conAWSKafkaTutorialSubnet-1 en dicha columna y guárdelo para más adelante.

4. Elija Create subnet (Crear subred).5. Para el Etiqueta de nombre, introducir AWSKafkaTutorialSubnet-2. Si copia este nombre y

péguelo en la consola, elimine cualquier espacio blanco que vaya al campo de texto antes del nombre.6. En VPC, elija AWSKafkaTutorialVPC.7. En Availability Zone (Zona de disponibilidad), elija us-east-1b.8. En IPv4 CIDR block (Bloque de CIDR IPv4), escriba 10.0.1.0/24.9. Elija Create (Crear) y, a continuación, Close (Cerrar).10. Elija AWSKafkaTutorialSubnet-2 en la lista de subredes seleccionando la casilla de verificación situada

junto a ella. Asegúrese de que no hay ninguna otra casilla de verificación seleccionada en la lista.11. En la vista de subred situada cerca de la parte inferior de la página, elija la pestaña Route Table

(Tabla de enrutamiento) y, a continuación, elija Edit route table association (Editar asociación de tablade enrutamiento).

7

Page 13: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 3. Crear un clúster

12. En la lista Route Table ID (ID de tabla de enrutamiento), elija la tabla de enrutamiento cuyo valor copióanteriormente en este procedimiento.

13. Elija Save (Guardar) y, a continuación, elija Close (Cerrar).14. Repita este procedimiento para crear otra subred con el nombre AWSKafkaTutorialSubnet-3,

en el us-east-1c Zona de disponibilidad y con el bloqueo de ipv4 CIDR establecer 10.0.2.0/24.Si copia el nombre de la subred y péguelo en la consola, elimine cualquier espacio blanco que seintroduzca en el campo de texto antes del nombre.

15. Edite la tabla de enrutamiento de AWSKafkaTutorialSubnet-3 para garantizar quetiene la misma tabla de enrutamiento utilizada para AWSKafkaTutorialSubnet-1 yAWSKafkaTutorialSubnet-2.

Paso siguiente

Paso 3. Creación de un Clúster de Amazon MSK (p. 8)

Paso 3. Creación de un Clúster de Amazon MSKEn este paso de la Introducción al uso de Amazon MSK (p. 4), crea un Clúster de Amazon MSK en laVPC.

Para crear un Clúster de Amazon MSK mediante la AWS CLI

1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.2. En el panel de navegación, elija Subnets (Subredes) y, a continuación, copie los ID de subred de las

tres subredes que creó anteriormente. Guarde estos ID porque los necesitará más adelante en esteprocedimiento.

8

Page 14: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 3. Crear un clúster

3. En el panel de navegación, elija Security Groups (Grupos de seguridad). A continuación, en la tablade grupos de seguridad, busque el grupo para el que la columna VPC ID (ID de VPC) tiene el ID queguardó para AWSKafkaTutorialVPC. Copie el ID de este grupo de seguridad y guárdelo porque lonecesitará más adelante en este procedimiento.

4. Copie el siguiente JSON y guárdelo en un archivo. Asigne el nombre clusterinfo.json al archivo.

{ "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "InstanceType": "kafka.m5.large", "ClientSubnets": [ "AWSKafkaTutorialSubnet-1 Subnet ID", "AWSKafkaTutorialSubnet-2 Subnet ID", "AWSKafkaTutorialSubnet-3 Subnet ID" ], "SecurityGroups": [ "AWSKafkaTutorialVPC Security Group ID" ] }, "ClusterName": "AWSKafkaTutorialCluster", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "your-CMK" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }, "EnhancedMonitoring": "PER_TOPIC_PER_BROKER", "KafkaVersion": "2.2.1", "NumberOfBrokerNodes": 3}

5. En el archivo clusterinfo.json, reemplace los marcadores de los tres ID de subred y el ID degrupo de seguridad por los valores que guardó en los pasos anteriores.

6. En clusterinfo.json, sustituir your-CMK con un CMK gestionado por el cliente. También puedeeliminar EncryptionAtRest y dejar que Amazon MSK cree una CMK y usarla en su nombre.Establecer InCluster en true significa que desea que Amazon MSK cifre los datos a medidaque se desplazan entre los agentes dentro del clúster. Para ClientBroker puede elegir uno delos siguientes ajustes: TLS, , TLS_PLAINTEXT, o PLAINTEXT. En este ejercicio, usamos TLS paraindicar que queremos cifrar los datos a medida que viaja entre clientes y corredores. Para obtener másinformación acerca de la configuración de cifrado, consulte the section called “Cifrado” (p. 59).

7. Actualice la AWS CLI a la versión más reciente para asegurarse de que es compatible con AmazonMSK. Para obtener instrucciones detalladas sobre cómo actualizar el AWS CLI, consulte Instalaciónde la interfaz de línea de comandos de AWS.

8. Ejecute el siguiente comando de la AWS CLI en el directorio en el que guardó el archivoclusterinfo.json.

aws kafka create-cluster --cli-input-json file://clusterinfo.json

El resultado del comando tendrá un aspecto similar al siguiente JSON:

{ "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "State": "CREATING"}

9

Page 15: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 4. Crear una máquina cliente

9. Guarde el valor de la clave ClusterArn, porque la necesita más adelante.

Important

Asegúrese de haber guardado ClusterArn antes de continuar.

Paso siguiente

Paso 4. Crear una máquina cliente (p. 10)

Paso 4. Crear una máquina clienteEn este paso de Introducción al uso de Amazon MSK (p. 4), se crea un equipo cliente. Utilice esteequipo cliente para crear un tema que produzca y consuma datos. Por motivos de simplicidad, pondremoseste equipo cliente en la misma VPC que el clúster de Amazon MSK. Pero un equipo cliente no tiene queestar en la misma VPC que el clúster.

Para crear un equipo cliente

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.2. Elija Launch Instance (Lanzar instancia).3. Elija Select (Seleccionar) para crear una instancia de Amazon Linux 2 AMI (HVM), SSD Volume Type

(Tipo de volumen SSD).4. Elija el tipo de instancia t2.xlarge seleccionando la casilla de verificación situada junto a él.5. Seleccione Next (Siguiente). Página Configure Instance Details (Configurar los detalles de la instancia)6. En la lista Network (Red) elija AWSKafkaTutorialVPC.7. En la lista Auto-assign Public IP (Asignar IP pública automáticamente), elija Enable (Habilitar).8. En el menú cerca de la parte superior, elija 5. Añadir etiquetas9. Elija Add Tag (Añadir etiqueta).10. Escriba Name en Key (Clave) y AWSKafkaTutorialClient en Value (Valor).11. Elija Review and Launch (Revisar y lanzar) y, a continuación, elija Launch (Lanzar).12. Elija Create a new key pair (Crear un nuevo par de claves), escriba MSKKeyPair en Key pair name

(Nombre del par de claves) y elija Download Key Pair (Descargar par de claves). También puedeutilizar un par de claves existente si lo prefiere.

13. Lea la confirmación, seleccione la casilla de verificación situada junto a ella y elija Launch Instances(Lanzar instancias).

14. Elija View Instances (Ver instancias). A continuación, en la columna Security Groups (Grupos deseguridad), elija el grupo de seguridad asociado a la instancia AWSKafkaTutorialClient.

15. Copie el valor de Group ID (ID de grupo) (y no el nombre del grupo) asociado al grupo de seguridad yguárdelo para más adelante.

16. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.17. En el panel de navegación, elija Security Groups (Grupos de seguridad). En la columna VPC

ID (ID de VPC) de los grupos de seguridad, busque la fila que contiene el ID guardado paraAWSKafkaTutorialVPC y la columna Description (Descripción) tiene el valor default VPC securitygroup (grupo de seguridad de VPC predeterminado). Elija esta fila seleccionando la casilla deverificación de la primera columna.

18. En la pestaña Inbound Rules (Reglas de entrada), elija Edit rules (Editar reglas).19. Seleccione Add Rule (Añadir regla).20. En la nueva regla, elija All traffic (Todo el tráfico) en la columna Type (Tipo). En el segundo campo de

la columna Source (Origen) escriba el ID del grupo de seguridad del equipo cliente. Este es el ID degrupo que guardó anteriormente.

10

Page 16: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 5. Creación de un tema

21. Elija Save rules (Guardar reglas).

Paso siguiente

Paso 5. Creación de un tema (p. 11)

Paso 5. Creación de un temaEn este paso de Introducción al uso de Amazon MSK (p. 4), instale las bibliotecas y herramientas delcliente de Apache Kafka en el equipo cliente y, a continuación, cree un tema.

Para crear un tema en el equipo cliente

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.2. En el panel de navegación, elija Instances (Instancias), y, a continuación, elija AWSKafkaTutorialClient

seleccionando la casilla de verificación situada junto a él.3. Elija Actions (Acciones) y, a continuación, elija Connect (Conectar). Siga las instrucciones para

conectarse al equipo cliente AWSKafkaTutorialClient.4. Instale Java en el equipo cliente ejecutando el siguiente comando:

sudo yum install java-1.8.0

5. Ejecute el siguiente comando para descargar Apache Kafka.

wget https://archive.apache.org/dist/kafka/2.2.1/kafka_2.12-2.2.1.tgz

Note

Si desea utilizar un sitio espejo que no sea el utilizado en este comando, puede elegir unodiferente en el sitio web de Apache.

6. Ejecute el siguiente comando en el directorio donde descargó el archivo TAR del paso anterior.

tar -xzf kafka_2.12-2.2.1.tgz

7. Vaya al directorio kafka_2.12-2.2.1.8. La creación del clúster puede tardar unos minutos. Para averiguar si el clúster que creó está listo,

ejecute el comando siguiente, sustituya ClusterArn con el nombre de recursos de Amazon (ARN)que obtuvo al final de the section called “Paso 3. Crear un clúster” (p. 8).

aws kafka describe-cluster --region us-east-1 --cluster-arn "ClusterArn"

El resultado de ejecutar este comando se parece al siguiente JSON:

{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0d44a1567c2ce409a", "subnet-051201cac65561565", "subnet-08b4eceb2bd3bd8c2" ], "InstanceType": "kafka.m5.large", "SecurityGroups": [

11

Page 17: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 6. Producir y consumir datos

"sg-041e78b0a8ba7f834" ], "StorageInfo": { "EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "CreationTime": "2018-11-06T01:36:57.451Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K3UN6WX5RRO2AG", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:012345678901:key/a7de6539-7d2e-4e71-a279-aaaa5555878" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "CREATING" }}

Si el resultado del comando muestra que el estado del clúster aún es CREATING, espere unos minutosy vuelva a ejecutar el comando. Siga ejecutando este comando cada pocos minutos hasta que elestado vuelva a ACTIVE. Cuando el estado es ACTIVE, la salida de este describe-cluster elcomando incluye una clave adicional llamada ZookeeperConnectString. Copie todo el valorasociado con esta clave porque lo necesita para crear un tema de Apache Kafka en el siguientecomando.

9. Ejecutar el siguiente comando, sustituir ZookeeperConnectString con el valor que guardódespués de ejecutar el describe-cluster comando.

bin/kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic

Si el comando se ejecuta correctamente, verá el siguiente mensaje: Created topicAWSKafkaTutorialTopic.

Paso siguiente

Paso 6. Producir y consumir datos (p. 12)

Paso 6. Producir y consumir datosEn este paso de Introducción al uso de Amazon MSK (p. 4), se producen y consumen datos.

Para producir y consumir mensajes

1. En este ejemplo usamos el truststore de JVM para comunicarnos con el Clúster de MSK. Para ello,primero cree una carpeta denominada /tmp en el equipo cliente. A continuación, vaya al bin carpetade la instalación de Apache Kafka y ejecutar el siguiente comando, sustituirlo JDKFolder con elnombre de la carpeta JDK. Por ejemplo, el nombre de la carpeta JDK en su instancia podría serjava-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64.

12

Page 18: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 7. Visualización de las métricas

cp /usr/lib/jvm/JDKFolder/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks

2. Mientras esté aún en la carpeta bin de la instalación de Apache Kafka en el equipo cliente, cree unarchivo de texto denominado client.properties con el siguiente contenido.

security.protocol=SSLssl.truststore.location=/tmp/kafka.client.truststore.jks

3. Ejecutar el siguiente comando, sustituir ClusterArn con el nombre de recursos de Amazon (ARN)que obtuvo al final de the section called “Paso 3. Crear un clúster” (p. 8).

aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn ClusterArn

En el resultado JSON del comando, guarde el valor asociado a la cadena denominada"BootstrapBrokerStringTls", porque lo necesita en los siguientes comandos.

4. Ejecute el comando siguiente en el bin carpeta, sustitución BootstrapBrokerStringTls con elvalor que obtuvo al ejecutar el comando anterior.

./kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic AWSKafkaTutorialTopic

5. Escriba el mensaje que desee y pulse Enter (Entrar). Repita este paso dos o tres veces. Cada vez queintroduzca una línea y pulse Enter (Entrar), dicha línea se envía al clúster de Apache Kafka como unmensaje separado.

6. Mantenga abierta la conexión al equipo cliente y, a continuación, abra una segunda conexiónindependiente a dicho equipo en una nueva ventana.

7. En el siguiente comando, sustituya BootstrapBrokerStringTls con el valor que ha guardadoantes. Luego, vaya a la carpeta bin y ejecute el comando usando la segunda conexión con el equipocliente.

./kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic AWSKafkaTutorialTopic --from-beginning

Comenzará a ver los mensajes que introdujo anteriormente cuando utilizó el comando del productorde la consola. Estos mensajes se cifran mediante TLS en tránsito.

8. Escriba más mensajes en la ventana del productor y observe cómo aparecen en la ventana delconsumidor.

Paso siguiente

Paso 7. Uso Amazon CloudWatch para ver Amazon MSK Métricas (p. 13)

Paso 7. Uso Amazon CloudWatch para ver AmazonMSK Métricas

En este paso de Introducción al uso de Amazon MSK (p. 4), verá las métricas de Amazon MSK enAmazon CloudWatch.

Para ver las métricas de Amazon MSK en CloudWatch

1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

13

Page 19: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Paso 8. Eliminar el clúster

2. En el panel de navegación, seleccione Metrics.3. Seleccione la pestaña All metrics (Todas las métricas) y, a continuación, seleccione AWS/Kafka.4. Para ver métricas de nivel de agente, elija Broker ID, Cluster Name (ID de agente, Nombre del

clúster). En las métricas de nivel de clúster, elija Cluster Name (Nombre del clúster).5. (Opcional) En el panel de gráficos, seleccione una estadística y un periodo de tiempo y, a

continuación, cree una alarma de CloudWatch utilizando estos ajustes.

Paso siguiente

Paso 8. Elimine la Clúster de Amazon MSK (p. 14)

Paso 8. Elimine la Clúster de Amazon MSKEn el paso final de Introducción al uso de Amazon MSK (p. 4), elimina el Clúster de MSK que creó enPaso 3. Creación de un Clúster de Amazon MSK (p. 8).

Para eliminar el Clúster de Amazon MSK mediante la AWS CLI

1. Ejecute el siguiente comando en el equipo donde tiene la AWS CLI instalada.

aws kafka list-clusters --region us-east-1

2. En el resultado del comando list-clusters, busque el nombre de recurso de Amazon (ARN) delclúster que se corresponda con el clúster que desea eliminar. Copie ese ARN.

3. Ejecutar el siguiente comando, sustituir ClusterArn con el ARN que obtuvo cuando ejecutó elcomando anterior.

aws kafka delete-cluster --region us-east-1 --cluster-arn ClusterArn

14

Page 20: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Creación de un clúster

Amazon MSK: cómo funcionaUn Clúster de Amazon MSK es el recurso principal de Amazon MSK que puede crear en su cuenta. En lostemas de esta sección se describe cómo realizar las operaciones comunes de Amazon MSK. Para obteneruna lista de todas las operaciones que puede realizar en un Clúster de MSK, consulte:

• La Consola de administración de AWS• La Referencia de la API de Amazon MSK• La Referencia de los comandos de la CLI de Amazon MSK

Temas• Creación de una Clúster de Amazon MSK (p. 15)• Eliminación de un Clúster de Amazon MSK (p. 19)• Obtención de la cadena de conexión Apache ZooKeeper para un Clúster de Amazon MSK (p. 19)• Obtención de los agentes de arranque para un Clúster de Amazon MSK (p. 21)• Listado de clústeres de Amazon MSK (p. 21)• Ampliación del almacenamiento del agente (p. 22)• Actualización de la configuración de un Clúster de Amazon MSK (p. 23)• Eliminación de la configuración de un Clúster de Amazon MSK (p. 25)• Expansión de un Clúster de Amazon MSK (p. 26)• Monitorización de un Clúster de Amazon MSK (p. 27)• Reinicio de un agente para un Clúster de Amazon MSK (p. 41)• Etiquetado de Clúster de Amazon MSK (p. 42)

Creación de una Clúster de Amazon MSKAntes de crear un Clúster de Amazon MSK, debe tener una VPC y configurar subredes dentro de esaVPC. Necesita dos subredes en dos zonas de disponibilidad diferentes en la EE.UU. Oeste (Norte deCalifornia) Región. En todas las demás regiones donde Amazon MSK esté disponible, puede especificardos o tres subredes. Todas las subredes deben estar en diferentes zonas de disponibilidad. Al crear unclúster, Amazon MSK distribuye los nodos del agente de manera uniforme a través de las subredes queespecifique. Para obtener un ejemplo de cómo configurar una VPC y subredes para un Clúster de MSK,consulte ??? (p. 4) y ??? (p. 7).

Tipos de instancia del agenteCuando se crea un Clúster de Amazon MSK, se especifica el tipo de instancia Amazon EC2 que desea quesean los agentes. Después de crear un clúster, no puede cambiar el tipo de instancia EC2 de sus agentes.Amazon MSK admite los siguientes tipos de instancia:

• t3.small• m5.large, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge, m5.24xlarge

Los agentes M5 tienen un rendimiento de referencia más alto que los agentes T3 y se recomiendan paracargas de trabajo de producción. Los agentes M5 también pueden tener más particiones por agente que

15

Page 21: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Creación de un clúster mediante laConsola de administración de AWS

los agentes T3. Utilice los agentes M5 si está ejecutando cargas de trabajo de grado de producción másgrandes o necesita un mayor número de particiones. Para obtener más información sobre los tipos deinstancias M5, consulte Instancias M5 de Amazon EC2.

Los agentes T3 tienen la capacidad de usar créditos de CPU para rendimiento por ráfagas temporalmente.Utilice los agentes T3 para el desarrollo de bajo costo, si está probando cargas de trabajo de streaming depequeñas a medianas, o si tiene cargas de trabajo de streaming de bajo rendimiento que experimentanpicos temporales en el rendimiento. Le recomendamos que ejecute una prueba de concepto paradeterminar si los agentes T3 son suficientes para la producción o la carga de trabajo crítica. Para obtenermás información sobre tipos de instancia T3, consulte Instancias T3 de Amazon EC2.

Para obtener más información sobre cómo elegir los tipos de instancia de agente, consulte the sectioncalled “Ajustar el tamaño del clúster” (p. 97).

Creación de un clúster mediante la Consola deadministración de AWS

1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. Elija . Create cluster.3. Especifique un nombre para el clúster.4. En la lista VPC, elija la VPC que desea utilizar para el clúster. También puede especificar qué versión

de Apache Kafka quiere que Amazon MSK utilice para crear el clúster.5. Especifique dos subredes si utiliza una de las siguientes regiones: América del Sur (São Paulo),

Canadá (Central), y EE.UU. Oeste (Norte de California). En otras regiones donde Amazon MSK estédisponible, puede especificar dos o tres subredes. Las subredes que especifique deben estar endiferentes zonas de disponibilidad.

6. Elija el tipo de configuración que desee. Para obtener más información acerca de las configuracionesde MSK, consulte : Configuration (p. 45).

7. Especifique el tipo y el número de agente que desea que MSK cree en cada zona de disponibilidad. Elmínimo es un agente por zona de disponibilidad y el máximo es 30 agentes por clúster.

8. (Opcional) Asigne etiquetas al clúster. Las etiquetas son opcionales. Para obtener más información,consulte the section called “Etiquetado de un clúster” (p. 42).

9. Puede ajustar el volumen de almacenamiento por agente. Después de crear el clúster, puedeaumentar el volumen de almacenamiento por agente, pero no puede reducirlo.

10. Elija la configuración que desee para cifrar los datos en tránsito. De forma predeterminada, MSK cifralos datos a medida que transitan entre los agentes dentro de un clúster. Si no desea cifrar datos amedida que transitan entre agentes, desactive la casilla de verificación Enable encryption within thecluster (Habilitar cifrado dentro del clúster).

11. Elija una de las tres configuraciones para cifrar los datos a medida que transitan entre clientes yagentes. Para obtener más información, consulte the section called “Cifrado en tránsito” (p. 60).

12. Elija el tipo de CMK que desea utilizar para cifrar datos en reposo. Para obtener más información,consulte the section called “Cifrado en reposo” (p. 59).

13. Si desea autenticar la identidad de los clientes, seleccione Enable TLS client authentication(Habilitar la autenticación de cliente TLS) seleccionando la casilla situada junto al cliente. Paraobtener más información acerca de la autenticación, consulte the section called “Autenticación delcliente” (p. 69).

14. Elija el nivel de supervisión que desee. Esto determina el conjunto de métricas que obtiene. Paraobtener más información, consulte the section called “Monitoreo de un clúster” (p. 27).

15. (Opcional) Elija Configuración avanzaday, a continuación, selecciona Customize settingsPuedeespecificar uno o más grupos de seguridad a los que desea dar acceso al clúster (por ejemplo, losgrupos de seguridad de los equipos informáticos del cliente). Si especifica grupos de seguridad que se

16

Page 22: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Creación de un clúster mediante la AWS CLI

han compartido con usted, debe asegurarse de que tiene permisos para ellos. En concreto, necesita elpermiso ec2:DescribeSecurityGroups. Para ver un ejemplo, consulte de Amazon EC2: Permiteadministrar grupos de seguridad de EC2 asociados a una VPC específica, mediante programación yen la consola de.

16. Elija . Create cluster.

Creación de un clúster mediante la AWS CLI

1. Copie el siguiente JSON y guárdelo en un archivo. Asigne un nombre al archivobrokernodegroupinfo.json. Reemplace los ID de subred en el JSON por los valores quecorresponden a sus subredes. Estas subredes deben estar en diferentes zonas de disponibilidad.Reemplazar "Security-Group-ID" con el ID de uno o varios grupos de seguridad de la VPCcliente. Los clientes asociados a estos grupos de seguridad obtienen acceso al clúster. Si especificagrupos de seguridad que se han compartido con usted, debe asegurarse de que tiene permisos paraellos. En concreto, necesita el permiso ec2:DescribeSecurityGroups. Para ver un ejemplo,consulte de Amazon EC2: Permite administrar grupos de seguridad de EC2 asociados a unaVPC específica, mediante programación y en la consola de. Finalmente, guarde el archivo JSONactualizado en el equipo donde tiene instalado el archivo AWS CLI.

{ "InstanceType": "kafka.m5.large", "ClientSubnets": [ "Subnet-1-ID", "Subnet-2-ID" ], "SecurityGroups": [ "Security-Group-ID" ]}

Important

Especifique exactamente dos subredes si utiliza una de las siguientes regiones: América delSur (São Paulo), Canadá (Central), y EE.UU. Oeste (Norte de California). Para otras regionesdonde Amazon MSK esté disponible, puede especificar dos o tres subredes. Las subredesque especifique deben estar en distintas zonas de disponibilidad. Al crear un clúster, AmazonMSK distribuye los nodos del agente de manera uniforme entre las subredes que especifique.

2. Ejecute lo siguiente AWS CLI en el directorio en el que guardó el comandobrokernodegroupinfo.json archivo, sustitución "Your-Cluster-Name" con un nombre desu elección. En : "Monitoring-Level", puede especificar uno de los tres valores siguientes:DEFAULTde PER_BROKER, o bien PER_TOPIC_PER_BROKER. Para obtener información sobreestos tres niveles diferentes de monitorización, consulte ??? (p. 27). El parámetro enhanced-monitoring es opcional. Si no lo especifica en el comando create-cluster, obtendrá el nivel desupervisión DEFAULT.

aws kafka create-cluster --cluster-name "Your-Cluster-Name" --broker-node-group-info file://brokernodegroupinfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3 --enhanced-monitoring "Monitoring-Level"

El resultado del comando tendrá un aspecto similar al siguiente JSON:

{ "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "State": "CREATING"

17

Page 23: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Creación de un clúster con una configuración MSKpersonalizada mediante el comando AWS CLI

}

Note

El comando create-cluster puede devolver un error que indica que una o más subredespertenecen a zonas de disponibilidad no compatibles. Cuando esto sucede, el error indicaqué zonas de disponibilidad no son compatibles. Cree subredes que no utilicen las zonas dedisponibilidad no admitidas e intente ejecutar el comando create-cluster de nuevo.

3. Guarde el valor de la clave ClusterArn, ya que lo necesitará para realizar otras acciones en elclúster.

Creación de un clúster con una configuración MSKpersonalizada mediante el comando AWS CLI

Para obtener información acerca de las configuraciones MSK personalizadas y cómo crearlas, consulte :Configuration (p. 45).

1. Guarde el siguiente JSON en un archivo y sustituya configuration-arn con el ARN de laconfiguración que desea utilizar para crear el clúster.

{ "Arn": configuration-arn, "Revision": 1}

2. Ejecute el comando create-cluster y use la opción configuration-info para apuntar alarchivo JSON que guardó en el paso anterior. A continuación se muestra un ejemplo: .

aws kafka create-cluster --cluster-name ExampleClusterName --broker-node-group-info file://brokernodegroupinfo.json --kafka-version "1.1.1" --number-of-broker-nodes 3 --enhanced-monitoring PER_TOPIC_PER_BROKER --configuration-info file://configuration.json

El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomConfigExampleCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2", "ClusterName": "CustomConfigExampleCluster", "State": "CREATING"}

Creación de un clúster mediante la APIPara crear un clúster mediante la API, vea CreateCluster.

18

Page 24: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Eliminación de un clúster

Eliminación de un Clúster de Amazon MSKEliminación de un clúster mediante la Consola deadministración de AWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. Seleccione el Clúster de MSK que desee eliminar activando la casilla de verificación situada junto a él.3. Elija . Deletey, a continuación, confirme la eliminación.

Eliminación de un clúster mediante la AWS CLIEjecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon (ARN)que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarlo enumerandotodos los clústeres. Para obtener más información, consulte the section called “Listado de clústeres de” (p. 21).

aws kafka delete-cluster --cluster-arn ClusterArn

Eliminación de un clúster mediante la APIPara eliminar un clúster mediante la API, consulte DeleteCluster.

Obtención de la cadena de conexión ApacheZooKeeper para un Clúster de Amazon MSK

Obtención de la cadena de conexión ApacheZooKeeper mediante la Consola de administración deAWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. La tabla muestra todos los clústeres de la región actual en esta cuenta. Elija el nombre de un clúster

para ver su descripción.3. En la Resumen del clúster selecciona View client informationEsto muestra los servidores de arranque,

así como la cadena de conexión Apache ZooKeeper.

Obtención de la cadena de conexión ApacheZooKeeper mediante la AWS CLI1. Si no conocee el nombre de recurso de Amazon (ARN) de su clúster, puede encontrarlo enumerando

todos los clústeres de su cuenta. Para obtener más información, consulte the section called “Listadode clústeres de ” (p. 21).

2. Para obtener la cadena de conexión Apache ZooKeeper, junto con otra información sobre el clúster,ejecute el siguiente comando, reemplazando ClusterArn con el ARN del clúster.

19

Page 25: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Obtención de la cadena de conexiónApache ZooKeeper mediante la API

aws kafka describe-cluster --cluster-arn ClusterArn

El resultado de este comando describe-cluster tendrá un aspecto similar al siguiente.

{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0123456789abcdef0", "subnet-2468013579abcdef1", "subnet-1357902468abcdef2" ], "InstanceType": "kafka.m5.large", "StorageInfo": { "EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2", "ClusterName": "testcluster", "CreationTime": "2018-12-02T17:38:36.75Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K13V1IB3VIYZZH", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "ACTIVE", "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018" }}

El ejemplo de JSON anterior muestra la clave ZookeeperConnectString en la salida del comandodescribe-cluster. Copie el valor correspondiente a esta clave y guárdelo para cuando necesitecrear un tema en el clúster.

Important

Su Clúster de Amazon MSK debe estar en el estado ACTIVE para poder obtener lacadena de conexión ZooKeeper. Cuando un clúster sigue en la CREATING , la salida de ladescribe-cluster el comando no incluye ZookeeperConnectString. Si este es elcaso, espere unos minutos y, a continuación, ejecute el describe-cluster una vez másdespués de que el clúster alcance el ACTIVE el estado.

Obtención de la cadena de conexión ApacheZooKeeper mediante la APIPara obtener la cadena de conexión Apache ZooKeeper mediante la API, consulte DescribeCluster.

20

Page 26: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Obtención de los agentes de arranque

Obtención de los agentes de arranque para unClúster de Amazon MSK

Obtención de los agentes de arranque mediante laConsola de administración de AWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. La tabla muestra todos los clústeres de la región actual en esta cuenta. Elija el nombre de un clúster

para ver su descripción.3. En la Resumen del clúster selecciona View client informationEsto muestra los servidores de arranque,

así como la cadena de conexión Apache ZooKeeper.

Obtención de los agentes de arranque mediante laAWS CLIEjecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon (ARN)que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarlo enumerandotodos los clústeres. Para obtener más información, consulte the section called “Listado de clústeres de” (p. 21).

aws kafka get-bootstrap-brokers --cluster-arn ClusterArn

El resultado de este comando tendrá un aspecto similar al siguiente.

{ "BootstrapBrokerStringTls": "b-3.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9094,b-1.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9094,b-2.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9094"}

Obtención de los agentes de arranque mediante la APIPara obtener los agentes de arranque utilizando la API, consulte GetBootStrapBroker.

Listado de clústeres de Amazon MSKListado de clústeres mediante la Consola deadministración de AWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. La tabla muestra todos los clústeres de la región actual en esta cuenta. Elija el nombre de un clúster

para ver sus detalles.

21

Page 27: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Listado de clústeres mediante la AWS CLI

Listado de clústeres mediante la AWS CLIEjecute el comando siguiente.

aws kafka list-clusters

Listado de clústeres mediante la APIPara enumerar los clústeres que utilizan la API, consulte ListClusters.

Ampliación del almacenamiento del agentePuede ampliar la cantidad de almacenamiento de EBS por agente. No puede disminuir el almacenamiento.Para aumentar el almacenamiento, espere a que el clúster esté en el estado ACTIVE. Los volúmenes dealmacenamiento siguen estando disponibles durante esta operación de ampliación.

Ampliación del almacenamiento del agente mediantela Consola de administración de AWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. Elija el Clúster de MSK para el que desea actualizar el almacenamiento del agente.3. En la pestaña Almacenamiento selecciona Edit.4. Especifique el volumen de almacenamiento que desee. Solo se puede aumentar la cantidad de

almacenamiento, no se puede disminuir.5. Elija . Save changes.

Ampliación del almacenamiento del agente mediantela AWS CLIEjecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon (ARN)que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarlo enumerandotodos los clústeres. Para obtener más información, consulte the section called “Listado de clústeres de” (p. 21).

Reemplazar Current-Cluster-Version con la versión actual del clúster.Important

Las versiones de clúster no son enteros simples. Puede obtener la versión actual describiendo elclúster. Un ejemplo de ID de versión es KTVPDKIKX0DER.

La Target-Volume-in-GiB El parámetro representa la cantidad de almacenamiento que desea quecada agente tenga. Sólo es posible actualizar el almacenamiento para todos los agentes. No puedeespecificar agentes individuales para los que actualizar el almacenamiento. El valor que especifique paraTarget-Volume-in-GiB debe ser un número entero mayor que 100 GiB. El almacenamiento por agentedespués de la operación de actualización no puede exceder los 16384 GiB.

aws kafka update-broker-storage --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-broker-ebs-volume-info '{"KafkaBrokerNodeId": "All", "VolumeSizeGB": Target-Volume-in-GiB}'

22

Page 28: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ampliación del almacenamiento del agente mediante la API

Ampliación del almacenamiento del agente mediantela APIPara actualizar un almacenamiento de agente mediante la API, consulte UpdateBrokerStorage.

Actualización de la configuración de un Clúster deAmazon MSK

Para actualizar la configuración de un clúster, asegúrese de que el clúster está en el estado ACTIVE.Para obtener información acerca de la configuración de MSK, incluido cómo crear una configuraciónpersonalizada, qué propiedades puede actualizar y qué sucede al actualizar la configuración de un clústerexistente, consulte : Configuration (p. 45).

Actualización de la configuración de un clústermediante la AWS CLI1. Copie el siguiente JSON y guárdelo en un archivo. Asigne un nombre al archivo configuration-

info.json. Reemplazar ConfigurationArn con el nombre de recurso de Amazon (ARN) de laconfiguración que desea utilizar para actualizar el clúster. La cadena ARN debe estar entre comillas enel siguiente JSON.

Reemplazar Configuration-Revision con la revisión de la configuración que desea utilizar. Lasrevisiones de configuración son enteros (números enteros) que comienzan en 1. Este entero no debeestar entre comillas en el siguiente JSON.

{ "Arn": ConfigurationArn, "Revision": Configuration-Revision}

2. Ejecute el siguiente comando, reemplazando ClusterArn con el ARN que obtuvo al crear el clústerde. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Paraobtener más información, consulte the section called “Listado de clústeres de ” (p. 21).

Reemplazar Path-to-Config-Info-File con la ruta al archivo de información de configuración. Siasignó un nombre al archivo que creó en el paso anterior configuration-info.json y lo guardóen el directorio actual, Path-to-Config-Info-File es configuration-info.json.

Reemplazar Current-Cluster-Version con la versión actual del clúster.Important

Las versiones de clúster no son enteros simples. Puede obtener la versión actualdescribiendo el clúster. Un ejemplo de ID de versión es KTVPDKIKX0DER.

aws kafka update-cluster-configuration --cluster-arn ClusterArn --configuration-info file://Path-to-Config-Info-File --current-version Current-Cluster-Version

A continuación, se muestra un ejemplo de cómo utilizar este comando.

aws kafka update-cluster-configuration --cluster-arn "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1" --

23

Page 29: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresActualización de la configuración

de un clúster mediante la APIconfiguration-info file://c:\users\tester\msk\configuration-info.json --current-version "K1X5R6FKA87"

El resultado de este comando update-cluster-configuration tendrá un aspecto similar alsiguiente.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

3. Para obtener el resultado de la update-cluster-configuration operación, ejecute el siguientecomando, reemplazando ClusterOperationArn con el ARN que obtuvo en la salida de la update-cluster-configuration del comando.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

El resultado de este comando describe-cluster-operation tendrá un aspecto similar alsiguiente.

{ "ClusterOperationInfo": { "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-06-20T21:08:57.735Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "UPDATE_CLUSTER_CONFIGURATION", "SourceClusterInfo": {}, "TargetClusterInfo": { "ConfigurationInfo": { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/ExampleConfigurationName/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "Revision": 1 } } }}

En esta salida, OperationType es UPDATE_CLUSTER_CONFIGURATION. Si OperationStatetiene el valor UPDATE_IN_PROGRESS, espere un momento y, a continuación, ejecute el describe-cluster-operation de nuevo.

Actualización de la configuración de un clústermediante la APIPara crear un clúster mediante la API, vea UpdateClusterConfiguration.

24

Page 30: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Eliminación de la configuración de un clúster

Eliminación de la configuración de un Clúster deAmazon MSK

Para eliminar la configuración de un clúster, asegúrese de que el clúster esté en la ACTIVE o bienDELETE_FAILED y la configuración del clúster se encuentra en el campo ACTIVE o bien DELETE_FAILEDel estado. Para obtener información sobre la configuración de MSK, consulte Configuración de AmazonMSK (p. 45).

Eliminación de la configuración de un clúster mediantela AWS CLI1. Copie el siguiente JSON y guárdelo en un archivo. Asigne un nombre al archivo configuration-

info.json. Reemplazar ConfigurationArn con el nombre de recurso de Amazon (ARN) de laconfiguración que desea utilizar para eliminar el clúster. La cadena ARN debe estar entre comillas enel siguiente JSON.

{ "Arn": ConfigurationArn}

2. Ejecute el siguiente comando, reemplazando ClusterArn con el ARN que obtuvo al crear el clústerde. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Paraobtener más información, consulte the section called “Listado de clústeres de ” (p. 21).

Reemplazar Current-Cluster-Version con la versión actual del clúster. Tenga en cuenta queeste parámetro es opcional.

Important

Las versiones de clúster no son enteros simples. Puede obtener la versión actualdescribiendo el clúster. Un ejemplo de ID de versión es KTVPDKIKX0DER.

aws kafka delete-configuration --cluster-arn ClusterArn --current-version Current-Cluster-Version

A continuación, se muestra un ejemplo de cómo utilizar este comando.

aws kafka delete-configuration --cluster-arn "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1" --current-version "K1X5R6FKA87"

El resultado de este comando delete-configuration tendrá un aspecto similar al siguiente.

{ "state": "DELETING" "Arn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2"}

25

Page 31: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresEliminación de la configuración

de un clúster mediante la API de

Eliminación de la configuración de un clúster mediantela API dePara eliminar una configuración de clúster mediante la API de , consulte EliminarConfiguración.

Expansión de un Clúster de Amazon MSKUtilice esta operación Amazon MSK cuando desee aumentar el número de agentes en su Clúster de MSK.Para ampliar un clúster, asegúrese de que está en el estado ACTIVE.

Important

Si desea expandir un Clúster de MSK, asegúrese de utilizar esta operación de Amazon MSK. Nointente agregar agentes a un clúster sin usar esta operación.

Para obtener información acerca de cómo volver a equilibrar particiones después de agregar agentes a unclúster, consulte the section called “Reasignar particiones” (p. 99).

Expansión de un clúster mediante la Consola deadministración de AWS1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. Elija el Clúster de MSK cuyo número de agentes desee aumentar.3. En la página de detalles del clúster, elija la opción Edit situado junto a la Detalles del agente de nivel

de clúster del encabezado.4. Introduzca el número de agentes que desea que el clúster tenga por zona de disponibilidad y, a

continuación, elija . Save changes.

Expansión de un clúster mediante la AWS CLI1. Ejecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon

(ARN) que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarloenumerando todos los clústeres. Para obtener más información, consulte the section called “Listado declústeres de ” (p. 21).

Reemplazar Current-Cluster-Version con la versión actual del clúster.

Important

Las versiones de clúster no son enteros simples. Puede obtener la versión actualdescribiendo el clúster. Un ejemplo de ID de versión es KTVPDKIKX0DER.

La Target-Number-of-Brokers El parámetro representa el número total de nodos de agente quedesea que tenga el clúster cuando esta operación se complete correctamente. El valor que especifiquepara Target-Number-of-Brokers debe ser un número entero mayor que el número actual deagentes en el clúster. También debe ser un múltiplo del número de zonas de disponibilidad.

aws kafka update-broker-count --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-number-of-broker-nodes Target-Number-of-Brokers

26

Page 32: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Expansión de un clúster mediante la API

El resultado de esta operación update-broker-count se parece al siguiente JSON.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

2. Para obtener el resultado de la update-broker-count operación, ejecute el siguiente comando,reemplazando ClusterOperationArn con el ARN que obtuvo en la salida de la update-broker-count del comando.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

El resultado de este comando describe-cluster-operation tendrá un aspecto similar alsiguiente.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "INCREASE_BROKER_COUNT", "SourceClusterInfo": { "NumberOfBrokerNodes": 9 }, "TargetClusterInfo": { "NumberOfBrokerNodes": 12 } }}

En esta salida, OperationType es INCREASE_BROKER_COUNT. Si OperationState tiene el valorUPDATE_IN_PROGRESS, espere un momento y, a continuación, ejecute el describe-cluster-operation de nuevo.

Expansión de un clúster mediante la APIPara aumentar el número de agentes en un clúster mediante la API, vea UpdateBrokerCount.

Monitorización de un Clúster de Amazon MSKAmazon MSK reúne métricas de Apache Kafka y las envía a Amazon CloudWatch donde puede verlas.Para obtener más información acerca de las métricas de Apache Kafka, incluidas las que aparecen en lassuperficies de Amazon MSK, consulte Monitoring en la documentación de Apache Kafka.

También puede monitorear su Clúster de MSK con Prometheus, una aplicación de monitoreo de códigoabierto. Para obtener información acerca de Prometheus, consulte Overview en la documentación de

27

Page 33: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresNiveles de monitoreo de Amazon

MSK para métricas de CloudWatchPrometheus. Para obtener información sobre cómo monitorear el clúster con Prometheus, consulte thesection called “Monitoreo abierto con Prometheus” (p. 38).

Temas• Niveles de monitoreo de Amazon MSK para métricas de CloudWatch (p. 28)• Métricas de Amazon MSK para monitorear con CloudWatch (p. 28)• Visualización de métricas de Amazon MSK mediante CloudWatch (p. 34)• Comprobación de retraso del consumidor con Burrow (p. 35)• Monitoreo abierto con Prometheus (p. 38)

Niveles de monitoreo de Amazon MSK para métricasde CloudWatchAl crear un Clúster de Amazon MSK, puede definir el potenciaciónmonitorización propiedad a uno de lostres niveles de monitorización: DEFAULT, , PER_BROKER, o PER_TOPIC_PER_BROKER. Las tablas de lasiguiente sección muestran todas las métricas que Amazon MSK pone a su disposición a partir de cadanivel de monitorización.

Métricas de Amazon MSK para monitorear conCloudWatchAmazon MSK se integra con las métricas de Amazon CloudWatch para recopilar, ver y analizar lasmétricas de CloudWatch para Clúster de Amazon MSK. Las métricas configuradas para Clúster de MSK serecopilan y envían automáticamente a CloudWatch. Las tres tablas siguientes muestran las métricas queestán disponibles en cada uno de los tres niveles de supervisión.

Monitoreo de nivel DEFAULTLas métricas descritas en la tabla siguiente están disponibles en el nivel de monitorización DEFAULT. Songratis.

Métricas disponibles en el nivel de monitorización DEFAULT

Nombre Cuando está visible Dimensiones:Descripción

ActiveControllerCountDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster

Sólo debe estar activo en un momentodado un controlador por clúster.

CpuIdle Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El porcentaje de tiempo de inactividadde la CPU.

CpuSystem Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El porcentaje de CPU en el espacio delkernel.

CpuUser Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,

El porcentaje de CPU en el espacio deusuario.

28

Page 34: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch

Nombre Cuando está visible Dimensiones:DescripciónID delagente

GlobalPartitionCountDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster

Número total de particiones entre todoslos agentes en el clúster.

GlobalTopicCount Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster

Número total de temas entre todos losagentes del clúster.

KafkaAppLogsDiskUsedDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

Porcentaje de espacio en disco utilizadopara los registros de aplicaciones.

KafkaDataLogsDiskUsed(Cluster Name,Broker IDdimensión)

Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

Porcentaje de espacio en disco utilizadopara los registros de datos.

KafkaDataLogsDiskUsed(Cluster Namedimensión)

Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster

Porcentaje de espacio en disco utilizadopara los registros de datos.

MemoryBuffered Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoriaalmacenada en búfer para el agente.

MemoryCached Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoriaalmacenada en caché para el agente..

MemoryFree Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoria que estálibre y disponible para el agente.

MemoryUsed Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoria que estáen uso para el agente.

NetworkRxDropped Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de paquetes abandonadosdescartados.

29

Page 35: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch

Nombre Cuando está visible Dimensiones:Descripción

NetworkRxErrors Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de errores de recepción de lared para el agente.

NetworkRxPackets Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de paquetes recibidos por elagente.

NetworkTxDropped Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de paquetes de transmisióndescartados.

NetworkTxErrors Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de errores de transmisión dered para el agente.

NetworkTxPackets Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El número de paquetes transmitidos porel agente.

OfflinePartitionsCountDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster

Número total de particiones sin conexiónen el clúster.

RootDiskUsed Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El porcentaje del disco raíz utilizado porel agente.

SwapFree Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoria deintercambio que está disponible para elagente.

SwapUsed Después de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

El tamaño en bytes de memoria deintercambio que está en uso para elagente.

30

Page 36: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch

Nombre Cuando está visible Dimensiones:Descripción

ZooKeeperRequestLatencyMsMeanDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

Latencia media en milisegundos parasolicitudes ZooKeeper del agente.

ZooKeeperSessionStateDespués de que elclúster llegue al estadoACTIVE (Activo).

Nombredelclúster,ID delagente

Estado de conexión de la sesiónde zookeeper de corredor quepuede ser uno de los siguientes:NO CONECTADO: '0,0',ASOCIACIÓN: "0.1", CONEXIÓN: '0,5',CONECTOSÓLO: "0,8', CONECTADO:CERRADO: '5.0', AUTH_FAILED: ~ 10.0

Monitoreo de nivel PER_BROKERAl establecer el nivel de supervisión en PER_BROKER, obtendrá las métricas descritas en la tabla siguienteademás de todas las métricas a nivel de DEFAULT. Usted paga por las métricas de la tabla siguiente,mientras que las métricas a nivel DEFAULT siguen siendo gratuitas. Los indicadores de esta tabla tienenlas siguientes dimensiones: Nombre del clúster, ID del agente

Métricas adicionales disponibles a partir del nivel de supervisión PER_BROKER

Nombre Cuando está visible Descripción

BytesInPerSec Después de crear untema.

El número de bytes por segundo recibidosde los clientes.

BytesOutPerSec Después de crear untema.

El número de bytes por segundo enviadosa los clientes.

ReplicationBytesInPerSec Después de crear untema.

Número de bytes por segundo recibidosde otros agentes.

ReplicationBytesOutPerSec Después de crear untema.

Número de bytes por segundo enviados aotros agentes.

FetchConsumerLocalTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del consumidor se procesa en ellíder.

FetchConsumerRequestQueueTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del consumidor espera en la colade solicitudes.

FetchConsumerResponseQueueTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del consumidor espera en la colade respuesta.

FetchConsumerResponseSendTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos para queel consumidor envíe una respuesta.

FetchConsumerTotalTimeMsMeanDespués de quehaya un productor/consumidor.

El tiempo total medio en milisegundosque los consumidores gastan en obtenerdatos del agente.

31

Page 37: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch

Nombre Cuando está visible Descripción

FetchFollowerLocalTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del seguidor se procesa en ellíder.

FetchFollowerRequestQueueTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del seguidor espera en la cola desolicitudes.

FetchFollowerResponseQueueTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos que lasolicitud del seguidor espera en la cola derespuesta.

FetchFollowerResponseSendTimeMsMeanDespués de quehaya un productor/consumidor.

Tiempo medio en milisegundos para queel seguidor envíe una respuesta.

FetchFollowerTotalTimeMsMeanDespués de quehaya un productor/consumidor.

El tiempo total medio en milisegundos quelos seguidores gastan en obtener datosdel agente.

FetchMessageConversionsPerSecDespués de crear untema.

El número de conversiones de mensajesde recuperación por segundo para elagente.

FetchThrottleByteRate Después de aplicar lalimitación del ancho debanda.

El número de bytes acelerados porsegundo.

FetchThrottleQueueSize Después de aplicar lalimitación del ancho debanda.

El número de mensajes en la cola delacelerador.

FetchThrottleTime Después de aplicar lalimitación del ancho debanda.

El tiempo promedio de aceleración derecuperación en milisegundos.

LeaderCount Después de que elclúster llegue al estadoACTIVE (Activo).

El número de réplicas de directriz.

MessagesInPerSec Después de que elclúster llegue al estadoACTIVE (Activo).

El número de mensajes entrantes porsegundo para el agente.

NetworkProcessorAvgIdlePercentDespués de que elclúster llegue al estadoACTIVE (Activo).

Porcentaje medio del tiempo en que losprocesadores de red están inactivos.

PartitionCount Después de que elclúster llegue al estadoACTIVE (Activo).

El número de particiones para el agente.

ProduceLocalTimeMsMean Después de que elclúster llegue al estadoACTIVE (Activo).

Tiempo medio en milisegundos para queel seguidor envíe una respuesta.

32

Page 38: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Métricas de Amazon MSK para monitorear con CloudWatch

Nombre Cuando está visible Descripción

ProduceMessageConversionsPerSecDespués de crear untema.

El número de conversiones de mensajesde generación por segundo para elagente.

ProduceMessageConversionsTimeMsMeanDespués de que elclúster llegue al estadoACTIVE (Activo).

Tiempo medio en milisegundos invertidoen conversiones de formato de mensaje.

ProduceRequestQueueTimeMsMeanDespués de que elclúster llegue al estadoACTIVE (Activo).

Tiempo medio en milisegundos que losmensajes de solicitud pasan en la cola.

ProduceResponseQueueTimeMsMeanDespués de que elclúster llegue al estadoACTIVE (Activo).

Tiempo medio en milisegundos que pasanlos mensajes de respuesta en la cola.

ProduceResponseSendTimeMsMeanDespués de que elclúster llegue al estadoACTIVE (Activo).

Tiempo medio en milisegundos dedicadoal envío de mensajes de respuesta.

ProduceThrottleByteRate Después de aplicar lalimitación del ancho debanda.

El número de bytes acelerados porsegundo.

ProduceThrottleQueueSize Después de aplicar lalimitación del ancho debanda.

El número de mensajes en la cola delacelerador.

ProduceThrottleTime Después de aplicar lalimitación del ancho debanda.

El tiempo promedio de producción delacelerador en milisegundos.

ProduceTotalTimeMsMean Después de que elclúster llegue al estadoACTIVE (Activo).

El tiempo medio de producción enmilisegundos.

RequestBytesMean Después de que elclúster llegue al estadoACTIVE (Activo).

El número medio de bytes de solicitudpara el agente.

RequestExemptFromThrottleTimeDespués de aplicar lalimitación de solicitudes.

El tiempo promedio en milisegundosempleado en la red del agente ysubprocesos de E/S para procesarsolicitudes que están exentas delimitación.

RequestHandlerAvgIdlePercentDespués de que elclúster llegue al estadoACTIVE (Activo).

El porcentaje medio del tiempo en quelos subprocesos del controlador desolicitudes están inactivos.

RequestThrottleQueueSize Después de aplicar lalimitación de solicitudes.

El número de mensajes en la cola delacelerador.

RequestThrottleTime Después de aplicar lalimitación de solicitudes.

El tiempo medio de aceleración de lasolicitud en milisegundos.

33

Page 39: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Visualización de métricas deAmazon MSK mediante CloudWatch

Nombre Cuando está visible Descripción

RequestTime Después de aplicar lalimitación de solicitudes.

El tiempo promedio en milisegundosempleado en la red de agentes ysubprocesos de E/S para procesarsolicitudes.

UnderMinIsrPartitionCount Después de que elclúster llegue al estadoACTIVE (Activo).

El número de particiones bajo minIsr parael agente.

UnderReplicatedPartitions Después de que elclúster llegue al estadoACTIVE (Activo).

El número de particiones infrareplicadaspara el agente.

Monitoreo de nivel PER_TOPIC_PER_BROKERAl establecer el nivel de supervisión en PER_TOPIC_PER_BROKER, obtiene los indicadores descritos enla tabla siguiente, además de todos los indicadores de la PER_BROKER y PREDETERMINADO niveles.Solo las métricas de nivel DEFAULT son gratuitas. Los indicadores de esta tabla tienen las siguientesdimensiones: Nombre del clúster, ID del agente, Tema

Important

Para un Clúster de Amazon MSK que utiliza Apache Kafka 2.4.1 o una versión más reciente, lasmétricas de la siguiente tabla aparecen solo después de que sus valores sean distintos de ceropor primera vez. Por ejemplo, para ver BytesInPerSec, uno o más productores deben enviardatos al clúster en primer lugar.

Métricas adicionales disponibles a partir del nivel de supervisión PER_TOPIC_PER_BROKER

Nombre Cuando estávisible

Descripción

BytesInPerSec Después de crearun tema.

El número de bytes recibidos por segundo.

BytesOutPerSec Después de crearun tema.

El número de bytes enviados por segundo.

FetchMessageConversionsPerSecDespués de crearun tema.

El número de mensajes recuperados convertidospor segundo.

MessagesInPerSec Después de crearun tema.

El número de mensajes recibidos por segundo.

ProduceMessageConversionsPerSecDespués de crearun tema.

El número de conversiones por segundo para losmensajes producidos.

Visualización de métricas de Amazon MSK medianteCloudWatchLas métricas de Amazon MSK se pueden monitorear con la consola de CloudWatch, la línea de comandoso la API de CloudWatch. Los siguientes procedimientos le muestran cómo obtener acceso a las métricas através de los distintos métodos descritos a continuación.

34

Page 40: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Comprobación de retraso del consumidor con Burrow

Para obtener acceso a las métricas mediante la consola de CloudWatch

Inicie sesión en la Consola de administración de AWS y abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

1. En el panel de navegación, seleccione Metrics.2. Seleccione la pestaña All metrics (Todas las métricas) y, a continuación, seleccione AWS/Kafka.3. Para ver métricas a nivel de tema, elija Topic, Broker ID, Cluster Name (Tema, Identificador

de Agente, Nombre de Clúster); para métricas a nivel de agente, elija Broker ID, Cluster name(Identificador de agente, Nombre de clúster); y para métricas a nivel de clúster, elija Cluster Name(Nombre de clúster).

4. (Opcional) En el panel de gráficos, seleccione una estadística y un periodo de tiempo y, acontinuación, cree una alarma de CloudWatch utilizando estos ajustes.

Para obtener acceso a las métricas mediante la AWS CLI

Utilice los comandos list-metrics y get-metric-statistics.

Para obtener acceso a las métricas mediante la CLI de CloudWatch

Utilice los comandos mon-list-metrics y mon-get-stats.

Para obtener acceso a las métricas mediante la API de CloudWatch

Utilice las operaciones ListMetrics y GetMetricStatistics.

Comprobación de retraso del consumidor con BurrowBurrow es un compañero de monitoreo para Apache Kafka que proporciona control de retraso delconsumidor. Burrow tiene un diseño modular que incluye los siguientes subsistemas:

• Los clústeres ejecutan un cliente Apache Kafka que actualiza periódicamente las listas de temas y eldesplazamiento HEAD actual (el desplazamiento más reciente) para cada partición.

• Los consumidores obtienen información sobre grupos de consumidores de un repositorio. Esterepositorio puede ser un clúster de Apache Kafka (consumiendo el tema __consumer_offsets),ZooKeeper o algún otro repositorio.

• El subsistema de almacenamiento almacena toda esta información en Burrow.• El subsistema evaluador recupera información del subsistema de almacenamiento para un grupo de

consumidores específico y calcula el estado de dicho grupo. Esto sigue las reglas de evaluación delretraso del consumidor.

• El subsistema del notificador solicita el estado de los grupos de consumidores según un intervaloconfigurado y envía notificaciones (correo electrónico, HTTP u otro método) para los grupos quecumplen los criterios configurados.

• El subsistema HTTP Server proporciona una interfaz API a Burrow para obtener información sobreclústeres y consumidores.

Para obtener más información sobre Burrow, consulte Burrow - Kafka Consumer Lag Checking.

Important

Asegúrese de que Burrow sea compatible con la versión de Apache Kafka que está utilizandopara su clúster de MSK.

35

Page 41: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Comprobación de retraso del consumidor con Burrow

Para configurar y usar Burrow con Amazon MSK

Siga este procedimiento si usa comunicación de texto no cifrado. Para TLS, consulte también el siguienteprocedimiento.

1. Cree un Clúster de MSK e inicie un equipo del cliente en la misma VPC que el clúster. Por ejemplo,puede seguir las instrucciones en Introducción (p. 4).

2. Ejecute el siguiente comando en la instancia de EC2 que sirve como equipo para su cliente.

sudo yum install go

3. Ejecute el siguiente comando en el equipo del cliente para obtener el proyecto de Burrow.

go get github.com/linkedin/Burrow

4. Ejecute el siguiente comando para instalar dep. Se instala en la carpeta /home/ec2-user/go/bin/dep.

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

5. Vaya a la carpeta /home/ec2-user/go/src/github.com/linkedin/Burrow y ejecute elsiguiente comando.

/home/ec2-user/go/bin/dep ensure

6. Ejecute el siguiente comando en la misma carpeta.

go install

7. Abra el archivo de configuración /home/ec2-user/go/src/github.com/linkedin/Burrow/config/burrow.toml para editarlo. En las siguientes secciones del archivo de configuración,reemplace los marcadores de posición con el nombre de su Clúster de MSK, los pares host:port paralos servidores ZooKeeper y los agentes de arranque.

Para obtener el host de zookeeper:pares de puertos, describir su clúster MSK y buscar el valor deZookeeperConnectString. Ver the section called “Obtención de la cadena de conexión ApacheZooKeeper” (p. 19).

Para obtener sus agentes de arranque, vea the section called “Obtención de los agentes dearranque” (p. 21).

Siga el formato que se muestra a continuación al editar el archivo de configuración.

[zookeeper]servers=[ "ZooKeeper-host-port-pair-1", "ZooKeeper-host-port-pair-2", "ZooKeeper-host-port-pair-3" ]timeout=6root-path="/burrow"

[client-profile.test]client-id="burrow-test"kafka-version="0.10.0"

[cluster.MSK-cluster-name]class-name="kafka"servers=[ "bootstrap-broker-host-port-pair-1", "bootstrap-broker-host-port-pair-2", "bootstrap-broker-host-port-pair-3" ]client-profile="test"topic-refresh=120

36

Page 42: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Comprobación de retraso del consumidor con Burrow

offset-refresh=30

[consumer.MSK-cluster-name]class-name="kafka"cluster="MSK-cluster-name"servers=[ "bootstrap-broker-host-port-pair-1", "bootstrap-broker-host-port-pair-2", "bootstrap-broker-host-port-pair-3" ]client-profile="test"group-blacklist="^(console-consumer-|python-kafka-consumer-|quick-).*$"group-whitelist=""

8. En la carpeta go/bin ejecute el siguiente comando.

./Burrow --config-dir /home/ec2-user/go/src/github.com/linkedin/Burrow/config

9. Compruebe si hay errores en el archivo bin/log/burrow.log.10. Puede utilizar el siguiente comando para probar la configuración.

curl -XGET 'HTTP://your-localhost-ip:8000/v3/kafka'

11. Para ver todas las solicitudes y vínculos HTTP compatibles, consulte Punto de enlace HTTP deBurrow.

Para usar Burrow con TLS

Además del procedimiento anterior, consulte los siguientes pasos si utiliza la comunicación TLS.

1. Ejecute el comando siguiente.

sudo yum install java-1.8.0-openjdk-devel -y

2. Ejecute el siguiente comando después de ajustar las rutas según sea necesario.

find /usr/lib/jvm/ -name "cacerts" -exec cp {} /tmp/kafka.client.truststore.jks \;

3. En el siguiente paso use el comando keytool, que solicita una contraseña. La contraseñapredeterminada es changeit. Le recomendamos que ejecute el siguiente comando para cambiar lacontraseña antes de continuar con el paso siguiente.

keytool -keystore /tmp/kafka.client.truststore.jks -storepass changeit -storepasswd -new Password

4. Ejecute el comando siguiente.

keytool --list -rfc -keystore /tmp/kafka.client.truststore.jks >/tmp/truststore.pem

Necesita truststore.pem para el archivo burrow.toml que se describe más adelante en esteprocedimiento.

5. Para generar el certfile y el keyfile, utilice el código de Gestión de certificados de clientes paraautenticación mutua con Amazon MSK. Necesita la marca pem.

6. Configure su archivo burrow.toml como en el siguiente ejemplo. Puede tener varias secciones declústeres y consumidores para supervisar varios clústeres de MSK con un clúster de Burrow. Tambiénpuede ajustar la versión de Apache Kafka en client-profile. Representa la versión del cliente deApache Kafka para apoyar. Para obtener más información, consulte Perfil del cliente en el GitHub deBurrow.

[general]

37

Page 43: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Monitoreo abierto con Prometheus

pidfile="burrow.pid"stdout-logfile="burrow.out" [logging]filename="/tmp/burrow.log"level="info"maxsize=100maxbackups=30maxage=10use-localtime=falseuse-compression=true [zookeeper]servers=[ "ZooKeeperConnectionString" ]timeout=6root-path="/burrow" [client-profile.msk1-client]client-id="burrow-test"tls="msk-mTLS"kafka-version="2.0.0" [cluster.msk1]class-name="kafka"servers=[ "BootstrapBrokerString" ]client-profile="msk1-client"topic-refresh=120offset-refresh=30 [consumer.msk1-cons]class-name="kafka"cluster="msk1"servers=[ "BootstrapBrokerString" ]client-profile="msk1-client"group-blacklist="^(console-consumer-|python-kafka-consumer-|quick-).*$"group-whitelist="" [httpserver.default]address=":8000" [storage.default]class-name="inmemory"workers=20intervals=15expire-group=604800min-distance=1 [tls.msk-mTLS]certfile="/tmp/client_cert.pem"keyfile="/tmp/private_key.pem"cafile="/tmp/truststore.pem"noverify=false

Monitoreo abierto con PrometheusPuede monitorear su Clúster de MSK con Prometheus, un sistema de monitoreo de código abierto paradatos de métricas de series temporales. También puede utilizar herramientas compatibles con métricasformateadas de Prometheus o herramientas que se integren con el monitoreo abierto de Amazon MSK,como Datadog, Lenses, New Relic y Sumo logic. El monitoreo abierto está disponible de forma gratuita,pero se aplican cargos por la transferencia de datos a través de las zonas de disponibilidad. Para obtenerinformación sobre Prometheus, consulte la documentación de Prometheus.

38

Page 44: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Monitoreo abierto con Prometheus

Creación de un Clúster de Amazon MSK con monitoreo abiertohabilitadoUso del Consola de administración de AWS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSK en https://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

2. En la sección Monitoring (Monitoreo) marque la casilla de verificación situada junto a Enable openmonitoring with Prometheus (Habilitar monitoreo abierta con Prometheus).

3. Proporcione la información requerida en todas las secciones de la página y revise todas las opcionesdisponibles.

4. Elija . Create cluster.

Uso del AWS CLI

• Invoque el comando create-cluster y especifique su opción open-monitoring. HabiliteJmxExporter, NodeExporter, o ambos. Si especifica open-monitoring, no se pueden desactivarlos dos exportadores al mismo tiempo.

Uso de la API

• Invocar el createcluster operación y especificar OpenMonitoring. Activar el jmxExporter,la nodeExporter, o ambos. Si especifica OpenMonitoring, no se pueden desactivar los dosexportadores al mismo tiempo.

Habilitación del monitoreo abierto para un Clúster de AmazonMSK existentePara habilitar el monitoreo abierto, asegúrese de que el clúster está en el estado ACTIVE.

Uso del Consola de administración de AWS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSK en https://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

2. Elija el nombre del clúster que desea actualizar. Esto le lleva a la página Details (Detalles) del clúster.3. En la pestaña Details (Detalles) desplácese hacia abajo para buscar la sección Monitoring (Monitoreo).4. Elija . Edit.5. Marque la casilla de verificación situada junto a Enable open monitoring with Prometheus (Habilitar el

monitoreo abierto con Prometheus).6. Elija . Save changes.

Uso del AWS CLI

• Invoque el comando update-monitoring y especifique su opción open-monitoring. HabiliteJmxExporter, NodeExporter, o ambos. Si especifica open-monitoring, no se pueden desactivarlos dos exportadores al mismo tiempo.

39

Page 45: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Monitoreo abierto con Prometheus

Uso de la API

• Invocar el actualizaciónconfiguración operación y especificar OpenMonitoring. Activar eljmxExporter, la nodeExporter, o ambos. Si especifica OpenMonitoring, no se puedendesactivar los dos exportadores al mismo tiempo.

Configuración de un host de Prometheus en una instanciaAmazon EC21. Descargue el servidor de Prometheus de https://prometheus.io/download/#prometheus a su instancia

Amazon EC2.2. Extraiga el archivo descargado en un directorio y vaya a ese directorio.3. Cree un archivo con el siguiente contenido y llámelo prometheus.yml.

# file: prometheus.yml# my global configglobal: scrape_interval: 10s

# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' static_configs: # 9090 is the prometheus server port - targets: ['localhost:9090'] - job_name: 'broker' file_sd_configs: - files: - 'targets.json'

4. Utilice la operación ListNodes para obtener una lista de los agentes del clúster.5. Cree un archivo llamado targets.json con el siguiente JSON. Reemplazar broker_dns_1,

broker_dns_2y el resto de los nombres DNS del agente con los nombres DNS que obtuvo para suscorredores en el paso anterior. Incluya todos los agentes que obtuvo en el paso anterior. Amazon MSKutiliza el puerto 11001 para el JMX Exporter y el puerto 11002 para el Node Exporter.

[ { "labels": { "job": "jmx" }, "targets": [ "broker_dns_1:11001", "broker_dns_2:11001", . . . "broker_dns_N:11001" ] }, { "labels": { "job": "node" }, "targets": [ "broker_dns_1:11002",

40

Page 46: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Reinicio de un agente para un clúster

"broker_dns_2:11002", . . . "broker_dns_N:11002" ] }]

6. Para iniciar el servidor Prometheus en su instancia Amazon EC2, ejecute el siguiente comando en eldirectorio donde extrajo los archivos Prometheus y guardó prometheus.yml y targets.json.

./prometheus

7. Busque la dirección IP pública IPv4 de la instancia Amazon EC2 en la que ejecutó Prometheus en elpaso anterior. Necesitará esta dirección IP pública en el siguiente paso.

8. Para acceder a la interfaz de usuario web de Prometheus, abra un navegador que pueda accedera su Amazon EC2 y vaya a Prometheus-Instance-Public-IP:9090, donde Prometheus-Instance-Public-IP es la dirección IP pública que ha obtenido en el paso anterior.

Métricas de PrometheusSe puede acceder a todas las métricas emitidas por Apache Kafka a JMX mediante el monitoreo abiertocon Prometheus. Para obtener información acerca de las métricas de Apache Kafka, consulte Monitoringen la documentación de Apache Kafka. Además, puede usar el Node Exporter de Prometheus paraobtener métricas de CPU y disco para los nodos de agente.

Reinicio de un agente para un Clúster de AmazonMSK

Utilice este Amazon MSK cuando quieras reiniciar un agente para tu Clúster de MSK. Para reiniciar unagente para un clúster, asegúrese de que el clúster en el ACTIVE.

El Amazon MSK puede reiniciar los corredores para su Clúster de MSK durante el mantenimiento delsistema, como revisiones de parches o versiones. Reiniciar manualmente un agente le permite comprobarla resistencia de sus clientes Kafka para determinar cómo responden al mantenimiento del sistema.

Reinicio de un agente usando el AWS CLI1. Ejecutar el siguiente comando, sustituir ClusterArn con el nombre de recursos de Amazon (ARN)

que obtuvo cuando creó el clúster y el BrokerArn con el ARN del agente que desea reiniciar.

Note

El reboot-broker la operación solo admite reinicializar un agente.

Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtenermás información, consulte the section called “Listado de clústeres de ” (p. 21).

Si no tiene las ID de agente para su clúster, puede encontrarlo enumerando los nodos de agente. Paraobtener más información, consulte nodos de lista.

aws kafka reboot-broker --cluster-arn ClusterArn --broker-ids "1"

41

Page 47: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresReinicio de un agente con la API

El resultado de esta operación reboot-broker se parece al siguiente JSON.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

2. Para obtener el resultado de reboot-broker funcionamiento, ejecutar el siguiente comando, sustituirClusterOperationArn con el ARN que obtuvo en la salida del reboot-broker comando.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

El resultado de este comando describe-cluster-operation tendrá un aspecto similar alsiguiente.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "REBOOT_IN_PROGRESS", "OperationType": "REBOOT_NODE", "SourceClusterInfo": {}, "TargetClusterInfo": {} }}

Una vez finalizada la operación de reinicio, el OperationState es REBOOT_COMPLETE.

Reinicio de un agente con la APIPara reiniciar un agente en un clúster utilizando la API, consulte rebootóker.

Etiquetado de Clúster de Amazon MSKPuede asignar sus propios metadatos en forma de etiquetas a un recurso Amazon MSK, como un Clústerde MSK. Una etiqueta es un par clave-valor definido por el usuario para un recurso. El uso de las etiquetases una forma sencilla y potente para administrar los recursos de AWS y organizar los datos, incluidos losdatos de facturación.

Temas• Conceptos básicos de etiquetas (p. 43)• Seguimiento de costos utilizando el etiquetado (p. 43)• Restricciones de las etiquetas (p. 43)• Etiquetado de recursos mediante la API Amazon MSK (p. 44)

42

Page 48: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConceptos básicos de etiquetas

Conceptos básicos de etiquetasPuede utilizar la API de Amazon MSK para realizar las siguientes tareas:

• Agregar etiquetas a un recurso Amazon MSK.• Mostrar las etiquetas de un recurso Amazon MSK.• Quitar etiquetas de un recurso Amazon MSK.

Puede utilizar etiquetas para categorizar sus recursos Amazon MSK. Por ejemplo, puede categorizar susclústeres Amazon MSK según su finalidad, propietario o entorno. Dado que define la clave y el valor decada etiqueta, puede crear un conjunto de categorías personalizadas para satisfacer sus necesidadesespecíficas. Por ejemplo, podría definir un conjunto de etiquetas que le ayude a realizar un seguimiento delos clústeres por propietario y aplicaciones asociadas.

A continuación, se muestran varios ejemplos de etiquetas:

• Project: Project name

• Owner: Name

• Purpose: Load testing

• Environment: Production

Seguimiento de costos utilizando el etiquetadoPuede utilizar etiquetas para categorizar y hacer un seguimiento de los costos de AWS. Cuando se aplicanetiquetas a los recursos de AWS, incluidos los clústeres de Amazon MSK, el informe de asignación decostos de AWS incluye el uso y los costos agregados por etiquetas. Si aplica etiquetas que representencategorías de negocio (por ejemplo, centros de costos, nombres de aplicaciones o propietarios), puedeorganizar los costos entre diferentes servicios. Para obtener más información, consulte Uso de etiquetasde asignación de costos para informes de facturación personalizados en la Guía del usuario de AWS Billingand Cost Management.

Restricciones de las etiquetasSe aplican las siguientes restricciones a las etiquetas en Amazon MSK.

Restricciones básicas

• El número máximo de etiquetas por recurso es 50.• Las claves y los valores de las etiquetas distinguen entre mayúsculas y minúsculas.• No se pueden cambiar ni editar etiquetas de un recurso eliminado.

Limitaciones de clave de etiqueta

• Cada clave de etiqueta debe ser única. Si añade una etiqueta con una clave que ya está en uso, lanueva etiqueta sobrescribe el par clave-valor existente.

• Una clave de etiqueta no puede comenzar por aws: porque este prefijo está reservado para su usopor AWS. AWS crea etiquetas cuyo nombre comienza por este prefijo por usted, pero usted no puedeeditarlas ni eliminarlas.

• Las claves de etiqueta deben tener entre 1 y 128 caracteres Unicode de longitud.• Las claves de etiquetas debe constar de los siguientes caracteres: letras Unicode, números, espacios en

blanco y los siguientes caracteres especiales: _ . / = + - @.

43

Page 49: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Etiquetado de recursos mediante la API Amazon MSK

Restricciones de valor de etiqueta

• Los valores de etiqueta deben tener entre 0 y 255 caracteres Unicode de longitud.• Los valores de etiqueta pueden estar en blanco. De lo contrario, deben constar de los siguientes

caracteres: letras Unicode, números, espacios en blanco y cualquiera de los siguientes caracteresespeciales: _ . / = + - @.

Etiquetado de recursos mediante la API Amazon MSKPuede utilizar las siguientes operaciones para etiquetar o desetiquetar un recurso Amazon MSK o paraenumerar el conjunto actual de etiquetas de un recurso:

• ListTagsForResource• TagResource• UntagResource

44

Page 50: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Configuración de Amazon MSKAmazon MSK ofrece una configuración predeterminada para agentes, temas y nodos de ApacheZooKeeper. También puede crear configuraciones personalizadas y utilizarlas para crear nuevos clústeresde MSK o para actualizar clústeres existentes. Una configuración de MSK está compuesta por un conjuntode propiedades y sus valores correspondientes.

Temas• Configuraciones personalizadas de MSK (p. 45)• Configuración predeterminada de Amazon MSK (p. 51)• Operaciones de configuración de Amazon MSK (p. 54)

Configuraciones personalizadas de MSKAmazon MSK le permite crear una configuración de MSK personalizada en la que se establecen lassiguientes propiedades. Las propiedades que no se establecen de forma explícita obtienen los valoresque tienen en the section called “Configuración predeterminada” (p. 51). Para obtener más informaciónacerca de las propiedades de configuración, consulte Configuración de Apache Kafka.

Propiedades de configuración de Apache Kafka que se pueden establecer

Nombre Descripción

auto.create.topics.enable Habilita la creación automática de temas en elservidor.

compression.type El tipo de compresión final para un temadeterminado. Puede establecer esta propiedaden los códecs de compresión estándar (gzip,snappy, lz4 y zstd). Además, admiteuncompressed, que es el equivalente a sincomprimir, y producer, que supone que laconservación del códec de compresión original queha establecido el productor.

default.replication.factor El factor de replicación predeterminado de lostemas que se han creado automáticamente.

delete.topic.enable Habilita la operación para eliminar un tema. Siesta configuración está desactivada, no puedeeliminar un tema a través de la herramienta deadministración.

group.initial.rebalance.delay.ms Cantidad de tiempo que el coordinador del grupoespera para que otros consumidores se unana un nuevo grupo antes de llevar a cabo elprimer reequilibrio. Un retraso superior implicaposiblemente menos reequilibrios, pero aumenta eltiempo hasta que el procesamiento comienza.

group.max.session.timeout.ms Tiempo de espera máximo de la sesión para losconsumidores registrados. Unos tiempos de esperasuperiores proporcionan a los consumidores más

45

Page 51: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Nombre Descripcióntiempo para procesar los mensajes entre latidos,pero se requiere más tiempo para detectar errores.

group.min.session.timeout.ms Tiempo de espera mínimo de la sesión para losconsumidores registrados. Unos tiempos deespera inferiores se traducen en una detecciónde errores más rápida, pero se requieren latidosde consumidores más frecuentes, lo que puedesobrecargar los recursos del agente.

leader.imbalance.per.broker.percentage La proporción de desequilibrio del líder permitidapor agente. El controlador activa un equilibrio dellíder si está por encima de este valor por agente.Este valor se especifica en porcentaje.

log.cleaner.delete.retention.ms Cantidad de tiempo que desea que Apache Kafkaconserve los registros eliminados. El valor mínimoes 0.

log.cleaner.min.cleanable.ratio Esta propiedad de configuración puede tenervalores entre 0 y 1. Determina la frecuenciacon la que el compactador de registrosintenta limpiar el registro (suponiendo que lacompactación de registros esté habilitada). Deforma predeterminada, Apache Kafka evita limpiarun registro en el que más del 50 % del registrose ha compactado. Esta relación limita el espaciomáximo desperdiciado en el registro por duplicados(al 50 %, lo que significa que como máximo el50 % del registro podría estar duplicado). Unamayor proporción significa menos limpiezas máseficientes, pero más espacio desperdiciado en elregistro.

log.cleanup.policy La política de limpieza predeterminada de lossegmentos que superan el periodo de retención.Una lista de políticas válidas separadas por comas.Las políticas válidas son delete y compact.

log.flush.interval.messages Número de mensajes acumulados en una particiónde registro antes de que se vacíen en el disco.

log.flush.interval.ms Tiempo máximo en milisegundos que un mensajede cualquier tema se conserva en la memoriaantes de vaciarlo en el disco. Si no se establece,se utiliza el valor de log.flush.scheduler.interval.ms.El valor mínimo es 0.

log.retention.bytes Tamaño máximo del registro antes de eliminarlo.

log.retention.hours Número de horas que se conserva un archivo deregistro antes de eliminarlo, cantidad terciaria de lapropiedad log.retention.ms.

46

Page 52: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Nombre Descripción

log.retention.minutes Número de minutos que se conserva un archivo deregistro antes de eliminarlo, cantidad secundariade la propiedad log.retention.ms. Si no seestablece, se utiliza el valor de log.retention.hours.

log.retention.ms Número de milisegundos que se conservaun archivo de registro antes de eliminarlo (enmilisegundos). Si no se establece, se utiliza el valorde log.retention.minutes.

log.roll.ms Tiempo máximo antes de que un segmento deregistro nuevo se implemente (en milisegundos).Si no establece esta propiedad, el valor enlog.roll.hours se utiliza. El valor mínimo posiblepara esta propiedad es 1.

log.segment.bytes Tamaño máximo de un único archivo de registro.

max.incremental.fetch.session.cache.slots Número máximo de sesiones de recuperaciónincrementales que se conservan.

message.max.bytes Tamaño de lote de registros más grande queadmite Kafka. Si este tamaño aumenta y hayconsumidores anteriores a 0.10.2, el tamaño derecuperación de los consumidores también se tieneque aumentar para que se puedan recuperar lotesde registros de este tamaño.

En la versión de formato de mensaje más reciente,los registros siempre se agrupan en lotes paraaumentar la eficacia. En versiones de formato demensaje anteriores, los registros sin comprimirno se agrupan en lotes y este límite se aplicaúnicamente a un solo registro en este caso.

Este parámetro se puede establecer portema con la configuración de nivel de temamax.message.bytes.

log.message.marca de tiempo.diferencia.máx.ms Diferencia máxima permitida entre lamarca temporal que se produce cuandoun agente recibe un mensaje y la marcatemporal que se especifica en el mensaje. Silog.message.timestamp.type=CreateTime,se rechaza un mensaje si la diferenciaen la marca temporal supera esteumbral. Esta configuración se ignora silog.message.timestamp.type=LogAppendTime.

log.message.marca de tiempo. Especifica si la marca temporal del mensaje esla hora de creación del mensaje o la hora deadición del registro. Los valores permitidos sonCreateTime y LogAppendTime.

47

Page 53: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Nombre Descripción

min.insync.replicas Cuando un productor establece las confirmacionesen "all" (o "-1"), min.insync.replicas especificael número mínimo de réplicas que debe confirmaruna escritura para que se considere como correcta.Si este mínimo no se puede cumplir, el productoremite una excepción (NotEnoughReplicas oNotEnoughReplicasAfterAppend).

Cuando se utilizan de forma conjunta,min.insync.replicas y las confirmaciones lepermiten aplicar unas garantías de durabilidadmayores. Un escenario típico sería crear un temacon un factor de replicación de 3, establecermin.insync.replicas en 2 y producir con acks de"all". Esto garantiza que el productor genere unaexcepción si la mayoría de las réplicas no recibenuna escritura.

num.io.threads El número de subprocesos que utiliza el servidorpara procesar las solicitudes, puede incluir la E/Sdel disco.

num.network.threads El número de subprocesos que utiliza el servidorpara recibir solicitudes desde la red y enviar lasrespuestas a dichas solicitudes.

num.recovery.threads.per.data.dir El número de subprocesos por directorio dedatos que se va a utilizar para la recuperación deregistros en el arranque y para el vaciado en elapagado.

num.replica.fetchers El número de subprocesos del recuperador quese utilizan para replicar los mensajes desde unagente de origen. El aumento de este valor puedeincrementar el grado de paralelismo de E/S delagente del seguidor.

num.partitions Número predeterminado de particiones de registropor tema.

offsets.retention.minutes Después de que un grupo de consumidorespierda todos sus consumidores (es decir, sequede vacío), sus compensaciones se conservandurante este periodo de retención antes de que sedescarten. Para los consumidores independientes(es decir, los que utilizan asignación manual), lascompensaciones expiran después de la hora de laúltima confirmación más este periodo de retención.

offsets.topic.replication.factor El factor de replicación para el tema de lascompensaciones (establecer en un nivel elevadopara asegurar la disponibilidad). Se produce unerror en la creación del tema interno hasta que eltamaño del clúster cumpla este requisito de factorde replicación.

48

Page 54: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Nombre Descripción

replica.fetch.max.bytes Número de bytes de los mensajes para intentarrecuperar cada partición. Esto no es un valormáximo absoluto. Si el primer lote de registrosde la primera partición que no está vacía de larecuperación es superior a este valor, el lote deregistros se devuelve para asegurar que se llevaa cabo el progreso. El tamaño de lote de registromáximo que acepta el agente se define a través demessage.max.bytes (configuración del agente) omax.message.bytes (configuración del tema).

replica.fetch.response.max.bytes El número máximo de bytes previsto para larespuesta de recuperación completa. Los registrosse recuperan en lotes y si el primer lote de registrode la primera partición que no está vacía de larecuperación es superior a este valor, el lote deregistro se devolverá para asegurar que se llevaa cabo el progreso. Esto no es un valor máximoabsoluto. Las propiedades message.max.bytes(configuración del agente) o max.message.bytes(configuración del tema) especifican el tamaño delote de registro máximo que acepta el agente.

replica.lag.time.max.ms Si un seguidor no ha enviado ninguna solicitudde recuperación o no ha consumido hasta lacompensación final del registro del líder duranteal menos este número de milisegundos, el líderelimina el seguidor del ISR.

MinValue 10000*

MaxValue (incluido) = 30000

socket.receive.buffer.bytes El búfer SO_RCVBUF de los sockets del servidorsocket. El valor mínimo al que puede estableceresta propiedad es -1. Si el valor es -1, AmazonMSK utiliza el valor predeterminado del sistemaoperativo.

socket.request.max.bytes El número máximo de bytes de una solicitud deconector.

socket.send.buffer.bytes El búfer SO_SNDBUF de los sockets del servidorsocket. El valor mínimo al que puede estableceresta propiedad es -1. Si el valor es -1, AmazonMSK utiliza el valor predeterminado del sistemaoperativo.

49

Page 55: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguraciones personalizadas

Nombre Descripción

replica.selector.class El nombre de clase completo que implementaReplicaSelector. El agente lo utiliza para encontrarla réplica de lectura preferida. Si utiliza ApacheKafka versión 2.4.1 o superior y desea permitirque los consumidores obtengan datos de laréplica más cercana, establezca esta propiedad enorg.apache.kafka.common.replica.RackAwareReplicaSelector.Para obtener más información, consulte the sectioncalled “Versión 2.4.1 de Apache Kafka” (p. 87).

replica.socket.receive.buffer.bytes El búfer de recepción de sockets para lassolicitudes de red.

transactional.id.caducidad.ms El tiempo en milisegundos que el coordinadorde transacciones espera sin recibir ningunaactualización del estado de la transacción actualantes de que caduque su ID transaccional. Estaconfiguración también influye en el vencimientodel ID de productor: los ID de productor caducancuando este tiempo transcurre después de laúltima escritura con el ID de productor dado. LosID de productor podrían caducar antes si la últimaescritura del ID de productor se elimina debido ala configuración de retención del tema. El valormínimo para esta propiedad es 1 milisegundo.

transaction.max.timeout.ms Tiempo de espera máximo para las transacciones.Si el tiempo de transacción solicitado de un clientesupera este tiempo, el agente devuelve un error enInitProducerIdRequest. Esto evita que un clienteexperimente un tiempo de espera demasiadogrande, lo que puede detener la lectura de lostemas que se incluyen en la transacción por partede los consumidores.

transaction.state.log.min.isr Se ha anulado la configuración min.insync.replicaspara el tema de transacción.

transaction.state.log.replication.factor El factor de replicación del tema de transacción.Establecer en un valor más elevado para aumentarla disponibilidad. Se produce un error en lacreación del tema interno hasta que el tamañodel clúster cumpla este requisito de factor dereplicación.

unclean.leader.election.enable Indica si se deben habilitar las réplicas que noestán en el conjunto ISR para que se elijan comolíder como último recurso, aunque hacerlo puedaprovocar la pérdida de datos.

zookeeper.connection.timeout.ms Tiempo máximo que el cliente espera paraestablecer una conexión con ZooKeeper.Si no se establece, se utiliza el valor dezookeeper.session.timeout.ms.

50

Page 56: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Configuración dinámica

Nombre Descripción

zookeeper.session.timeout.ms El tiempo de espera de sesión de ApacheZooKeeper en milisegundos.

MinValue = 6000

MaxValue (incluido) = 18000

Para obtener información acerca de cómo puede crear una configuración de MSK personalizada,enumerar todas las configuraciones o describirlas, consulte the section called “Operaciones deconfiguración” (p. 54). Para crear un clúster de MSK mediante una configuración personalizada de MSKo para actualizar un clúster con una nueva configuración personalizada, consulte : cómo funciona (p. 15).

Cuando actualiza su Clúster de MSK existente con una configuración personalizada de MSK, AmazonMSK se restablece cuando es necesario, utilizando las prácticas recomendadas para reducir el tiempode inactividad del cliente. Por ejemplo, después de que Amazon MSK restablezca cada agente, intentadejar que el agente se ponga al día con los datos que ha podido perder durante la actualización de laconfiguración antes de pasar al siguiente agente.

Configuración dinámicaAdemás de las propiedades de configuración que ofrece Amazon MSK, también puede establecerpropiedades de configuración a nivel de agente y clúster de forma dinámica que no requieren unrestablecimiento del agente. Puede establecer de forma dinámica propiedades de configuración que noestén marcadas como de solo lectura en la tabla en Configuraciones de agentes en la documentaciónde Apache Kafka. Para obtener más información acerca de configuraciones dinámicas y ejemplos decomandos, consulte Actualización de las configuraciones de agentes en la documentación de ApacheKafka.

Note

Puede establecer la propiedad advertised.listeners, pero no la propiedad listeners.

Configuración de nivel de temaPuede utilizar los comandos de Apache Kafka para establecer o modificar propiedades de configuración denivel de tema para temas nuevos y existentes. Para obtener más información acerca de las propiedadesde configuración de nivel de tema y ejemplos de cómo establecerlas, consulte Configuraciones de nivel detema en la documentación de Apache Kafka.

Estados de configuraciónAmazon MSK Las configuraciones de pueden estar en los siguientes estados. Para realizar una operaciónen una configuración, la configuración debe estar en la ACTIVE o bien DELETE_FAILED estado:

• ACTIVE

• DELETING

• DELETE_FAILED

Configuración predeterminada de Amazon MSKAl crear un Clúster de MSK sin especificar una configuración de MSK personalizada, Amazon MSK creay utiliza una configuración predeterminada con los valores que se muestran en la tabla siguiente. Conrespecto a las propiedades que no están en esta tabla, Amazon MSK utiliza los valores predeterminados

51

Page 57: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguración predeterminada

asociados a su versión de Apache Kafka. Para obtener una lista de estos valores predeterminados,consulte Configuración de Apache Kafka.

Valores de configuración predeterminados

Nombre Descripción Valor predeterminado

allow.everyone.if.no.acl.found Si ningún patrón de recursoscoincide con un recursoespecífico, el recurso no tieneACL asociadas. En este caso,si esta propiedad se establececomo verdadera, todos puedenacceder al recurso, no solo a lossúper usuarios.

true

auto.create.topics.enable Habilita la creación automáticade un tema en el servidor.

false

auto.leader.rebalance.enable Habilita el equilibrio automáticodel líder. Un subproceso defondo comprueba y activa elequilibrio del líder si es necesarioa intervalos regulares.

true

default.replication.factor Factores de replicaciónpredeterminados de lostemas que se han creadoautomáticamente.

3

min.insync.replicas Cuando un productor establecelas confirmaciones en "all"(o "-1"), min.insync.replicasespecifica el número mínimode réplicas que debe confirmaruna escritura para que seconsidere como correcta.Si este mínimo no se puedecumplir, el productor emite unaexcepción (NotEnoughReplicas oNotEnoughReplicasAfterAppend).

Cuando se utilizan de formaconjunta, min.insync.replicas ylas confirmaciones le permitenaplicar unas garantías dedurabilidad mayores. Unescenario típico sería crearun tema con un factor dereplicación de 3, establecermin.insync.replicas en 2 yproducir con acks de "all".Esto garantiza que el productorgenere una excepción si lamayoría de las réplicas noreciben una de escritura.

2.

num.io.threads Número de subprocesos queutiliza el servidor para procesar

8

52

Page 58: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresConfiguración predeterminada

Nombre Descripción Valor predeterminadolas solicitudes, puede incluir la E/S del disco.

num.network.threads Número de subprocesos queutiliza el servidor para recibirsolicitudes desde la red y enviarlas respuestas a la red.

5

num.partitions Número predeterminado departiciones de registro por tema.

-1

num.replica.fetchers Número de subprocesos delrecuperador que se utilizan parareplicar los mensajes desde unagente de origen. El aumento deeste valor puede incrementar elgrado de paralelismo de E/S delagente del seguidor.

2.

replica.lag.time.max.ms Si un seguidor no ha enviadoninguna solicitud de recuperacióno no ha consumido hasta lacompensación final del registrodel líder durante al menos estenúmero de milisegundos, el líderelimina el seguidor del ISR.

30000

socket.receive.buffer.bytes Búfer SO_RCVBUF de lossockets del servidor desockets. Si el valor es -1, seutiliza el sistema operativopredeterminado.

102400

socket.request.max.bytes Número máximo de bytes de unasolicitud de conector.

104857600

socket.send.buffer.bytes Búfer SO_SNDBUF de lossockets del servidor desockets. Si el valor es -1, seutiliza el sistema operativopredeterminado.

102400

unclean.leader.election.enable Indica si se deben habilitar lasréplicas que no están en elconjunto ISR para que se elijancomo líder como último recurso,aunque hacerlo pueda provocarla pérdida de datos.

true

zookeeper.session.timeout.ms El tiempo de espera de sesiónde Apache ZooKeeper enmilisegundos.

18000

zookeeper.set.acl Establezca el cliente para queutilice ACL seguras.

false

53

Page 59: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Operaciones de configuración

Operaciones de configuración de Amazon MSKEn este tema se describe cómo crear configuraciones de MSK personalizadas y cómo realizar operacionesen ellas. Para obtener información acerca de cómo utilizar las configuraciones de MSK para crear oactualizar clústeres, consulte : cómo funciona (p. 15).

Este tema contiene las siguientes secciones:• Para crear una configuración de MSK (p. 54)• Para actualizar una configuración de MSK (p. 55)• Para eliminar una configuración de MSK (p. 55)• Para describir una configuración de MSK (p. 56)• Para describir una revisión de configuración de MSK (p. 56)• Para enumerar todas las configuraciones de MSK de su cuenta para la región actual (p. 57)

Para crear una configuración de MSK1. Cree un archivo donde especifique las propiedades de configuración que desea establecer y los

valores que desea asignarles. A continuación se muestra el contenido de un archivo de configuraciónde ejemplo.

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

log.roll.ms = 604800000

2. Ejecute lo siguiente AWS CLI comando, reemplazar config-file-path con la ruta al archivo dondeguardó la configuración en el paso anterior.

Note

El nombre que elija para la configuración debe coincidir con la siguiente expresión regex:"^[0-9A-Za-z][0-9A-Za-z-]{0,}$".

aws kafka create-configuration --name "ExampleConfigurationName" --description "Example configuration description." --kafka-versions "1.1.1" --server-properties file://config-file-path

El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "CreationTime": "2019-05-21T19:37:40.626Z", "LatestRevision": { "CreationTime": "2019-05-21T19:37:40.626Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "ExampleConfigurationName"}

3. El comando anterior devuelve un nombre de recurso de Amazon (ARN) para la configuración reciéncreada. Guarde este ARN, porque lo necesita para hacer referencia a esta configuración en otros

54

Page 60: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Para actualizar una configuración de MSK

comandos. Si pierde el ARN de la configuración, puede volver a encontrarlo enumerando todas lasconfiguraciones de su cuenta.

Para actualizar una configuración de MSK1. Cree un archivo en el que especifique las propiedades de configuración que desea actualizar y los

valores que desea asignarles. A continuación se muestra el contenido de un archivo de configuraciónde ejemplo.

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

min.insync.replicas = 2

2. Ejecute lo siguiente AWS CLI comando, reemplazar config-file-path con la ruta al archivo dondeguardó la configuración en el paso anterior.

Reemplazar configuration-arn con el ARN que obtuvo al crear la configuración. Si no guardó elARN cuando creó la configuración, puede usar el comando list-configurations para enumerartodas las configuraciones de su cuenta y buscar la configuración que desea en la lista que aparece enla respuesta. El ARN de la configuración también aparece en dicha lista.

aws kafka update-configuration --arn configuration-arn --description "Example configuration revision description." --server-properties file://config-file-path

3. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "LatestRevision": { "CreationTime": "2020-08-27T19:37:40.626Z", "Description": "Example configuration revision description.", "Revision": 2 }}

Para eliminar una configuración de MSK1. Para ejecutar este ejemplo, sustituya configuration-arn con el ARN que obtuvo al crear la

configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando list-configurations para enumerar todas las configuraciones de su cuenta y buscar la configuraciónque desea en la lista que aparece en la respuesta. El ARN de la configuración también aparece endicha lista.

aws kafka delete-configuration --arn configuration-arn

2. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "arn": " arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "state": "DELETING"}

55

Page 61: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Para describir una configuración de MSK

Para describir una configuración de MSK1. Este comando devuelve metadatos acerca de la configuración. Para obtener una descripción detallada

de la configuración, ejecute describe-configuration-revision.

Para ejecutar este ejemplo, sustituya configuration-arn con el ARN que obtuvo al crear laconfiguración. Si no guardó el ARN cuando creó la configuración, puede usar el comando list-configurations para enumerar todas las configuraciones de su cuenta y buscar la configuraciónque desea en la lista que aparece en la respuesta. El ARN de la configuración también aparece endicha lista.

aws kafka describe-configuration --arn configuration-arn

2. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "SomeTest"}

Para describir una revisión de configuración de MSKAl describir una configuración de MSK mediante el comando describe-configuration, seproporcionan los metadatos de la configuración. Para ver una descripción de la configuración, utilice estecomando, describe-configuration-revision, en su lugar.

• Ejecute el siguiente comando, reemplazando configuration-arn con el ARN que obtuvo al crearla configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando list-configurations para enumerar todas las configuraciones de su cuenta y buscar la configuraciónque desea en la lista que aparece en la respuesta. El ARN de la configuración también aparece endicha lista.

aws kafka describe-configuration-revision --arn configuration-arn --revision 1

El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1, "ServerProperties": "YXV0by5jcmVhdGUudG9waWNzLmVuYWJsZSA9IHRydWUKCgp6b29rZWVwZXIuY29ubmVjdGlvbi50aW1lb3V0Lm1zID0gMTAwMAoKCmxvZy5yb2xsLm1zID0gNjA0ODAwMDAw"}

56

Page 62: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Para enumerar todas las configuracionesde MSK de su cuenta para la región actual

El valor de ServerProperties se codifica mediante Base64. Si utiliza un decodificador Base64 (porejemplo, https://www.base64decode.org/) para decodificarlo manualmente, obtendrá el contenido delarchivo de configuración original que utilizó para crear la configuración personalizada. En este caso,obtiene lo siguiente:

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

log.roll.ms = 604800000

Para enumerar todas las configuraciones de MSK desu cuenta para la región actual• Ejecute el comando siguiente.

aws kafka list-configurations

El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "Configurations": [ { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "SomeTest" }, { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "CreationTime": "2019-05-03T23:08:29.446Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-03T23:08:29.446Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "ExampleConfigurationName" } ]}

57

Page 63: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Protección de los datos

Seguridad en Amazon ManagedStreaming para Apache Kafka

La seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de unaarquitectura de red y un centro de datos diseñados para satisfacer los requisitos de seguridad de lasorganizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El modelo de responsabilidadcompartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad de la nube – AWS es responsable de proteger la infraestructura que ejecuta servicios deAWS en la nube de AWS. AWS también proporciona servicios que puede utilizar de forma segura. Losauditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte delos Programas de conformidad de AWS . Para obtener información sobre los programas de cumplimientoque se aplican a Amazon Managed Streaming para Apache Kafka, consulte Servicios de AWS en elámbito del programa de conformidad.

• Seguridad en la nube – su responsabilidad viene determinada por el servicio de AWS que utilice.También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de laempresa y la legislación y los reglamentos aplicables.

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida cuandose utiliza Amazon MSK. En los siguientes temas, se le mostrará cómo configurar Amazon MSK parasatisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros servicios deAWS que le ayudan a supervisar y proteger sus recursos de Amazon MSK.

Temas• Protección de datos en Amazon Managed Streaming para Apache Kafka (p. 58)• Identity and Access Management en Amazon Managed Streaming for Apache Kafka (p. 62)• Autenticación del cliente (p. 69)• ACL de Apache Kafka (p. 72)• Control del acceso a Apache ZooKeeper (p. 73)• Logging (p. 74)• Validación de la conformidad para Amazon Managed Streaming para Apache Kafka (p. 79)• Resiliencia en Amazon Managed Streaming para Apache Kafka (p. 79)• Seguridad de la infraestructura en Amazon Managed Streaming para Apache Kafka (p. 80)

Protección de datos en Amazon ManagedStreaming para Apache Kafka

Amazon Managed Streaming para Apache Kafka cumple los requisitos del modelo de responsabilidadcompartida de AWS, que incluye reglamentos y directrices para la protección de los datos. AWS es

58

Page 64: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Cifrado

responsable de proteger la infraestructura global que ejecuta todos los servicios de AWS. AWS mantieneel control de los datos alojados en esta infraestructura, incluidos los controles de configuración de laseguridad para el tratamiento del contenido y los datos personales de los clientes. Los clientes de AWS ylos socios de APN, que actúan como controladores o procesadores de datos, son responsables de todoslos datos personales que colocan en la nube de AWS.

Para fines de protección de datos, le recomendamos proteger las credenciales de la cuenta de AWS yconfigurar cuentas de usuario individuales con AWS Identity and Access Management (IAM), de modo quea cada usuario se le concedan únicamente los permisos necesarios para llevar a cabo su trabajo. Tambiénle recomendamos proteger sus datos de las siguientes formas:

• Utilice la autenticación multifactor (MFA) con cada cuenta.• Utilice SSL/TLS para comunicarse con los recursos de AWS.

• Configure la API y el registro de actividad del usuario con AWS CloudTrail.• Utilice las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados

dentro de los servicios de AWS.• Utilice los servicios de seguridad administrados avanzados como, por ejemplo, Amazon Macie, que

ayudan a detectar y proteger los datos personales almacenados en Amazon S3.

Le recomendamos encarecidamente que nunca introduzca información de identificación confidencial,como, por ejemplo, números de cuenta de sus clientes, en los campos de formato libre. Ejemplos decampos de formato libre son nombres de recursos como el nombre de un Clúster de MSK, las etiquetasque utiliza para el clúster y los nombres de los temas de Apache Kafka. Estas instrucciones se aplicancuando trabaja con Amazon MSK o con cualquier otro servicio de AWS. Tenga en cuenta si utiliza laconsola, la API, la AWS CLI o los SDK de AWS. Cuando proporcione una URL a un servidor externo, noincluya información sobre las credenciales en la URL para validar la solicitud en dicho servidor.

Para obtener más información sobre la protección de datos, consulte la entrada de blog relativa al modelode responsabilidad compartida de AWS y GDPR en el blog de seguridad de AWS.

Temas• Cifrado de Amazon MSK (p. 59)• ¿Cómo empiezo a utilizar el cifrado? (p. 60)

Cifrado de Amazon MSKAmazon MSK proporciona opciones de cifrado de datos que puede utilizar para cumplir estrictos requisitosde administración de datos. Los certificados que utiliza Amazon MSK para el cifrado deben renovarse cada13 meses. Amazon MSK renueva automáticamente estos certificados para todos los clústeres. Estableceel estado del clúster en MAINTENANCE cuando inicia la operación de actualización de certificados. Sevuelve a establecer en ACTIVE cuando se realiza la actualización. Mientras un clúster está en el estadoMAINTENANCE, puede continuar produciendo y consumiendo datos, pero no puede realizar ningunaoperación de actualización en él.

Cifrado en reposoAmazon MSK se integra con AWS Key Management Service (KMS) para ofrecer cifrado transparente dellado del servidor. Amazon MSK siempre cifra los datos en reposo. Al crear un Clúster de MSK, puedeespecificar la clave maestra del cliente (CMK) de AWS KMS que Amazon MSK deba usar para cifrar losdatos en reposo. Si no especifica una CMK, Amazon MSK crea automáticamente una CMK administradapor AWS y la utiliza en su nombre. Para obtener más información acerca de las CMK, consulte Clavesmaestras de cliente (CMK) en la AWS Key Management Service Developer Guide.

59

Page 65: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

¿Cómo empiezo a utilizar el cifrado?

Cifrado en tránsitoAmazon MSK utiliza TLS 1.2. De forma predeterminada, cifra los datos en tránsito entre los agentes deClúster de MSK. Puede anular este valor predeterminado en el momento en que cree el clúster.

Para la comunicación entre clientes y agentes, debe especificar una de las tres opciones siguientes:

• Permitir solo datos cifrados TLS. Este es el valor predeterminado.• Permitir tanto datos de texto sin formato como datos cifrados TLS.• Permitir solo datos de texto sin formato.

Los agentes de Amazon MSK utilizan certificados públicos de AWS Certificate Manager. Por lo tanto,cualquier truststore que confíe en Amazon Trust Services también confía en los certificados de los agentesde Amazon MSK.

Al habilitar el cifrado, se reduce el rendimiento en aproximadamente un 30 %. Sin embargo, el porcentajeexacto depende de la configuración del clúster y de los clientes.

¿Cómo empiezo a utilizar el cifrado?Al crear un Clúster de MSK, puede especificar la configuración de cifrado en formato JSON. A continuaciónse muestra un ejemplo.

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" }}

Para DataVolumeKMSKeyId, puede especificar un CMK administrado por el cliente o el AWSadministrado para MSK en su cuenta (alias/aws/kafka). Si no se lo especifica EncryptionAtRest,Amazon MSK sigue cifrando los datos en reposo bajo el CMK administrado por AWS. Para determinarqué CMK está utilizando su clúster, envíe una solicitud GET o invoque la operación de la APO deDescribeCluster.

Para EncryptionInTransit, el valor predeterminado de InCluster es true, pero puede establecerloen false si no desea que Amazon MSK cifre sus datos a medida que pasan entre los agentes.

Para especificar el modo de cifrado de los datos en tránsito entre clientes y agentes, establezcaClientBroker a uno de los tres valores: TLS, TLS_PLAINTEXT, o PLAINTEXT.

Para especificar la configuración de cifrado al crear un clúster

1. Guarde el contenido del ejemplo anterior en un archivo y asígnele el nombre que desee. Por ejemplo,llámalo encryption-settings.json.

2. Ejecute el comando create-cluster y use la opción encryption-info para señalar al archivodonde guardó su configuración JSON. A continuación se muestra un ejemplo.

aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3

60

Page 66: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

¿Cómo empiezo a utilizar el cifrado?

El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

{ "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e", "ClusterName": "ExampleClusterName", "State": "CREATING"}

Para probar el cifrado TLS

1. Cree un equipo cliente siguiendo las instrucciones de the section called “Paso 4. Crear una máquinacliente” (p. 10).

2. Instale Apache Kafka en el equipo cliente.3. Ejecute el siguiente comando en un equipo que tenga AWS CLI instalado, reemplazando

ClusterARN por el ARN de su clúster (un clúster creado con ClientBroker establecido en TLScomo el ejemplo en el procedimiento anterior).

aws kafka describe-cluster --cluster-arn clusterARN

En el resultado, busque el valor de ZookeeperConnectString y guárdelo porque lo necesita en elsiguiente paso.

4. Vaya a la carpeta bin de la instalación de Apache Kafka en el equipo cliente. Para crear un tema,ejecute el siguiente comando, reemplazando ZookeeperConnectString por el valor que obtuvoZookeeperConnectString en el paso anterior.

kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic TLSTestTopic

5. En este ejemplo usamos el almacén de confianza JVM para hablar con el Clúster de MSK. Para ello,primero cree una carpeta denominada /tmp en el equipo cliente. Luego, vaya a la carpeta bin de lainstalación de Apache Kafka y ejecute el siguiente comando. (Su ruta de JVM puede ser diferente).

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks

6. Mientras esté aún en la carpeta bin de la instalación de Apache Kafka en el equipo cliente, cree unarchivo de texto denominado client.properties con el siguiente contenido.

security.protocol=SSLssl.truststore.location=/tmp/kafka.client.truststore.jks

7. Ejecute el siguiente comando en un equipo que tenga AWS CLI instalado, reemplazandoClusterArn por el ARN de su clúster.

aws kafka get-bootstrap-brokers --cluster-arn clusterARN

Un resultado correcto sería como el siguiente. Guarde este resultado porque lo necesita para elsiguiente paso.

{ "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123"

61

Page 67: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresIdentity and Access Management

}

8. En la carpeta bin de la instalación de Apache Kafka en el equipo cliente, ejecute lo siguiente,reemplazando BootstrapBrokerStringTLS con el valor obtenido en el paso anterior. Deje estecomando de productor en ejecución.

kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic

9. Abra una nueva ventana de comandos en el mismo equipo cliente, vaya a la carpeta bin de lainstalación de Apache Kafka y ejecute el siguiente comando para crear un consumidor.

kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic

10. En la ventana del productor, escriba un mensaje de texto seguido de una devolución y busque elmismo mensaje en la ventana del consumidor. Amazon MSK cifró este mensaje en tránsito.

Para obtener más información acerca de cómo configurar clientes Apache Kafka para que funcionen condatos cifrados, consulte Configuración de clientes Kafka.

Identity and Access Management en AmazonManaged Streaming for Apache Kafka

AWS Identity and Access Management (IAM) es un servicio de AWS que ayuda a un administrador acontrolar de forma segura el acceso a los recursos de AWS. Los administradores de IAM controlan quiénpuede ser autenticado (iniciar sesión) y estar autorizado (tener permisos) para utilizar los recursos deAmazon MSK. IAM es un servicio de AWS que se puede utilizar sin costo adicional.

Temas• Funcionamiento de Amazon Managed Streaming for Apache Kafka con IAM (p. 62)• Ejemplos de políticas basadas en identidades de Amazon Managed Streaming for Apache

Kafka (p. 65)• Uso de roles vinculados a servicios para Amazon MSK (p. 68)• Solución de problemas de identidad y acceso en Amazon Managed Streaming for Apache

Kafka (p. 69)

Funcionamiento de Amazon Managed Streaming forApache Kafka con IAMAntes de utilizar IAM para administrar el acceso a Amazon MSK, debe saber qué características deIAM están disponibles para utilizarse con Amazon MSK. Para obtener una perspectiva general de cómoAmazon MSK y otros servicios de AWS funcionan con IAM, consulte Servicios de AWS que funcionan conIAM en la Guía del usuario de IAM.

Temas• Políticas basadas en identidades de Amazon MSK (p. 63)• Políticas basadas en recursos de Amazon MSK (p. 64)• Autorización basada en etiquetas de Amazon MSK (p. 64)• Roles de IAM para Amazon MSK (p. 65)

62

Page 68: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Funcionamiento de Amazon ManagedStreaming for Apache Kafka con IAM

Políticas basadas en identidades de Amazon MSKCon las políticas basadas en identidades de IAM, puede especificar los recursos y las acciones permitidaso denegadas, así como las condiciones en las que se permiten o deniegan las acciones. Amazon MSKes compatible con acciones, claves de condiciones y recursos específicos. Para obtener más informaciónacerca de los elementos que utiliza en una política de JSON, consulte Referencia de los elementos de laspolíticas de JSON de IAM en la Guía del usuario de IAM.

ActionsEl elemento Action de una política basada en la identidad de IAM describe la acción o las accionesespecíficas que la política permitirá o denegará. Las acciones de la política generalmente tienen el mismonombre que la operación de API de AWS asociada. La acción se utiliza en una política para otorgarpermisos para realizar la operación asociada.

Acciones políticas en Amazon MSK utilice el siguiente prefijo antes de la acción: kafka:. Por ejemplo,para otorgar permiso a alguien para describir un Clúster de MSK con el Amazon MSK DescribeClusterFuncionamiento de API, usted incluye el kafka:DescribeCluster acción en su política. Lasinstrucciones de política deben incluir un elemento Action o NotAction. Amazon MSK define su propioconjunto de acciones, que describen las tareas que se pueden realizar con este servicio.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

"Action": ["kafka:action1", "kafka:action2"]

Puede utilizar caracteres comodín para especificar varias acciones (*). Por ejemplo, para especificar todaslas acciones que comiencen con la palabra Describe, incluya la siguiente acción.

"Action": "kafka:Describe*"

Para ver una lista de acciones de Amazon MSK, consulte en la Actions Defined by Amazon ManagedStreaming for Apache KafkaGuía del usuario de IAM.

ResourcesEl elemento Resource especifica el objeto u objetos a los que se aplica la acción. Las instrucciones debencontener un elemento Resource o NotResource. Especifique un recurso con un ARN o el caráctercomodín (*) para indicar que la instrucción se aplica a todos los recursos.

El recurso de instancia de Amazon MSK tiene el siguiente ARN:

arn:${Partition}:kafka:${Region}:${Account}:cluster/${ClusterName}/${UUID}

Para obtener más información acerca del formato de los ARN, consulte Nombres de recursos de Amazon(ARN) y espacios de nombres de servicios de AWS.

Por ejemplo, para especificar la instancia de CustomerMessages en su instrucción, utilice el siguienteARN:

"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomerMessages/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2"

Para especificar todas las instancias que pertenecen a una cuenta específica, utilice el carácter comodín(*):

63

Page 69: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Funcionamiento de Amazon ManagedStreaming for Apache Kafka con IAM

"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*"

Algunas acciones de Amazon MSK, como las que se utilizan para crear recursos, no se pueden llevar acabo en un recurso específico. En dichos casos, debe utilizar el carácter comodín (*):

"Resource": "*"

Para especificar varios recursos en una única instrucción, separe los ARN con comas.

"Resource": ["resource1", "resource2"]

Para ver una lista de los tipos de recursos de Amazon MSK y sus ARN, consulte Resources Defined byAmazon Managed Streaming for Apache Kafka en la Guía del usuario de IAM. Para obtener informaciónacerca de con qué acciones puede especificar los ARN de cada recurso, consulte Actions Defined byAmazon Managed Streaming for Apache Kafka.

Claves de condiciónEl elemento Condition (o bloque de Condition) permite especificar condiciones en las que entra envigor una instrucción. El elemento Condition es opcional. Puede crear expresiones condicionales queutilicen operadores de condición, tales como igual o menor que, para que coincida la condición de lapolítica con valores de la solicitud.

Si especifica varios elementos de Condition en una instrucción o varias claves en un único elemento deCondition, AWS las evalúa mediante una operación AND lógica. Si especifica varios valores para unaúnica clave de condición, AWS evalúa la condición con una operación lógica OR. Se deben cumplir todaslas condiciones antes de que se concedan los permisos de la instrucción.

También puede utilizar variables de marcador de posición al especificar condiciones. Por ejemplo, puedeconceder un permiso de usuario de IAM para acceder a un recurso solo si está etiquetado con su nombrede usuario de IAM. Para obtener más información, consulte Elementos de la política de IAM: Variables yetiquetas en la Guía del usuario de IAM.

Amazon MSK define su propio conjunto de claves de condición y también admite el uso de algunas clavesde condición globales. Para ver todas las claves de condición globales de AWS, consulte Claves decontexto de condición globales de AWS en la Guía del usuario de IAM.

Para ver una lista de claves de condición de Amazon MSK, consulte Condition Keys for Amazon ManagedStreaming for Apache Kafka en la Guía del usuario de IAM. Para obtener más información acerca de lasacciones y los recursos con los que puede utilizar una clave de condición, consulte Actions Defined byAmazon Managed Streaming for Apache Kafka.

Examples

Para ver ejemplos de políticas de Amazon MSK basadas en identidades, consulte Ejemplos de políticasbasadas en identidades de Amazon Managed Streaming for Apache Kafka (p. 65).

Políticas basadas en recursos de Amazon MSKAmazon MSK no admite políticas basadas en recursos.

Autorización basada en etiquetas de Amazon MSKPuede adjuntar etiquetas a clústeres Amazon MSK. Para controlar el acceso utilizando etiquetas,debe proporcionar información de las etiquetas en el elemento de condición de una política utilizando

64

Page 70: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ejemplos de políticas basadas en identidad

kafka:ResourceTag/key-name, aws:RequestTag/key-name o las claves de condiciónaws:TagKeys. Para obtener más información acerca del etiquetado de recursos de Amazon MSK,consulte the section called “Etiquetado de un clúster” (p. 42).

Para ver un ejemplo de política basada en la identidad para limitar el acceso a un clúster basado en lasetiquetas de dicho clúster, consulte Acceso a clústeres Amazon MSK basados en etiquetas (p. 67).

Roles de IAM para Amazon MSKUn rol de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos.

Uso de credenciales temporales con Amazon MSK

Puede utilizar credenciales temporales para iniciar sesión con federación, asumir un rol de IAM o asumir unrol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen mediante una llamadaa operaciones de la API de AWS STS, como AssumeRole o GetFederationToken.

Amazon MSK admite el uso de credenciales temporales.

Roles vinculados a servicios

Los roles vinculados a servicios permiten a los servicios de AWS obtener acceso a los recursos de otrosservicios para completar una acción en su nombre. Los roles vinculados a servicios aparecen en la cuentade IAM y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos delos roles vinculados a servicios.

Amazon MSK admite los roles vinculados a servicios. Para obtener más información acerca de cómocrear o administrar roles vinculados a servicios de Amazon MSK, the section called “Roles vinculados aservicios” (p. 68).

Ejemplos de políticas basadas en identidades deAmazon Managed Streaming for Apache KafkaDe forma predeterminada, IAM usuarios y roles no tienen permiso para ejecutar Amazon MSK Accionesde API. Un administrador de IAM debe crear políticas de IAM que concedan permisos a los usuarios y alos roles para realizar operaciones de la API concretas en los recursos especificados que necesiten. Eladministrador debe adjuntar esas políticas a los usuarios o grupos de IAM que necesitan esos permisos.

Para obtener más información acerca de cómo crear una política basada en identidad de IAM con estosdocumentos de políticas de JSON de ejemplo, consulte Creación de políticas en la pestaña JSON en laGuía del usuario de IAM.

Temas• Prácticas recomendadas relativas a políticas (p. 65)• Permitir a los usuarios ver sus propios permisos (p. 66)• Acceso a un Clúster de Amazon MSK (p. 67)• Acceso a clústeres Amazon MSK basados en etiquetas (p. 67)

Prácticas recomendadas relativas a políticasLas políticas basadas en identidad son muy eficaces. Determinan si alguien puede crear, acceder oeliminar los recursos de Amazon MSK de su cuenta. Estas acciones pueden generar costes adicionalespara su cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas enidentidad:

65

Page 71: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ejemplos de políticas basadas en identidad

• Introducción sobre el uso de políticas administradas de AWS: para comenzar a utilizar Amazon MSKrápidamente, utilice las políticas administradas de AWS para proporcionar a los empleados los permisosnecesarios. Estas políticas ya están disponibles en su cuenta y las mantiene y actualiza AWS. Paraobtener más información, consulte Introducción sobre el uso de permisos con políticas administradas deAWS en la Guía del usuario de IAM.

• Conceder privilegios mínimos: al crear políticas personalizadas, conceda solo los permisos necesariospara llevar a cabo una tarea. Comience con un conjunto mínimo de permisos y conceda permisosadicionales según sea necesario. Por lo general, es más seguro que comenzar con permisos que sondemasiado tolerantes e intentar hacerlos más severos más adelante. Para obtener más información,consulte Conceder privilegios mínimos en la Guía del usuario de IAM.

• Habilitar MFA para operaciones confidenciales: para mayor seguridad, obligue a los usuarios deIAM a que utilicen la autenticación multifactor (MFA) para acceder a recursos u operaciones de APIconfidenciales. Para obtener más información, consulte Uso de Multi-Factor Authentication (MFA) enAWS en la Guía del usuario de IAM.

• Utilizar condiciones de política para mayor seguridad: en la medida en que sea práctico, defina lascondiciones en las que sus políticas basadas en identidad permitan el acceso a un recurso. Por ejemplo,puede escribir condiciones para especificar un rango de direcciones IP permitidas desde el que debeproceder una solicitud. También puede escribir condiciones para permitir solicitudes solo en un intervalode hora o fecha especificado o para solicitar el uso de SSL o MFA. Para obtener más información,consulte Elementos de la política de JSON de IAM: condición en la Guía del usuario de IAM.

Permitir a los usuarios ver sus propios permisosEn este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver laspolíticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluyepermisos para llevar a cabo esta acción en la consola o mediante programación con la AWS CLI o la APIde AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ]

66

Page 72: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ejemplos de políticas basadas en identidad

}

Acceso a un Clúster de Amazon MSKEn este ejemplo, desea otorgar un IAM usuario en su AWS acceso de cuenta a uno de sus clústeres,purchaseQueriesCluster. Esta política permite al usuario describir el clúster, obtener los brókers debootstrap, enumerar sus nodos de agente y actualizarlos.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"UpdateCluster", "Effect":"Allow", "Action":[ "kafka:Describe*", "kafka:Get*", "kafka:List*", "kafka:Update*" ], "Resource":"arn:aws:kafka:us-east-1:012345678012:cluster/purchaseQueriesCluster/abcdefab-1234-abcd-5678-cdef0123ab01-2" } ]}

Acceso a clústeres Amazon MSK basados en etiquetasPuede utilizar las condiciones de su política basada en la identidad para controlar el acceso a los recursosde Amazon MSK basados en etiquetas. En este ejemplo se muestra cómo crear una directiva quepermita al usuario describir el clúster, obtener sus agentes de arranque, enumerar sus nodos de agentes,actualizarla y eliminarla. Sin embargo, los permisos solo se conceden si la etiqueta de clúster Owner tieneel valor del nombre de usuario de dicho usuario.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessClusterIfOwner", "Effect": "Allow", "Action": [ "kafka:Describe*", "kafka:Get*", "kafka:List*", "kafka:Update*", "kafka:Delete*" ], "Resource": "arn:aws:kafka:us-east-1:012345678012:cluster/*", "Condition": { "StringEquals": { "kafka:ResourceTag/Owner": "${aws:username}" } } } ]}

También puede adjuntar esta política al usuario de IAM en su cuenta. Si un usuario nombre richard-roe intenta actualizar un Clúster de MSK, el clúster debe estar etiquetado Owner=richard-roe oowner=richard-roe. De lo contrario, se le denegará el acceso. La clave de la etiqueta de condición

67

Page 73: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Roles vinculados a servicios

Owner coincide con los nombres de las claves de condición Owner y owner porque no distinguen entremayúsculas y minúsculas. Para obtener más información, consulte IAM Elementos de la política de JSON:Condición en el Guía del usuario de IAM.

Uso de roles vinculados a servicios para Amazon MSKAmazon MSK usa AWS Identity and Access Management (IAM)roles vinculados a servicios). Un rolvinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente a Amazon MSK.Las funciones vinculadas a servicios están predefinidas por Amazon MSK e incluyen todos los permisosque el servicio requiere para llamar a otros servicios de AWS en su nombre.

Con una función vinculada a servicios, resulta más sencillo configurar Amazon MSK, porque no es precisoagregar los permisos necesarios manualmente. Amazon MSK define los permisos de las funcionesvinculadas con su propio servicio. A menos que se defina lo contrario, sólo Amazon MSK puede asumir susfunciones. Los permisos definidos incluyen las políticas de confianza y de permisos, y que la política depermisos no se pueda asociar a ninguna otra entidad de IAM.

Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Serviciosde AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado aservicio. Seleccione una opción Sí con un enlace para ver la documentación acerca del rol vinculado alservicio en cuestión.

Temas• Permisos de funciones vinculadas a servicios de Amazon MSK (p. 68)• Creación de un rol vinculado a servicios para Amazon MSK (p. 69)• Edición de una función vinculada a un servicio para Amazon MSK (p. 69)• Regiones admitidas para los roles vinculados al servicio de Amazon MSK (p. 69)

Permisos de funciones vinculadas a servicios de Amazon MSKAmazon MSK usa la función vinculada al servicio denominada AWSServiceRoleForKafka – Allows AmazonMSK to access AWS resources on your behalf.

La función vinculada al servicio AWSServiceRoleForKafka confía en los siguientes servicios para asumir lafunción:

• kafka.amazonaws.com

La política de permisos de la función permite que Amazon MSK realice las siguientes acciones en losrecursos especificados:

• Acción: ec2:CreateNetworkInterface en *

Acción: ec2:DescribeNetworkInterfaces en *

Acción: ec2:CreateNetworkInterfacePermission en *

Acción: ec2:AttachNetworkInterface en *

Acción: ec2:DeleteNetworkInterface en *

Acción: ec2:DetachNetworkInterface en *

Debe configurar permisos para permitir a una entidad de IAM (como un usuario, un grupo o un rol) crear,editar o eliminar la descripción de un rol vinculado a un servicio. Para obtener más información, consultePermisos de roles vinculados a servicios en la Guía del usuario de IAM.

68

Page 74: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Solución de problemas

Creación de un rol vinculado a servicios para Amazon MSKNo necesita crear manualmente un rol vinculado a un servicio. Al realizar una operación de create anClúster de Amazon MSK en la Consola de administración de AWS, la AWS CLI o la API de AWS, AmazonMSK se encarga de crear automáticamente el rol vinculado al servicio.

Si elimina este rol vinculado al servicio y necesita crearlo de nuevo, puede utilizar el mismo proceso paravolver a crear el rol en su cuenta. Al realizar una operación de create an Clúster de Amazon MSK, AmazonMSK se encarga de volver crear automáticamente la función vinculada al servicio.

Edición de una función vinculada a un servicio para Amazon MSKAmazon MSK no le permite editar la función vinculada al servicio AWSServiceRoleForKafka. Después decrear un rol vinculado a un servicio, no puede cambiarle el nombre, ya que varias entidades pueden hacerreferencia al mismo. Sin embargo, puede editar la descripción del rol utilizando IAM. Para obtener másinformación, consulte Editar un rol vinculado a un servicio en la Guía del usuario de IAM.

Regiones admitidas para los roles vinculados al servicio deAmazon MSKAmazon MSK admite el uso de roles vinculados a servicios en todas las regiones de AWS en las que elservicio está disponible. Para obtener más información, consulte AWS Regions and Endpoints.

Solución de problemas de identidad y acceso enAmazon Managed Streaming for Apache KafkaUtilice la información siguiente para diagnosticar y solucionar los problemas comunes que puedan surgircuando trabaje con Amazon MSK e IAM.

Temas• No tengo autorización para realizar una acción en Amazon MSK (p. 69)

No tengo autorización para realizar una acción en Amazon MSKSi la Consola de administración de AWS le indica que no está autorizado para llevar a cabo una acción,debe ponerse en contacto con su administrador para recibir ayuda. El administrador es la persona que lefacilitó el nombre de usuario y la contraseña.

En el siguiente ejemplo, el error se produce cuando el usuario de IAM, mateojackson, intenta utilizar laconsola para eliminar un clúster pero no tiene permisos kafka:DeleteCluster.

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: kafka:DeleteCluster on resource: purchaseQueriesCluster

En este caso, Mateo pide a su administrador que actualice sus políticas de forma que pueda obteneracceso al recurso purchaseQueriesCluster mediante la acción kafka:DeleteCluster.

Autenticación del clientePuede habilitar la autenticación del cliente con TLS para las conexiones desde sus aplicaciones a susagentes de Amazon MSK. Para usar la autenticación del cliente, necesita una ACM Private CA. Paraobtener información acerca de las CA privadas, consulte Creación y administración de una CA privada.

69

Page 75: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Autenticación del cliente

Note

La autenticación TLS no está disponible actualmente en las regiones BJS, MXP o ZHY.

Para crear un clúster que admita la autenticación del cliente

Este procedimiento muestra cómo habilitar la autenticación del cliente mediante una CA alojada en ACM.

1. Cree un archivo denominado clientauthinfo.json con el siguiente contenido. ReemplazarPrivate-CA-ARN con el ARN de su PCA.

{ "Tls": { "CertificateAuthorityArnList": ["Private-CA-ARN"] }}

2. Cree un archivo llamado brokernodegroupinfo.json tal y como se describe en the section called“Creación de un clúster mediante la AWS CLI” (p. 17).

3. La autenticación del cliente precisa que también habilite el cifrado en tránsito entre clientes y agentes.Cree un archivo denominado encryptioninfo.json con el siguiente contenido. ReemplazarKMS-Key-ARN con el ARN de su clave de KMS. Puede establecer ClientBroker en TLS oTLS_PLAINTEXT.

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "KMS-Key-ARN" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" }}

Para obtener más información sobre el cifrado, consulte the section called “Cifrado” (p. 59).4. En una máquina en la que tiene la AWS CLI instalada, ejecute el siguiente comando para crear

un clúster con la autenticación y el cifrado en tránsito habilitados. Guarde el ARN del clústerproporcionado en la respuesta.

aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3

Para configurar un cliente para utilizar la autenticación

1. Cree una instancia Amazon EC2 para utilizarla como una máquina del cliente. Para simplificar, creeesta instancia en la misma VPC que utilizó para el clúster. Consulte the section called “Paso 4. Crearuna máquina cliente” (p. 10) para ver un ejemplo sobre cómo crear dicho equipo cliente.

2. Crear un tema Para ver un ejemplo, consulte las instrucciones en the section called “Paso 5. Creaciónde un tema” (p. 11).

3. En una máquina donde tenga la AWS CLI instalada, ejecute el siguiente comando para obtener a losagentes de arranque del clúster. Reemplazar Cluster-ARN con el ARN del clúster.

aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

70

Page 76: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Autenticación del cliente

Guarde la cadena asociada a BootstrapBrokerStringTls en la respuesta.4. En la máquina de su cliente, ejecute el siguiente comando para utilizar el almacén de confianza de

JVM para crear su almacén de confianza del cliente. Si su ruta de JVM es diferente, ajuste el comandoen consecuencia.

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks

5. En la máquina de su cliente, ejecute el siguiente comando para crear una clave privada para sucliente. Reemplazar Distinguished-Name, Example-Alias, Your-Store-Pass, y . Your-Key-Pass con cadenas de su elección.

keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12

6. En la máquina de su cliente, ejecute el siguiente comando para crear una solicitud de certificado con laclave privada que creo en el paso anterior.

keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass

7. Abra el cuadro de diálogo client-cert-sign-request y asegúrese de que comienza con -----BEGIN CERTIFICATE REQUEST----- y termina con -----END CERTIFICATE REQUEST-----.Si empieza con -----BEGIN NEW CERTIFICATE REQUEST-----, elimina la palabra NEW (y elespacio único que lo sigue) desde el principio y el final del archivo.

8. En un equipo en el que tiene la AWS CLI instalada, ejecute el siguiente comando para firmar susolicitud de certificado. Reemplazar Private-CA-ARN con el ARN de su PCA. Puede cambiar el valorde la validez si lo desea. Aquí utilizamos 300 como ejemplo.

aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr file://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"

Guarde el ARN del certificado proporcionado en la respuesta.9. Ejecute el siguiente comando para obtener el certificado que ACM firmó para usted. Reemplazar

Certificate-ARN con el ARN obtenido de la respuesta al comando anterior.

aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN

10. En el resultado JSON de la ejecución del comando anterior, copie las cadenas asociadas aCertificate y CertificateChain. Pegue estas dos cadenas en un nuevo archivo denominadosigned-certificate-from-acm. Pegar la cadena asociada a Certificate primero, seguido de lacadena asociada con CertificateChain. Sustituya el \n caracteres con nuevas líneas. Lasiguiente es la estructura del archivo después de pegarle el certificado y la cadena del certificado.

-----BEGIN CERTIFICATE-----...-----END CERTIFICATE----------BEGIN CERTIFICATE-----...-----END CERTIFICATE----------BEGIN CERTIFICATE-----...-----END CERTIFICATE-----

71

Page 77: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

ACL de Apache Kafka

11. Ejecute el siguiente comando en el equipo cliente para agregar este certificado a su almacén declaves para que puede presentarlo al hablar con los agentes de MSK.

keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass

12. Cree un archivo denominado client.properties con el siguiente contenido. Ajustelas ubicaciones del almacén de confianza y de claves a las rutas en las que guardókafka.client.truststore.jks.

security.protocol=SSLssl.truststore.location=/tmp/kafka_2.12-2.2.1/kafka.client.truststore.jksssl.keystore.location=/tmp/kafka_2.12-2.2.1/kafka.client.keystore.jksssl.keystore.password=Your-Store-Passssl.key.password=Your-Key-Pass

Para producir y consumir mensajes mediante la autenticación

1. Ejecute el siguiente comando para crear un tema.

bin/kafka-topics.sh --create --zookeeper ZooKeeper-Connection-String --replication-factor 3 --partitions 1 --topic ExampleTopic

2. Ejecute el siguiente comando para iniciar un productor de la consola. El archivo denominadoclient.properties es el que creó en el procedimiento anterior.

bin/kafka-console-producer.sh --broker-list BootstrapBroker-String --topic ExampleTopic --producer.config client.properties

3. En una nueva ventana de comandos en la máquina de su cliente, ejecute el siguiente comando parainiciar un consumidor de la consola.

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties

4. Escriba mensajes en la ventana del productor y observe cómo aparecen en la ventana delconsumidor.

ACL de Apache KafkaApache Kafka tiene un autorizador conectable y se envía con una implementación de autorizador lista parausar que utiliza Apache ZooKeeper para almacenar todas las ACL. Amazon MSK habilita este autorizadoren el archivo server.properties de los agentes. Para Apache Kafka versión 2.4.1, el autorizador esAclAuthorizer. Para versiones anteriores de Apache Kafka, es SimpleAclAuthorizer.

Las ACL de Apache Kafka tienen el formato "Principal P is [Allowed/Denied] Operation O FromHost H on any Resource R matching ResourcePattern RP". Si RP no coincide con un recursoespecífico R, R no tiene ACL asociadas y, por lo tanto, nadie más que los superusuarios tiene permisopara acceder a R. Para cambiar este comportamiento de Apache Kafka, establezca la propiedadallow.everyone.if.no.acl.found en true. Amazon MSK lo establece como true de formapredeterminada. Esto significa que con los clústeres de Amazon MSK, si no establece explícitamente lasACL en un recurso, todos los principales pueden acceder a este recurso. Si habilita las ACL en un recurso,sólo los principales autorizados pueden acceder a él. Si desea restringir el acceso a un tema y autorizara un cliente mediante la autenticación mutua de TLS, agregue ACL mediante la CLI del autorizador de

72

Page 78: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Control del acceso a Apache ZooKeeper

Apache Kafka. Para obtener más información acerca de cómo agregar, eliminar y enumerar ACL, consultela Interfaz de línea de comandos de Kafka.

Además del cliente, también debe conceder a todos sus agentes acceso a sus temas para que los agentespuedan replicar mensajes desde la partición principal. Si los agentes no tienen acceso a un tema, seproduce un error en la replicación del tema.

Para agregar o eliminar el acceso de lectura y escritura a un tema

1. Agregue sus agentes a la tabla de ACL para permitirles leer de todos los temas que tengan ACL en sulugar. Para conceder a los agentes acceso de lectura a un tema, ejecute el siguiente comando en unequipo cliente que pueda comunicarse con el Clúster de MSK.

Reemplace ZooKeeper-Connection-String por su cadena de conexión de Apache ZooKeeper.Para obtener información sobre cómo obtener esta cadena, consulte the section called “Obtención dela cadena de conexión Apache ZooKeeper” (p. 19).

Reemplace el Nombre-distinguido por el DNS de cualquiera de los agentes de arranquedel clúster y, a continuación, reemplace la cadena antes del primer punto de este nombredistintivo por un asterisco (*). Por ejemplo, si uno de los agentes de arranque del clúster tiene elDNS b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com, reemplaceDistinguished-Name en el siguiente comando por *.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com. Para obtener información sobre cómo obtener los agentes de arranque,consulte the section called “Obtención de los agentes de arranque” (p. 21).

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

2. Para conceder acceso de lectura a un tema, ejecute el siguiente comando en su máquina del cliente.Utilice el mismo Distinguished-Name (Nombre-distinguido) que utilizó al crear la claveprivada.

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

Para eliminar el acceso de lectura, puede ejecutar el mismo comando, sustituyendo --add por --remove.

3. Para conceder acceso de escritura a un tema, ejecute el siguiente comando en su máquina del cliente.Utilice el mismo Distinguished-Name (Nombre-distinguido) que utilizó al crear la claveprivada.

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name

Para eliminar el acceso de escritura, puede ejecutar el mismo comando, sustituyendo --add por --remove.

Control del acceso a Apache ZooKeeperPor razones de seguridad, puede limitar el acceso a los nodos Apache ZooKeeper que forman parte desu Clúster de Amazon MSK. Para limitar el acceso a los nodos, puede asignarles un grupo de seguridadindependiente. A continuación, puede decidir quién obtiene acceso a ese grupo de seguridad.

73

Page 79: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Registro

Para colocar los nodos Apache ZooKeeper en un grupo de seguridad independiente

1. Obtenga la cadena de conexión Apache ZooKeeper de su clúster. Para saber cómo hacerlo, consultethe section called “Obtención de la cadena de conexión Apache ZooKeeper” (p. 19). La cadena deconexión contiene los nombres de DNS de los nodos Apache ZooKeeper.

2. Utilice una herramienta como host o ping para convertir los nombres de los DNS que obtuvo en elpaso anterior a las direcciones IP. Guarde estas direcciones IP porque las necesitará más adelante eneste procedimiento.

3. Guarde las direcciones IP de los nodos Apache ZooKeeper porque las necesitará más adelante eneste procedimiento.

4. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

5. En el panel izquierdo, en NETWORK & SECURITY (Red y seguridad), seleccione Network Interfaces(Interfaces de red).

6. En el campo de búsqueda situado encima de la tabla de interfaces de red, escriba el nombre delclúster y, a continuación, escriba return. Esto limita el número de interfaces de red que aparecen en latabla a las interfaces asociadas al clúster.

7. Marque la casilla de verificación al principio de la fila correspondiente a la primera interfaz de red de lalista.

8. En el panel de detalles en la parte inferior de la página, busque la IP IPv4 privada principal. Siesta dirección IP coincide con una de las direcciones IP que obtuvo en el primer paso de esteprocedimiento, esto significa que esta interfaz de red está asignada a un nodo Apache ZooKeeper queforma parte del clúster. De lo contrario, anule la selección de la casilla de verificación situada junto aesta interfaz de red y seleccione la siguiente interfaz de red de la lista. El orden en el que seleccionalas interfaces de red no importa. En los siguientes pasos, realizará las mismas operaciones en todaslas interfaces de red asignadas a los nodos Apache ZooKeeper, una a una.

9. Cuando seleccione una interfaz de red que corresponda a un nodo Apache ZooKeeper, elija el menúActions (Acciones) en la parte superior de la página y, a continuación, elija Change security groups(Cambiar grupos de seguridad). Asigne un nuevo grupo de seguridad a esta interfaz de red. Paraobtener más información acerca de la creación de grupos de seguridad, consulte Creación de ungrupo de seguridad en la documentación de Amazon VPC.

10. Repita el paso anterior para asignar el mismo nuevo grupo de seguridad a todas las interfaces de redasociadas a los nodos Apache ZooKeeper del clúster.

11. Ahora puede elegir quién tiene acceso a este nuevo grupo de seguridad. Para obtener informaciónacerca de cómo establecer reglas de grupo de seguridad, consulte Adición, eliminación y actualizaciónde reglas en la documentación de Amazon VPC.

LoggingPuede entregar registros de agente de Apache Kafka a uno o más de los siguientes tipos de destino: , , .Amazon CloudWatch Logs, , Amazon S3, , Amazon Kinesis Data Firehose. También puede registrarAmazon MSK Llamadas API con AWS CloudTrail.

Registros de agenteLos registros de agente le permiten solucionar problemas de las aplicaciones Apache Kafka y analizarlas comunicaciones con su Clúster de MSK. Puede configurar su Clúster de MSK nuevo o existentepara que entregue registros de agente de nivel INFO a uno o más de los siguientes tipos de recursos dedestino: un grupo de registros de CloudWatch, un bucket de S3, una secuencia de entrega de KinesisData Firehose. A continuación, mediante Kinesis Data Firehose puede entregar los datos de registro desu secuencia de entrega a Amazon ES. Debe crear un recurso de destino antes de configurar el clúster alque se entregarán los registros de agente. Amazon MSK no crea estos recursos de destino en su nombre

74

Page 80: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Registros de agente

si no están presentes. Para obtener información acerca de estos tres tipos de recursos de destino y cómocrearlos, consulte la siguiente documentación:

• Amazon CloudWatch Logs• Amazon S3• Amazon Kinesis Data Firehose

Permisos necesarios.Para que Amazon MSK entregue registros de agente a los destinos que configure, asegúrese de que lapolítica AmazonMSKFullAccess esté asociada a su rol de IAM. Para transmitir registros de agente a unbucket de S3, también necesita que el permiso s3:PutBucketPolicy esté asociado a su rol de IAM.Para obtener información acerca de las políticas de bucket de S3, consulte ¿Cómo agrego una política debucket en S3? en la Guía del usuario de la consola de Amazon S3. Para obtener información acerca de laspolítica de IAM en general, consulte Administración de accesos en la Guía del usuario de IAM.

Política de claves CMK necesarias para usar con buckets deSSE-KMSSi habilitó el cifrado del lado del servidor para su bucket S3 utilizando claves administradas por AWS KMS(SSE-KMS) con una clave maestra de cliente (CMK) administrada por el cliente, agregue lo siguiente ala política de claves para su CMK para que Amazon MSK puede escribir archivos de intermediario en elbucket.

{ "Sid": "Allow Amazon MSK to use the key.", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

Configuración de los registros de agente mediante la Consola deadministración de AWSSi va a crear un nuevo clúster, busque el encabezado Broker log delivery (Entrega de registros de agente)en la sección Monitoring (Monitoreo). Puede especificar los destinos donde desea que Amazon MSKentregue los registros de agente.

Para un clúster existente, elija el clúster de la lista de clústeres y, a continuación, elija la pestaña Details(Detalles). Desplácese hasta el Monitorización y luego elija su Edit botón Puede especificar los destinosdonde desea que Amazon MSK entregue los registros de agente.

75

Page 81: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Registro de llamadas a API

Configuración de los registros de agente mediante la AWS CLISi utiliza los comandos update-monitoring o create-cluster, tiene la opción de especificar elparámetro logging-info y pasarlo a una estructura JSON como en el siguiente ejemplo. En este JSON,los tres tipos de destino son opcionales.

{ "BrokerLogs": { "S3": { "Bucket": "ExampleBucketName", "Prefix": "ExamplePrefix", "Enabled": true }, "Firehose": { "DeliveryStream": "ExampleDeliveryStreamName", "Enabled": true }, "CloudWatchLogs": { "Enabled": true, "LogGroup": "ExampleLogGroupName" } }}

Configuración de registros de agente mediante la APIPuede especificar la estructura loggingInfo opcional en el JSON que pasa a las operacionesCreateCluster o UpdateMonitoring.

Note

De forma predeterminada, cuando el registro de agente está habilitado, Amazon MSK registrosINFO los registros de nivel a los destinos especificados. Sin embargo, los usuarios de ApacheKafka 2.4.X y posteriores pueden establecer dinámicamente el nivel de registro de corredoresa cualquiera de los niveles log4j log. Para obtener información sobre la configuración dinámicadel nivel de registro del agente, consulte KIP-412: Ampliar la API de administración para admitirniveles de registro de aplicaciones dinámicos. Si establece dinámicamente el nivel de registroen DEBUG o TRACE, recomendamos usar Amazon S3 o Kinesis Data Firehose como destino deregistro. Si utiliza CloudWatch Registra como destino de registro y habilita dinámicamente DEBUGo TRACE registro de nivel, Amazon MSK puede entregar continuamente una muestra de registros.Esto puede afectar de forma significativa al rendimiento del agente y solo debe usarse cuando elINFO El nivel de registro no es suficiente para determinar la causa raíz de un problema.

Registro de llamadas a la API de Amazon MSK conAWS CloudTrailAmazon MSK está integrado en AWS CloudTrail, un servicio que proporciona un registro de las accionesrealizadas por un usuario, un rol o un servicio de AWS en Amazon MSK. CloudTrail captura todas lasllamadas a la API de Amazon MSK como eventos. Las llamadas capturadas incluyen las llamadasrealizadas desde la consola de Amazon MSK y las llamadas de código a las operaciones de la API deAmazon MSK.

Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a unbucket de Amazon S3, incluidos los eventos de Amazon MSK. Si no configura un registro de seguimiento,puede ver los eventos más recientes en la consola de CloudTrail en el Event history (Historial de eventos).Mediante la información que recopila CloudTrail, se puede determinar la solicitud que se envió a AmazonMSK, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo la realizó y los detallesadicionales.

76

Page 82: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Registro de llamadas a API

Para obtener más información sobre CloudTrail, incluido cómo configurarlo y habilitarlo, consulte la AWSCloudTrail User Guide.

Información de Amazon MSK en CloudTrailCloudTrail se habilita en su cuenta de AWS al crearla. Cuando se produce una actividad de eventoscompatible en Amazon MSK, dicha actividad se registra en un evento de CloudTrail junto con los eventosde los demás servicios de AWS en Event history (Historial de eventos). Puede ver, buscar y descargar losúltimos eventos de la cuenta de AWS. Para obtener más información, consulte Visualización de eventoscon el historial de eventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de AmazonMSK, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos deregistro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimientoen la consola, este se aplica a todas las regiones de AWS. El registro de seguimiento registra los eventosde todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3especificado. También puede configurar otros servicios de AWS para analizar y actuar en función de losdatos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte losiguiente: .

• Introducción a la creación de registros de seguimiento• CloudTrail Servicios e integraciones compatibles• Configurar notificaciones SNS de Amazon para CloudTrail• Recepción de archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro

de CloudTrail de varias cuentas

Amazon MSK registra todas las operaciones como eventos en archivos de CloudTrail registro.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La informaciónde identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con credenciales de usuario raíz o de AWS Identity and Access Management(IAM).

• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte el elemento userIdentity de CloudTrail.

Ejemplo: entradas de archivos de registro de Amazon MSKUn registro de seguimiento es una configuración que permite la entrega de eventos como archivos deregistro al bucket de Amazon S3 que se especifique. Los archivos de registro de CloudTrail contienenuna o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluyeinformación sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud,etcétera. Los archivos de registro de CloudTrail no están un rastro de la pila ordenada de las llamadas a laAPI públicas, por lo que no aparecen en ningún orden específico.

El siguiente ejemplo muestra las entradas de registro de CloudTrail que demuestra las acciones deDescribeCluster y DeleteCluster.

{ "Records": [ { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser",

77

Page 83: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Registro de llamadas a API

"principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:24Z", "eventSource": "kafka.amazonaws.com", "eventName": "DescribeCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" }, "responseElements": null, "requestID": "bd83f636-fdb5-abcd-0123-157e2fbf2bde", "eventID": "60052aba-0123-4511-bcde-3e18dbd42aa4", "readOnly": true, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:40Z", "eventSource": "kafka.amazonaws.com", "eventName": "DeleteCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" }, "responseElements": { "clusterArn": "arn:aws:kafka:us-east-1:012345678901:cluster/examplecluster/01234567-abcd-0123-abcd-abcd0123efa-2", "state": "DELETING" }, "requestID": "c6bfb3f7-abcd-0123-afa5-293519897703", "eventID": "8a7f1fcf-0123-abcd-9bdb-1ebf0663a75c", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" } ]}

78

Page 84: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Validación de la conformidad

Validación de la conformidad para AmazonManaged Streaming para Apache Kafka

Auditores externos evalúan la seguridad y la conformidad de Amazon Managed Streaming para ApacheKafka como parte de programas de conformidad de AWS. Estos incluyen PCI y HIPAA BAA.

Para obtener una lista de servicios de AWS en el ámbito de programas de conformidad específicos,consulte Servicios de AWS en el ámbito del programa de conformidad. Para obtener información general,consulte Programas de conformidad de AWS.

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener másinformación, consulte Descarga de informes en AWS Artifact.

Su responsabilidad de conformidad al utilizar Amazon MSK se determina en función de la confidencialidadde los datos, los objetivos de conformidad de su empresa y la legislación, así como los reglamentoscorrespondientes. AWS proporciona los siguientes recursos para ayudarle a cumplir las normativas:

• Guías de inicio rápido de seguridad y conformidad– estas guías de implementación tratanconsideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referenciacentrados en la seguridad y la conformidad en AWS.

• Documento técnico sobre arquitectura para seguridad y conformidad de HIPAA– este documento técnicodescribe cómo las empresas pueden utilizar AWS para crear aplicaciones conformes con HIPAA.

• Recursos de conformidad de AWS – este conjunto de manuales y guías podría aplicarse a su sector yubicación.

• Evaluación de recursos con reglas en la Guía para desarrolladores de AWS Config – el servicio AWSConfig evalúa en qué medida las configuraciones de los recursos cumplen con las prácticas internas, lasdirectrices del sector y las normativas.

• AWS Security Hub: este servicio de AWS ofrece una vista integral de su estado de seguridad en AWSque le ayuda a comprobar la conformidad con las normas del sector de seguridad y las prácticasrecomendadas.

Resiliencia en Amazon Managed Streaming paraApache Kafka

La infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Lasregiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladasque se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, ademásde baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datosque realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas dedisponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructurastradicionales de centros de datos únicos o múltiples.

Para obtener más información sobre zonas de disponibilidad y las regiones de AWS, consulteInfraestructura global de AWS.

Además de la infraestructura global de AWS, Amazon MSK ofrece varias características que le ayudan consus necesidades de resiliencia y copia de seguridad de los datos.

79

Page 85: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresSeguridad de la infraestructura

Seguridad de la infraestructura en AmazonManaged Streaming para Apache Kafka

Al tratarse de un servicio administrado, Amazon Managed Streaming para Apache Kafka está protegidopor los procedimientos de seguridad de red globales de AWS que se describen en el documento técnicoAmazon Web Services: Información general sobre procesos de seguridad.

Puede utilizar llamadas a la API publicadas en AWS para obtener acceso a Amazon MSK a través de lared. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior.Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles conconjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE)o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7 yposteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de accesosecreta que esté asociada a una entidad principal de IAM. También puede utilizar AWS Security TokenService (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

80

Page 86: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresInterconexión de Amazon VPC

Acceso a Clúster de Amazon MSKPara acceder a su Clúster de Amazon MSK desde un cliente que está en la misma Amazon VPC que elclúster, asegúrese de que el grupo de seguridad del clúster tiene una regla de entrada que acepte tráficodel grupo de seguridad del cliente. Para obtener información acerca de estas reglas, consulte Reglas delgrupo de seguridad. Para obtener un ejemplo de cómo acceder a un clúster desde una instancia AmazonEC2 que está en la misma VPC que el clúster, consulte Introducción (p. 4).

Para acceder a un Clúster de MSK desde fuera de su Amazon VPC, tiene a su disposición las siguientesopciones.

Interconexión de Amazon VPCPara acceder a su Clúster de MSK desde una VPC diferente de la VPC del clúster, puede crear unainterconexión entre las dos VPC. Para obtener información sobre las interconexiones de VPC, consulte laGuía de interconexión de Amazon VPC.

AWS Direct ConnectAWS Direct Connect vincula su red interna con una ubicación de AWS Direct Connect a través de uncable estándar Ethernet de fibra óptica de 1 o 10 gigabits. Un extremo del cable se conecta a su router yel otro al router de AWS Direct Connect. Con esta conexión establecida, puede crear interfaces virtualesdirectamente en la nube de AWS y la Amazon VPC omitiendo a los proveedores de Internet en su ruta deacceso a la red. Para obtener más información, consulte AWS Direct Connect.

AWS Transit GatewayAWS Transit Gateway es un servicio que le permite conectar sus VPC y sus redes en las instalaciones auna única gateway. Para obtener información acerca de cómo utilizar AWS Transit Gateway, consulte AWSTransit Gateway.

Conexiones de VPNPuede conectar la VPC de su Clúster de MSK a redes y usuarios remotos mediante las opciones deconectividad de VPN descritas en el tema siguiente: Conexiones de VPN.

Proxies RESTPuede instalar una proxy REST en una instancia en ejecución en la Amazon VPC del clúster. Los proxiesREST permiten a los productores y los consumidores comunicarse con el clúster mediante solicitudes deAPI HTTP.

81

Page 87: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Conectividad de varias VPC en regiones diferentes

Conectividad de varias VPC en regiones diferentesEn el siguiente documento se describen las opciones de conectividad para varias VPC que residen endistintas regiones de AWS: Conectividad de varias VPC en regiones diferentes.

EC2-ClassicUtilice el siguiente procedimiento para acceder al clúster desde una instancia EC2 clásica.

1. Siga las instrucciones descritas en ClassicLink para conectar la instancia EC2 clásica a la VPC delclúster.

2. Busque y copie la IP privada asociada a la instancia EC2 clásica.3. Mediante AWS CLI, ejecute el siguiente comando, reemplazando ClusterArn por el nombre de

recurso de Amazon (ARN) para su Clúster de MSK.

aws kafka describe-cluster --region us-east-1 --cluster-arn "ClusterArn"

4. En la salida del comando describe-cluster, busque SecurityGroups y guarde el ID del grupode seguridad para su Clúster de MSK.

5. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.6. En el panel izquierdo, elija Security groups (Grupos de seguridad).7. Elija el grupo de seguridad cuyo ID guardó después de ejecutar el comando describe-cluster.

Seleccione la casilla al principio de la fila correspondiente a este grupo de seguridad.8. En la mitad inferior de la página, elija Inbound Rules (Reglas de entrada).9. Elija Edit rules (Editar reglas) y, a continuación, Add Rule (Añadir regla).10. Para el campo Type (Tipo), elija All traffic (Todo el tráfico) en la lista desplegable.11. De la Source (Fuente) configurada en Custom (Personalizado) e introduzca la IP privada de su

instancia EC2-Classic, seguido inmediatamente de /32 sin espacios en medio.12. Seleccione Save rules (Guardar reglas).

Información del puertoLa siguiente lista proporciona los números de los puertos que utiliza Amazon MSK para comunicarse conlas máquinas del cliente.

• Para comunicarse con productores y consumidores con texto no cifrado, los agentes utilizan el puerto9092.

• Para comunicarse con productores y consumidores con TLS, los agentes utilizan el puerto 9094.• Los nodos Apache ZooKeeper utilizan el puerto 2181.

82

Page 88: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Migración de su clúster de Apache Kafka a Amazon MSK

Migración de clústeres medianteMirrorMaker de Apache Kafka

Puede duplicar o migrar su clúster utilizando MirrorMarker, que forma parte de Apache Kafka. Por ejemplo,puede utilizarlo para migrar su clúster de Apache Kafka a Amazon MSK o migrar desde un Clúster deMSK a otro. Para obtener información sobre cómo utilizar MirrorMarker consulte Migración de datos entreclústeres en la documentación de Apache Kafka. Le recomendamos configurar MirrorMaker con unaconfiguración de alta disponibilidad.

Un esquema de los pasos a seguir al utilizar MirrorMarket para migrar a un Clúster de MSK.

1. Creación del Clúster de MSK de destino2. Inicie MirrorMarker desde una instancia de Amazon EC2 en la misma Amazon VPC que el clúster de

destino.3. Inspeccione el intervalo de MirrorMarker.4. Después de que MirrorMarker se ponga al día, redirija los productores y los consumidores al nuevo

clúster utilizando los agentes de arranque del clúster de MSK.5. Apague MirrorMaker.

Migración de su clúster de Apache Kafka a AmazonMSK

Supongamos que tiene un clúster de Apache Kafka llamado CLUSTER_ONPREM. Dicho clúster serellena con temas y datos. Si desea migrar dicho clúster a un Clúster de Amazon MSK nuevo llamadoCLUSTER_AWSMSK, este procedimiento ofrece una gran perspectiva de los pasos que debe seguir.

Para migrar su clúster de Apache Kafka existente a Amazon MSK

1. En CLUSTER_AWSMSK, cree todos los temas que desee migrar.

No puede utilizar MirrorMarket en este paso ya que no vuelve a crear de manera automática los temasque desea migrar con el nivel de replicación adecuado. Puede crear los temas en Amazon MSK conlos mismos factores de replicación y números de particiones que tuviesen en CLUSTER_ONPREM.También puede crear los temas con distintos factores de replicación y números de particiones.

2. Inicie MirrorMarker desde una instancia que tenga acceso de lectura a CLUSTER_ONPREM y escriba elacceso a CLUSTER_AWSMSK.

3. Ejecute el siguiente comando para duplicar todos los temas:

./bin/kafka-mirror-maker.sh --consumer.config config/mirrormaker-consumer.properties --producer.config config/mirrormaker-producer.properties --whitelist '.*'

En este comando, config/mirrormaker-consumer.properties señala a un agente dearranque en CLUSTER_ONPREM, por ejemplo, bootstrap.servers=localhost:9092. Y config/mirrormaker-producer.properties señala a un agente de arranque en CLUSTER_AWSMSK,por ejemplo, bootstrap.servers=10.0.0.237:9092,10.0.2.196:9092,10.0.1.233:9092.

83

Page 89: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Migración de un Clúster de Amazon MSK a otro

4. Mantenga MirrorMarker en funcionamiento de fondo y continúe utilizando CLUSTER_ONPREM.MirrorMarker duplica todos los datos nuevos.

5. Compruebe el progreso de duplicado inspeccionando el intervalo entre el último desplazamiento decada tema y el desplazamiento actual desde el que MirrorMarker consume.

Recuerde que MirrorMarker solo utiliza un consumidor y un productor. Por lo tanto, puede comprobarel intervalo utilizando la herramienta kafka-consumer-groups.sh. Para localizar el nombredel grupo de consumidores, mire en el archivo mirrormaker-consumer.properties para elgroup.id y utilice su valor. Si en el archivo no se encuentra dicha clave, puede crearla. Por ejemplo,establezca group.id=mirrormaker-consumer-group.

6. Cuando MirrorMarker termine de duplicar todos los temas, detenga todos los productores yconsumidores y, a continuación, detenga MirrorMarker. A continuación, redirija a los productoresy los consumidores al clúster de CLUSTER_AWSMSK cargando los valores de los agentes dearranque de sus productores y consumidores. Reinicie todos los productores y consumidores enCLUSTER_AWSMSK.

Migración de un Clúster de Amazon MSK a otroPuede utilizar MirrorMarker de Apache para migrar un Clúster de MSK a otro clúster. Por ejemplo, puedemigrar de una versión de Apache Kafka a otra. Para ver un ejemplo de cómo utilizar AWS CloudFormationpara hacerlo, consulte ejemplos de AWS::MSK::Cluster (buscar el ejemplo titulado Create Two MSKClusters To Use With Apache MirrorMaker).

Prácticas recomendadas de MirrorMarker 1.0Esta lista de prácticas recomendadas se aplica a MirrorMarker 1.0.

• Ejecute MirrorMarker en el clúster de destino. De esta forma, si se produce un problema de red, losmensajes seguirán estando disponibles en el clúster de origen. Si ejecuta MirrorMarker en el clúster deorigen y los casos se almacenan en el búfer del productor y hay un problema de red, es posible que loscasos se pierdan.

• Si en el tránsito es necesario cifrar, hágalo en el clúster de origen.• Para los consumidores, establezca auto.commit.enabled=false• Para los productores, establezca

• max.in.flight.requests.per.connection=1• retries=Int.Max_Value• acks=all• max.block.ms = Long.Max_Value

• Para un alto rendimiento del productor:• Almacene mensajes en el búfer y rellene lotes de mensajes: sincronice buffer.memory, batch.size,

linger.ms• Sincronice búferes de carga: receive.buffer.bytes, send.buffer.bytes

• Para evitar que se pierdan datos, desactive el envío automático en el origen, de forma que MirrorMarkerpueda controlar los envíos, habitualmente lo hace tras recibir el ack del clúster de destino. Si el productortiene acks=all y el clúster de destino tiene min.insync.replicas establecido en más de 1, los mensajesperduran en más de un agente en el destino antes de que el consumidor de MirrorMarker envíe eldesplazamiento al origen.

• Si el orden es importante, puede establecer los reintentos en 0. De manera alternativa, para un entornode producción, establezca las conexiones en tránsito máximas en 1 para garantizar que los lotesenviados no se envían fuera del orden si un lote produce un error a la mitad. De esta forma, cada lote

84

Page 90: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ventajas de MirrorMaker 2.*

enviado se vuelve a intentar hasta que el siguiente lote se envía. Si max.block.ms no se establece alvalor mínimo y el búfer del producto está completo, puede haber pérdida de datos (dependiendo de otrasconfiguraciones). Esto puede bloquear y ejercer presión contra el consumidor.

• Para un gran rendimiento• Aumente la memoria del búfer.• Aumente el tamaño del lote.• Sincronice linger.ms para permitir que los lotes se completen. Esto también permite una mejor

compresión, menos uso de la banda ancha de red y menos almacenamiento en el clúster. Todo estoresultar en una mayor retención.

• Supervisar el uso de la memoria y la CPU.• Para un gran rendimiento del consumidor

• Aumente el número de subprocesos/consumidores por proceso de MirrorMaker: num.streams.• Aumente el número de procesos de MirrorMarker en las máquinas antes de aumentar los subprocesos

para permitir una mayor disponibilidad.• Aumente el número de procesos de MirrorMaker primero en el mismo equipo y luego en equipos

diferentes (con el mismo ID de grupo).• Aísle los temas con un rendimiento muy alto y utilice instancias independientes de MirrorMaker.

• Para la administración y la configuración• Utilice AWS CloudFormation y herramientas de administración de configuración como Chef y Ansible.• Utilice montajes de Amazon EFS para mantener accesibles todos los archivos de configuración desde

todas las instancias Amazon EC2.• Utilice contenedores para facilitar el escalado y la administración de instancias de MirrorMaker.

• Normalmente, se necesita más de un consumidor para saturar a un productor en MirrorMaker. Porlo tanto, configure varios consumidores. En primer lugar, configúrelos en diferentes equipos paraproporcionar alta disponibilidad. A continuación, escale equipos individuales hasta tener un consumidorpara cada partición, con los consumidores distribuidos equitativamente entre los equipos.

• Para la adquisición y entrega de alto rendimiento, ajuste los búferes de recepción y envío, porquesus valores predeterminados podrían ser demasiado bajos. Para obtener el máximo rendimiento,asegúrese de que el número total de flujos (num.streams) coincida con todas las particiones de temasque MirrorMaker intenta copiar en el clúster de destino.

Ventajas de MirrorMaker 2.*• Hace uso del marco y ecosistema de Apache Kafka Connect.• Detecta nuevos temas y particiones.• Sincroniza automáticamente la configuración de temas entre clústeres.• Admite pares de clústeres «activo/activo», así como cualquier número de clústeres activos.• Proporciona nuevas métricas, incluida la latencia de replicación integral en varios centros de datos y

clústeres.• Emite las compensaciones necesarias para migrar consumidores entre clústeres y proporciona

herramientas para traducir compensaciones.• Admite un archivo de configuración de alto nivel para especificar varios clústeres y flujos de replicación

en un solo lugar, en comparación con las propiedades de productor/consumidor de bajo nivel para cadaproceso de MirrorMaker 1.*.

85

Page 91: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Límites de Amazon MSKAmazon MSK tiene los siguientes límites: si necesita más límites, puede crear un caso de soporte.

• Hasta 90 agentes por cuenta y 30 agentes por clúster• Un mínimo de 1 GiB de almacenamiento por agente• Un máximo de 16384 GiB de almacenamiento por agente• Hasta 100 configuraciones por cuenta

86

Page 92: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Versiones compatibles de Apache Kafka

Versiones de Apache KafkaCuando se crea un Clúster de Amazon MSK, debe especificar la versión de Apache Kafka que desea quetenga. También puede actualizar la versión de Apache Kafka de un clúster existente.

Temas• Versiones compatibles de Apache Kafka (p. 87)• Actualización de la versión de Apache Kafka (p. 88)

Versiones compatibles de Apache KafkaAmazon Managed Streaming para Apache Kafka (Amazon MSK) es compatible con los siguientesdispositivos Apache Kafka y Amazon MSK versiones de.

Amazon MSK bug-fix versión 2.4.1.1Esta versión es un Amazon MSK: solo se ha corregido un error en la versión 2.4.1 de Apache Kafka.Esta versión de corrección de errores contiene una solución para de la KAFKA-9752, un problemararo que provoca que los grupos de consumidores se reequilibren continuamente y permanezcan enel PreparingRebalance el estado. Este problema afecta a los clústeres que ejecutan Apache Kafkaversiones 2.3.1 y 2.4.1. Esta versión contiene una corrección producida por la comunidad que estádisponible en Apache Kafka versión 2.5.0.

Le recomendamos que utilice la versión 2.4.1.1 de MSK bug-fix para las nuevas Amazon MSK Losclústeres de si prefiere utilizar Apache Kafka 2.4.1. Puede actualizar los clústeres existentes que ejecutanApache Kafka versión 2.4.1 a esta versión para incorporar esta corrección. Para obtener información sobrecómo actualizar un clúster existente, consulte Actualización de la versión de Apache Kafka (p. 88).

Para solucionar este problema sin actualizar el clúster a la versión 2.4.1.1, consulte la El grupo deconsumidores está atascado en PreparingRebalance estado (p. 91) de la sección ??? (p. 91)guía.

Versión 2.4.1 de Apache KafkaKIP-392 es una de las principales propuestas de mejora de Kafka que se incluyen en la versión2.4.1 de Apache Kafka. Esta mejora permite a los consumidores recuperar de la réplica máscercana. Para utilizar esta característica, establezca client.rack en las propiedades delconsumidor en el ID de la zona de disponibilidad del consumidor. Un ejemplo de ID de AZ esuse1-az1. Amazon MSK establece broker.rack en los ID de las zonas de disponibilidad de losagentes. También debe establecer la propiedad de configuración replica.selector.class enorg.apache.kafka.common.replica.RackAwareReplicaSelector, que es una implementaciónde reconocimiento de bastidor proporcionada por Apache Kafka.

Cuando utiliza esta versión de Apache Kafka, las métricas en el nivel de monitoreo abiertoPER_TOPIC_PER_BROKER aparecen solo después de que sus valores sean distintos de cero por primeravez. Para obtener más información acerca de este tema, consulte the section called “Monitoreo de nivelPER_TOPIC_PER_BROKER” (p. 34).

Para obtener información acerca de cómo buscar ID de zona de disponibilidad, consulte ID de AZ para susrecursos en la guía del usuario de AWS Resource Access Manager.

87

Page 93: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresVersión 2.3.1 de Apache Kafka

Para obtener información sobre los ajustes de las propiedades de configuración, consulte :Configuration (p. 45).

Para obtener más información acerca de KIP-392, consulte Allow Consumers to Fetch from ClosestReplica en las páginas de Confluence.

Para obtener más información sobre la versión 2.4.1 de Apache Kafka, consulte las notas de la versión enel sitio de descargas de Apache Kafka.

Versión 2.3.1 de Apache KafkaPara obtener información sobre la versión 2.3.1 de Apache Kafka, consulte las notas de la versión en elsitio de descargas de Apache Kafka.

Versión 2.2.1 de Apache KafkaPara obtener información sobre la versión 2.2.1 de Apache Kafka, consulte las notas de la versión en elsitio de descargas de Apache Kafka.

Versión 1.1.1 de Apache KafkaPara obtener información sobre la versión 1.1.1 de Apache Kafka, consulte las notas de la versión en elsitio de descargas de Apache Kafka.

Actualización de la versión de Apache KafkaPuede actualizar un Clúster de MSK existente a una versión más reciente de Apache Kafka. No puedesactualizarlo a una versión anterior. Cuando actualice la versión de Apache Kafka de un Clúster de MSK,también verifique su software del lado del cliente para asegurarse de que su versión le permite utilizar lascaracterísticas de la nueva versión de Apache Kafka del clúster. Amazon MSK sólo actualiza el softwaredel servidor. No actualiza a sus clientes.

Important

Para obtener información acerca de cómo hacer que un clúster esté altamente disponible duranteuna actualización, consulte the section called “Crear clústeres de alta disponibilidad” (p. 97).

Actualización de la versión de Apache Kafka mediante la Consola de administración de AWS

1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.2. Elija el Clúster de MSK en el que desea actualizar la versión de Apache Kafka.3. En la Detalles seleccionar pestaña Upgrade the Apache Kafka version.

Actualización de la versión de Apache Kafka mediante la AWS CLI

1. Ejecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon(ARN) que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarloenumerando todos los clústeres. Para obtener más información, consulte the section called “Listado declústeres de ” (p. 21).

aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn

El resultado de este comando incluye una lista de las versiones de Apache Kafka en las que puedeactualizar el clúster. Es similar al ejemplo siguiente.

88

Page 94: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Actualización de la versión de Apache Kafka

{ "CompatibleKafkaVersions": [ { "SourceVersion": "2.2.1", "TargetVersions": [ "2.3.1", "2.4.1" ] } ]}

2. Ejecute el siguiente comando, reemplazando ClusterArn con el nombre de recurso de Amazon(ARN) que obtuvo al crear el clúster de. Si no tiene el ARN para su clúster, puede encontrarloenumerando todos los clústeres. Para obtener más información, consulte the section called “Listado declústeres de ” (p. 21).

Reemplazar Current-Cluster-Version con la versión actual del clúster. En : TargetVersionpuede especificar cualquiera de las versiones de destino desde la salida del comando anterior.

Important

Las versiones de clúster no son enteros simples. Puede obtener la versión actualdescribiendo el clúster. Un ejemplo de ID de versión es KTVPDKIKX0DER.

aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion

El resultado del comando anterior tiene un aspecto similar al siguiente JSON.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

3. Para obtener el resultado de la update-cluster-kafka-version operación, ejecute el siguientecomando, reemplazando ClusterOperationArn con el ARN que obtuvo en la salida de la update-cluster-kafka-version del comando.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

El resultado de este comando describe-cluster-operation tendrá un aspecto similar alsiguiente.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_IN_PROGRESS", "OperationSteps": [

89

Page 95: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Actualización de la versión de Apache Kafka

{ "StepInfo": { "StepStatus": "IN_PROGRESS" }, "StepName": "INITIALIZE_UPDATE" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "UPDATE_APACHE_KAFKA_BINARIES" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "FINALIZE_UPDATE" } ], "OperationType": "UPDATE_CLUSTER_KAFKA_VERSION", "SourceClusterInfo": { "KafkaVersion": "2.2.1" }, "TargetClusterInfo": { "KafkaVersion": "2.4.1" } }}

Si OperationState tiene el valor UPDATE_IN_PROGRESS, espere un rato y vuelva a ejecutarel comando describe-cluster-operation. Cuando se completa la operación, el valor deOperationState se convierte en UPDATE_COMPLETE.

Actualización de la versión de Apache Kafka mediante la API

1. Invoque la operación GetCompatibleKafkaVersions para obtener una lista de las versiones de ApacheKafka en las que puede actualizar el clúster.

2. Invoque la operación UpdateClusterKafkaVersion para actualizar el clúster a una de las versionescompatibles de Apache Kafka.

90

Page 96: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

El grupo de consumidores está atascadoen PreparingRebalance estado

Solución de problemas de Clúster deAmazon MSK

La siguiente información le puede ayudar a solucionar los problemas que podrían presentarse con Clústerde Amazon MSK. También puede publicar su número en el foro de Amazon MSK.

Temas• El grupo de consumidores está atascado en PreparingRebalance estado (p. 91)• Error al entregar los registros de agente a Amazon CloudWatch Logs (p. 92)• Ningún grupo de seguridad predeterminado (p. 92)• El clúster aparece atascado en el estado CREATING (Creando) (p. 93)• El estado del clúster pasa de CREATING (Creando) a FAILED (Error) (p. 93)• El estado del clúster es ACTIVE (Activo), pero los productores no pueden enviar datos o los

consumidores no pueden recibir datos (p. 93)• La AWS CLI no reconoce Amazon MSK (p. 93)• Las particiones se desconectan o las réplicas no están sincronizadas (p. 93)• El espacio en el disco se está agotando (p. 94)• La memoria se está agotando (p. 94)• Al productor le aparece NotLeaderForPartitionException (p. 94)• Particiones subreplicadas (URP) mayores que cero (p. 94)• Problemas de red (p. 94)

El grupo de consumidores está atascado enPreparingRebalance estado

Si uno o varios de sus grupos de consumidores se quedan bloqueados en un estado de reequilibrioperpetuo, la causa podría ser un problema de Apache Kafka de la KAFKA-9752, que afecta a las versiones2.3.1 y 2.4.1 de Apache Kafka.

Para resolver este problema, le recomendamos que actualice el clúster a Amazon MSK bug-fix versión2.4.1.1 (p. 87), que contiene una corrección para este problema. Para obtener información sobre cómoactualizar un clúster existente a Amazon MSK bug-fix versión 2.4.1.1, consulte Actualización de la versiónde Apache Kafka (p. 88).

Las soluciones alternativas para resolver este problema sin actualizar el clúster a Amazon MSK Laversión 2.4.1.1 de bug-fix debe configurar los clientes de Kafka para que utilicen Protocolo de afiliaciónestática (p. 91) , o en Identificar y reiniciar (p. 92) el nodo del agente de coordinación del grupo deconsumidores bloqueados.

Implementación del protocolo de afiliación estáticaPara implementar el protocolo de pertenencia estática en sus clientes, haga lo siguiente:

1. Establezca el parámetro group.instance.id de su Consumidores de Kafka configuración a unacadena estática que identifica al consumidor en el grupo.

91

Page 97: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Identificar y reiniciar

2. Asegúrese de que otras instancias de la configuración se actualizan para utilizar la cadena estática.3. Implemente los cambios en sus consumidores de Kafka.

El uso del protocolo de pertenencia estática es más eficaz si el tiempo de espera de la sesión en laconfiguración del cliente se establece en una duración que permite al consumidor recuperarse sin activarde forma prematura el reequilibrio de un grupo de consumidores. Por ejemplo, si la aplicación consumidorapuede tolerar 5 minutos de indisponibilidad, un valor razonable para el tiempo de espera de la sesión seríade 4 minutos en lugar del valor predeterminado de 10 segundos.

Note

El uso del protocolo de pertenencia estática solo reduce la probabilidad de encontrar esteproblema. Aunque utilice el protocolo de afiliación estática , es posible que siga teniendo esteproblema.

Reinicio del nodo del agente de coordinaciónPara reiniciar el nodo del agente de coordinación, haga lo siguiente:

1. Identifique al coordinador del grupo utilizando el kafka-consumer-groups.sh del comando.2. Reinicia el coordinador de grupo del grupo de consumidores bloqueados utilizando el botón

RearrancarAprobador Acción de la API.

Error al entregar los registros de agente a AmazonCloudWatch Logs

Cuando intenta configurar el clúster para enviar registros de agente a Amazon CloudWatch Logs, puedeobtener una de las dos excepciones.

Si obtienes un InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded , inténtelode nuevo, pero utilice grupos de registros que comiencen por /aws/vendedlogs/. Para obtener másinformación, consulte Habilitación del registro desde determinados servicios de AWS.

Si obtiene una excepciónInvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded, elija una política deAmazon CloudWatch Logs existente en su cuenta y agregue el siguiente JSON.

{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}

Si intenta agregar el JSON anterior a una política existente pero recibe un error que indica que haalcanzado la longitud máxima de la política que eligió, intente agregar el JSON a otra de sus políticas deAmazon CloudWatch Logs. Después de agregar el JSON a una política existente, intente una vez másconfigurar la entrega del registro de agente a Amazon CloudWatch Logs.

Ningún grupo de seguridad predeterminadoSi intenta crear un clúster y obtiene un error que indica que no hay ningún grupo de seguridadpredeterminado, puede deberse a que está utilizando una VPC compartida con usted. Pídale aladministrador que le conceda permiso para describir los grupos de seguridad de esta VPC e inténtelo denuevo. Para ver un ejemplo de una política que permite esta acción, consulte de Amazon EC2: Permite

92

Page 98: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresEl clúster aparece atascado enel estado CREATING (Creando)

administrar grupos de seguridad de EC2 asociados a una VPC específica, mediante programación y en laconsola de .

El clúster aparece atascado en el estadoCREATING (Creando)

A veces, la creación de clústeres puede tardar hasta 30 minutos. Espere 30 minutos y compruebe denuevo el estado del clúster.

El estado del clúster pasa de CREATING (Creando)a FAILED (Error)

Intente crear el clúster de nuevo.

El estado del clúster es ACTIVE (Activo), perolos productores no pueden enviar datos o losconsumidores no pueden recibir datos

• Si la creación del clúster se realiza correctamente (el estado del clúster es ACTIVE), pero no puedeenviar ni recibir datos, asegúrese de que las aplicaciones de productor y consumidor tengan accesoal clúster. Para obtener más información, consulte la guía en the section called “Paso 4. Crear unamáquina cliente” (p. 10).

• Si sus productores y consumidores tienen acceso al clúster pero siguen teniendo problemas paraproducir y consumir datos, la causa podría ser KAFKA-7697, que afecta a Apache Kafka versión 2.1.0y puede conducir a un punto muerto en uno o más corredores. Considere migrar a Apache Kafka 2.2.1,que no se ve afectado por este error. Para obtener información acerca de cómo efectuar la migración,consulte Migración (p. 83).

La AWS CLI no reconoce Amazon MSKSi tiene AWS CLI instalado, pero no reconoce los comandos Amazon MSK, actualice su AWS CLI a laversión más reciente. Para obtener instrucciones detalladas sobre cómo actualizar el AWS CLI, consulteInstalación de la interfaz de línea de comandos de AWS. Para obtener información acerca de cómo utilizarAWS CLI para ejecutar comandos Amazon MSK, consulte : cómo funciona (p. 15).

Las particiones se desconectan o las réplicas noestán sincronizadas

Estos pueden ser síntomas de poco espacio en el disco. Consulte the section called “El espacio en el discose está agotando” (p. 94).

93

Page 99: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

El espacio en el disco se está agotando

El espacio en el disco se está agotandoConsulte las siguientes prácticas recomendadas para administrar el espacio en disco: the section called“Monitorear el espacio en disco” (p. 98) y the section called “Ajuste los parámetros de retención dedatos” (p. 98).

La memoria se está agotandoSi ve que la métrica MemoryUsed está ejecutándose alta o MemoryFree está ejecutándose en baja,eso no significa que haya un problema. Apache Kafka está diseñado para usar tanta memoria como seaposible, y lo gestiona de manera óptima.

Al productor le apareceNotLeaderForPartitionException

Este suele ser un error transitorio. Establezca el parámetro de configuración retries del productor en unvalor superior a su valor actual.

Particiones subreplicadas (URP) mayores que ceroEs importante supervisar la métrica UnderReplicatedPartitions. En un clúster MSK correcto, estamétrica tiene el valor 0. Si es mayor que cero, podría deberse a una de las siguientes razones.

• Si UnderReplicatedPartitions tiene picos, el problema puede ser que el clúster no se aprovisionacon el tamaño correcto para manejar el tráfico entrante y saliente. Consulte the section called “Ajustar eltamaño del clúster” (p. 97).

• Si UnderReplicatedPartitions es consistentemente mayor que 0, incluso durante períodos depoco tráfico, el problema podría ser que ha establecido ACL restrictivas que no conceden acceso al temaa los agentes. Para replicar particiones, los agentes deben estar autorizados a LEER y DESCRIBIRtemas. DESCRIBE (Describir) se concede de forma predeterminada con la autorización READ (Leer).Para obtener información sobre cómo configurar ACL, consulte Autorización y ACL en la documentaciónde Apache Kafka.

Problemas de redSi tiene una aplicación Apache Kafka que no puede comunicarse correctamente con un Clúster de MSK,comience por llevar a cabo la siguiente prueba de conectividad.

1. Utilice cualquiera de los métodos descritos en the section called “Obtención de los agentes dearranque” (p. 21) para obtener las direcciones de los agentes de arranque.

2. En el siguiente comando, sustituya bootstrap-broker con una de las direcciones de agente queobtuvo en el paso anterior. Reemplazar port-number con 9094 si el clúster está configurado parautilizar la autenticación TLS. Si el clúster no utiliza la autenticación TLS, sustituya port-number con9092. Ejecute el comando desde el equipo cliente.

telnet bootstrap-broker port-number

3. Repita el comando anterior para todos los agentes de arranque.

94

Page 100: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Cliente Amazon EC2 y Clúster de MSK en la misma VPC

4. Utilice cualquiera de los métodos descritos en the section called “Obtención de la cadena de conexiónApache ZooKeeper” (p. 19) para obtener las direcciones de los nodos Apache ZooKeeper del clúster.

5. En el equipo cliente, ejecute el siguiente comando, sustituyendo Apache-ZooKeeper-node con ladirección de uno de los nodos Apache ZooKeeper que obtuvo en el paso anterior. El número 2181 esel número de puerto. Repita para todos los nodos Apache ZooKeeper.

telnet Apache-ZooKeeper-node 2181

Si el equipo cliente puede acceder a los agentes y a los nodos Apache ZooKeeper, esto significa que nohay problemas de conectividad. En este caso, ejecute el siguiente comando para comprobar si su clienteApache Kafka está configurado correctamente. Para obtener bootstrap-brokers, utilice cualquiera delos métodos descritos en the section called “Obtención de los agentes de arranque” (p. 21). Reemplazartopic con el nombre del tema.

bin/kafka-console-producer.sh --broker-list bootstrap-brokers --producer.config client.properties —topic topic

Si el comando anterior tiene éxito, significa que su cliente está configurado correctamente. Si sigue sinpoder producir y consumir desde una aplicación, depure el problema en el nivel de aplicación.

Si el equipo cliente no puede acceder a los agentes y a los nodos Apache ZooKeeper, consulte lassiguientes subsecciones para obtener instrucciones en función de la configuración del equipo cliente.

Cliente Amazon EC2 y Clúster de MSK en la mismaVPCSi el equipo cliente está en la misma VPC que el Clúster de MSK, asegúrese de que el grupo de seguridaddel clúster tenga una regla de entrada que acepte el tráfico del grupo de seguridad del equipo cliente. Paraobtener información acerca de estas reglas, consulte Reglas del grupo de seguridad. Para obtener unejemplo de cómo acceder a un clúster desde una instancia Amazon EC2 que está en la misma VPC que elclúster, consulte Introducción (p. 4).

Cliente Amazon EC2 y Clúster de MSK en distintasVPCSi el equipo cliente y el clúster están en dos VPC diferentes, asegúrese de lo siguiente:

• Las dos VPC están interconectadas.• El estado de la interconexión está activo.• Las tablas de enrutamiento de las dos VPC están correctamente configuradas.

Para obtener información acerca de la interconexión de VPC, consulte Trabajo con interconexiones deVPC.

Cliente en las instalacionesEn el caso de un cliente local configurado para conectarse al Clúster de MSK mediante la AWS VPN,asegúrese de lo siguiente:

• El estado de la conexión de VPN es UP. Para obtener información sobre cómo comprobar el estado deconexión de VPN, consulte ¿Cómo puedo comprobar el estado actual de mi túnel de VPN?.

95

Page 101: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

AWS Direct Connect

• La tabla de enrutamiento de la VPC del clúster contiene la ruta de un CIDR en las instalaciones cuyodestino tiene el formato Virtual private gateway(vgw-xxxxxxxx).

• El grupo de seguridad de Clúster de MSK permite el tráfico en el puerto 2181, el puerto 9092 (si elclúster acepta tráfico de texto sin formato) y el puerto 9094 (si el clúster acepta tráfico cifrado TLS).

Para obtener más información sobre instrucciones de solución de problemas de AWS VPN, consulteSolución de problemas de VPN de cliente.

AWS Direct ConnectSi el cliente utiliza AWS Direct Connect, consulte Solución de problemas de AWS Direct Connect.

Si las instrucciones de solución de problemas anteriores no resuelven el problema, asegúrese de queningún firewall bloquee el tráfico de red. Para depurar más, utilice herramientas como tcpdump yWireshark para analizar el tráfico y para asegurarse de que está llegando al Clúster de MSK.

96

Page 102: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Ajustar el tamaño del clúster

Prácticas recomendadas deEn este tema se describen algunas de las prácticas recomendadas a seguir al utilizar Amazon MSK.

Ajustar el tamaño del clústerCuando se crea un Clúster de MSK, se especifica el tipo y el número de nodos de agente.

Número de particiones por tablaLa siguiente tabla muestra el número máximo recomendado de particiones (incluyendo el líder y lasréplicas de seguidores) por agente. Sin embargo, el número de particiones por agente se ve afectado porel caso de uso y la configuración. No obstante, también se recomienda que realice sus propias pruebaspara determinar el tipo de instancia adecuado para sus agentes. Para obtener más información sobre losdistintos tipos de instancias, consulte the section called “Tipos de instancia del agente” (p. 15).

Tipo de instancia de agente Número máximo de particiones (incluyendo el lídery réplicas de seguidores) por agente

t3.small $300

m5.large o m5.xlarge 1000*

m5.2xlarge 2.000 $

m5.4xlarge, , m5.8xlarge, , m5.12xlarge, ,m5.16xlarge, o m5.24xlarge

4.000 $

Para obtener instrucciones acerca de cómo elegir el número de particiones, consulte Apache KafkaSupports 200K Partitions Per Cluster.

Número de corredores por clusterPara determinar el número adecuado de agentes de su Clúster de MSK y comprender los costos, consultela hoja de cálculo Tamaño y precios de MSK. Esta hoja de cálculo proporciona una estimación del tamañode un Clúster de MSK y los costos asociados de Amazon MSK en comparación con un clúster ApacheKafka similar, administrado por cuenta propia, basado en EC2. Para obtener más información acerca delos parámetros de entrada en la hoja de cálculo, pasa el puntero del ratón por encima de las descripcionesde los parámetros. Esta hoja de cálculo fue el resultado de la ejecución de una carga de trabajo de pruebacon tres productores y tres consumidores y asegurando que las latencias de escritura de P99 fueraninferiores a 100 ms. Puede que esto no refleje su carga de trabajo o las expectativas de rendimiento. Por lotanto, le recomendamos probar las cargas de trabajo después de aprovisionar el clúster.

Crear clústeres de alta disponibilidadUtilice las siguientes recomendaciones para que Clúster de MSK pueda estar altamente disponible duranteuna actualización o cuando Amazon MSK remplace a un agente.

97

Page 103: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladoresMonitorear el espacio en disco

• Asegúrese de que el factor de replicación (RF) sea al menos 2 para clústeres de dos AZ y al menos3 para clústeres de tres AZ. Un RF de 1 puede conducir a particiones sin conexión durante unaactualización sucesiva.

• Establezca el mínimo de réplicas en sincronización (MiniSR) como máximo RF - 1. Un miniSR igual aRF puede impedir que se produzca en el clúster durante una actualización sucesiva. Un miniSR de 2permite que los temas replicados de tres vías estén disponibles cuando una réplica está fuera de línea.

• Asegúrese de que las cadenas de conexión del cliente incluyan varios agentes. Tener varios agentesen la cadena de conexión de un cliente permite la conmutación por error cuando un agente específicoestá fuera de línea para una actualización. Para obtener información acerca de cómo obtener unacadena de conexión con varios corredores, consulte the section called “Obtención de los agentes dearranque” (p. 21).

Monitorear el espacio en discoPara evitar quedarse sin espacio en disco para los mensajes, cree una alarma de CloudWatch que vigilela métrica KafkaDataLogsDiskUsed. Cuando el valor de esta métrica alcance o supere el 85 %, realiceuna o varias de las siguientes acciones:

• Aumente el almacenamiento de los agentes. Para obtener información sobre cómo hacerlo, consulte thesection called “Ampliación del almacenamiento del agente” (p. 22).

• Reduzca el período de retención de mensajes o el tamaño del registro. Para obtener información sobrecómo hacerlo, consulte the section called “Ajuste los parámetros de retención de datos” (p. 98).

• Elimine los temas que no se utilicen.

Para obtener información sobre cómo configurar y utilizar las alarmas, consulte Uso de las alarmas deAmazon CloudWatch. Para obtener una lista completa de las métricas de Amazon MSK, consulte thesection called “Monitoreo de un clúster” (p. 27).

Ajuste los parámetros de retención de datosEl consumo de los mensajes no los elimina del registro. Para liberar espacio en disco de manera regular,puede especificar explícitamente un período de retención, que es el tiempo que permanecen los mensajesen el registro. También puede especificar el tamaño del registro de una retención. Cuando se alcanzael período de retención o el tamaño del registro de retención, Apache Kafka comienza a eliminar lossegmentos inactivos del registro.

Para especificar una política de retención en el nivel de clúster, establezca uno o más de los siguientesparámetros: log.retention.hours, , log.retention.minutes, , log.retention.ms, olog.retention.bytes. Para obtener más información, consulte the section called “Configuracionespersonalizadas” (p. 45).

También puede especificar los parámetros de retención en el nivel de tema:

• Para especificar un período de retención por tema, utilice el siguiente comando.

kafka-configs.sh --zookeeper ZooKeeperConnectionString --alter --entity-type topics --entity-name TopicName --add-config retention.ms=DesiredRetentionTimePeriod

• Para especificar un tamaño de registro de retención por tema, utilice el siguiente comando.

kafka-configs.sh --zookeeper ZooKeeperConnectionString --alter --entity-type topics --entity-name TopicName --add-config retention.bytes=DesiredRetentionLogSize

98

Page 104: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

No agregue a agentes que no sean de MSK

Los parámetros de retención que especifique en el nivel del tema tienen preferencia sobre los parámetrosdel nivel del clúster.

No agregue a agentes que no sean de MSKSi utiliza comandos de Apache ZooKeeper para agregar agentes , estos agentes no se agregan a suClúster de MSK y su Apache ZooKeeper contendrá la información incorrecta acerca del clúster. Estopodría provocar la pérdida de datos. Para obtenerlas operaciones del clúster admitidas, consulte : cómofunciona (p. 15).

Habilitar el cifrado en tránsitoPara obtener información sobre el cifrado en tránsito y cómo habilitarlo, consulte the section called “Cifradoen tránsito” (p. 60).

Reasignar particionesPara mover particiones a distintos agentes del mismo clúster, puede utilizar la herramienta de reasignaciónde particiones denominada kafka-reassign-partitions.sh. Por ejemplo, después de añadirnuevos corredores para expandir un clúster, puede reequilibrar ese clúster reasignando particiones a losnuevos corredores. Para obtener información acerca de cómo agregar agentes a un clúster, consulte thesection called “Expansión de un clúster” (p. 26). Para obtener información acerca de la herramienta dereasignación de particiones, consulte Expansión de su clúster en la documentación de Apache Kafka.

99

Page 105: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Historial de revisión de la Guía paradesarrolladores de Amazon MSK

En la siguiente tabla se describen los cambios importantes que se han realizado en la Guía paradesarrolladores de Amazon MSK.

Cambiar Descripción Fecha

Soporte para actualizar la versiónApache Kafka de un clúster deAmazon MSK

Ahora puede actualizar la versiónde Apache Kafka de un Clústerde MSK existente.

2020-05-28

Soporte para nodos de agenteT3.Small

Amazon MSK ahora admitela creación de clústeres conagentes de Amazon EC2 tipoT3.small.

08/04/2020

Soporte de Apache Kafka 2.4.1 Amazon MSK ahora escompatible con la versión 2.4.1.de Apache Kafka.

02/04/2020

Compatibilidad con la transmisiónde registros de agente

Ahora Amazon MSK puedetransmitir registros de agente aCloudWatch Logs, Amazon S3 yAmazon Kinesis Data Firehose.A su vez, Kinesis Data Firehosepuede entregar estos registros alos destinos compatibles, comoAmazon ES.

25/02/2020

Soporte de Apache Kafka 2.3.1 Amazon MSK ahora escompatible con la versión 2.3.1.de Apache Kafka.

19/12/2019

Monitoreo abierto Amazon MSK ahora escompatible con el monitoreoabierto con Prometheus.

04/12/2019

Soporte de Apache Kafka 2.2.1 Amazon MSK es compatiblecon la versión 2.2.1. de ApacheKafka.

31/07/2019

Disponibilidad general Entre las nuevas característicasse incluyen la asistencia parael etiquetado, autenticación,cifrado de TLS, configuracionesy la capacidad de actualizaralmacenamiento de agentes.

30/05/2019

Soporte de Apache Kafka 2.1.0 Amazon MSK es compatiblecon la versión 2.1.0. de ApacheKafka.

05/02/2019

100

Page 106: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

AWS glossaryFor the latest AWS terminology, see the AWS glossary in the AWS General Reference.

101

Page 107: Amazon Managed Streaming para Apache Kafka - Guía para ...€¦ · Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente administrado que le permite crear

Amazon Managed Streaming for ApacheKafka Guía para desarrolladores

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés dela guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

cii


Top Related