Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Résoudre les problèmes liés à votre cluster Amazon MSK
Les informations suivantes peuvent vous aider à résoudre les problèmes que vous pourriez rencontrer avec votre MSK cluster Amazon. Vous pouvez également publier votre problème sur AWS re:Post
Rubriques
- Le remplacement du volume entraîne une saturation du disque en raison d'une surcharge de réplication
- Groupe de consommateurs bloqué à l'état PreparingRebalance
- Erreur lors de la transmission des journaux du courtier à Amazon CloudWatch Logs
- Aucun groupe de sécurité par défaut
- Le cluster semble bloqué dans l'CREATINGétat
- L'état du cluster passe de CREATING à FAILED
- État du cluster : les producteurs ACTIVE ne peuvent pas envoyer de données ou les consommateurs ne peuvent pas recevoir de données
- AWS CLI ne reconnaît pas Amazon MSK
- Les partitions se déconnectent ou les réplicas sont désynchronisés
- L'espace disque est faible
- Mémoire faible
- Le producteur obtient NotLeaderForPartitionException
- Partitions sous-répliquées (URP) supérieures à zéro
- Le cluster contient des rubriques appelées __amazon_msk_canary et __amazon_msk_canary_state
- Échec de la réplication des partitions
- Impossible d'accéder au cluster dont l'accès public est activé
- Impossible d'accéder au cluster depuis l'intérieur AWS : problèmes de réseau
- Échec de l'authentification : trop de connexions
- MSKSans serveur : échec de la création du cluster
Le remplacement du volume entraîne une saturation du disque en raison d'une surcharge de réplication
En cas de panne matérielle imprévue d'un volume, Amazon MSK peut remplacer le volume par une nouvelle instance. Kafka reremplit le nouveau volume en répliquant les partitions provenant d'autres courtiers du cluster. Une fois les partitions répliquées et rattrapées, elles peuvent devenir membres de Leadership et Insync Replica (ISR).
Problème
Dans un courtier qui se remet d'un remplacement de volume, certaines partitions de tailles différentes peuvent être remises en ligne avant d'autres. Cela peut être problématique car ces partitions peuvent servir du trafic provenant du même courtier qui continue de rattraper (répliquer) d'autres partitions. Ce trafic de réplication peut parfois saturer les limites de débit du volume sous-jacentes, qui sont de 250 MiB par seconde dans le cas par défaut. Lorsque cette saturation se produit, toutes les partitions déjà rattrapées seront affectées, ce qui se traduira par une latence au sein du cluster pour tous les courtiers partageant ISR avec ces partitions rattrapées (et pas seulement les partitions principales dues à des connecteurs distantsacks=all
). Ce problème est plus fréquent dans le cas de grands clusters comportant un plus grand nombre de partitions dont la taille varie.
Recommandation
Pour améliorer la posture des E/S de réplication, assurez-vous que les paramètres de thread conformes aux meilleures pratiques sont en place.
Pour réduire le risque de saturation des volumes sous-jacents, activez le stockage provisionné avec un débit plus élevé. Une valeur de débit minimum de 500 Mbits/s est recommandée pour les cas de réplication à haut débit, mais la valeur réelle requise varie en fonction du débit et du cas d'utilisation. Provisionner le débit de stockage pour les courtiers d'un cluster Amazon MSK.
Pour minimiser la pression de réplication, abaissez
num.replica.fetchers
la valeur par défaut de2
.
Groupe de consommateurs bloqué à l'état PreparingRebalance
Si un ou plusieurs de vos groupes de consommateurs sont bloqués dans un état de rééquilibrage perpétuel, cela peut être dû au problème KAFKA-9752
Pour résoudre ce problème, nous vous recommandons de mettre à niveau votre cluster vers la version MSKCorrectif de bogue Amazon version 2.4.1.1, qui contient un correctif pour ce problème. Pour plus d'informations sur la mise à jour d'un cluster existant vers Amazon MSK bug-fix version 2.4.1.1, consultez. Mettre à jour la version d'Apache Kafka
Les solutions pour résoudre ce problème sans mettre à niveau le cluster vers la version 2.4.1.1 du MSK correctif de bogue Amazon consistent soit à configurer les clients Kafka à utiliserProtocole d'appartenance statique, soit à les placer sur le nœud courtier coordinateur Identifier et redémarrer du groupe de consommateurs bloqué.
Mise en œuvre d'un protocole d'appartenance statique
Pour mettre en œuvre le protocole d'appartenance statique dans vos clients, procédez comme suit :
Définissez la propriété
group.instance.id
de la configuration de vos consommateurs Kafkasur une chaîne statique identifiant le consommateur dans le groupe. Assurez-vous que les autres instances de la configuration sont mises à jour pour qu'elles utilisent la chaîne statique.
Déployez les modifications dans vos consommateurs Kafka.
L'utilisation du protocole d'appartenance statique est plus efficace si le délai d'expiration de la session dans la configuration client est défini sur une durée qui permet au consommateur de récupérer sans déclencher prématurément un rééquilibrage du groupe de consommateurs. Par exemple, si votre application consommateur peut tolérer 5 minutes d'indisponibilité, une valeur raisonnable pour le délai d'expiration de la session serait de 4 minutes au lieu de la valeur par défaut de 10 secondes.
Note
L'utilisation du protocole d'appartenance statique ne fait que réduire la probabilité de rencontrer ce problème. Vous pouvez toujours le rencontrer même lorsque vous utilisez le protocole d'appartenance statique.
Redémarrage du nœud d'agent de coordination
Pour redémarrer le nœud d'agent de coordination, procédez comme suit :
Identifiez le coordinateur du groupe à l'aide de la commande
kafka-consumer-groups.sh
.Redémarrez le coordinateur du groupe de consommateurs bloqué à l'aide de l' RebootBrokerAPIaction.
Erreur lors de la transmission des journaux du courtier à Amazon CloudWatch Logs
Lorsque vous essayez de configurer votre cluster pour envoyer les journaux des courtiers à Amazon CloudWatch Logs, il se peut que vous obteniez l'une des deux exceptions suivantes.
Si vous obtenez une exception InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded
, réessayez mais utilisez les groupes de journaux qui commencent par /aws/vendedlogs/
. Pour de plus amples informations, consultez Activation de la journalisation à partir de certains services Amazon Web Services.
Si vous obtenez une InvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded
exception, choisissez une politique Amazon CloudWatch Logs existante dans votre compte et ajoutez-y ce qui suitJSON.
{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}
Si vous essayez d'ajouter ce qui JSON précède à une politique existante mais que vous recevez un message d'erreur indiquant que vous avez atteint la longueur maximale pour la politique que vous avez sélectionnée, essayez de l'ajouter JSON à une autre de vos politiques Amazon CloudWatch Logs. Après l'avoir ajouté JSON à une politique existante, essayez à nouveau de configurer la livraison des journaux de courtage à Amazon Logs. CloudWatch
Aucun groupe de sécurité par défaut
Si vous essayez de créer un cluster et que vous recevez un message d'erreur indiquant qu'il n'existe aucun groupe de sécurité par défaut, cela peut être dû au fait que vous en utilisez un VPC qui a été partagé avec vous. Demandez à votre administrateur de vous autoriser à décrire les groupes de sécurité concernés VPC et réessayez. Pour un exemple de politique autorisant cette action, consultez Amazon EC2 : permet de gérer les groupes de EC2 sécurité associés à un groupe spécifiqueVPC, par programmation et dans la console.
Le cluster semble bloqué dans l'CREATINGétat
Parfois, la création de cluster peut prendre jusqu'à 30 minutes. Attendez 30 minutes et vérifiez à nouveau l'état du cluster.
L'état du cluster passe de CREATING à FAILED
Réessayez de créer le cluster.
État du cluster : les producteurs ACTIVE ne peuvent pas envoyer de données ou les consommateurs ne peuvent pas recevoir de données
-
Si la création du cluster réussit (l'état du cluster est
ACTIVE
), mais que vous ne pouvez pas envoyer ou recevoir de données, assurez-vous que vos applications producteur et grand public ont accès au cluster. Pour de plus amples informations, veuillez consulter Étape 3 : Créer un ordinateur client.
-
Si vos producteurs et consommateurs ont accès au cluster mais rencontrent toujours des problèmes pour produire et consommer des données, cela peut être dû à KAFKA-7697
, qui affecte la version 2.1.0 d'Apache Kafka et peut entraîner une impasse chez un ou plusieurs courtiers. Envisagez de migrer vers Apache Kafka 2.2.1, qui n'est pas affecté par ce bogue. Pour de plus amples informations sur l'intégration, veuillez consulter Migrer vers un MSK cluster Amazon.
AWS CLI ne reconnaît pas Amazon MSK
Si vous les avez AWS CLI installées, mais qu'elles ne reconnaissent pas MSK les commandes Amazon, passez AWS CLI à la dernière version. Pour obtenir des instructions détaillées sur la mise à niveau du AWS CLI, voir Installation du AWS Command Line Interface. Pour plus d'informations sur l'utilisation des MSK commandes AWS CLI pour exécuter Amazon, consultezAmazon MSK : comment ça marche.
Les partitions se déconnectent ou les réplicas sont désynchronisés
Ceux-ci peuvent être des symptômes de faible espace disque. Consultez L'espace disque est faible.
L'espace disque est faible
Consultez les bonnes pratiques suivantes pour gérer l'espace disque : Surveiller l'espace disque et Ajuster les paramètres de rétention des données.
Mémoire faible
Si vous voyez que la métrique MemoryUsed
est élevée ou que la métrique MemoryFree
est faible, cela ne signifie pas qu'il y a un problème. Apache Kafka est conçu pour utiliser autant de mémoire que possible, et il le gère de manière optimale.
Le producteur obtient NotLeaderForPartitionException
Il s'agit souvent d'une erreur transitoire. Définissez le paramètre de configuration retries
du producteur sur une valeur supérieure à sa valeur actuelle.
Partitions sous-répliquées (URP) supérieures à zéro
La métrique UnderReplicatedPartitions
est importante à surveiller. Dans un MSK cluster sain, cette métrique a la valeur 0. Si elle est supérieure à zéro, cela peut être pour l'une des raisons suivantes.
-
Si
UnderReplicatedPartitions
est irrégulier, le problème peut être que le cluster n'est pas provisionné à la bonne taille pour gérer le trafic entrant et sortant. Consultez Bonnes pratiques. -
S'il
UnderReplicatedPartitions
est constamment supérieur à 0, y compris pendant les périodes de faible trafic, le problème est peut-être que vous avez défini des restrictions ACLs qui n'accordent pas l'accès aux sujets aux courtiers. Pour répliquer des partitions, les courtiers doivent être autorisés à la fois à utiliser des DESCRIBE rubriques READ et à utiliser des sujets. DESCRIBEest accordé par défaut avec l'READautorisation. Pour plus d'informations sur le paramétrageACLs, consultez la section Autorisation et ACLsla documentation d'Apache Kafka.
Le cluster contient des rubriques appelées __amazon_msk_canary et __amazon_msk_canary_state
Il se peut que votre MSK cluster possède un sujet portant le nom __amazon_msk_canary
et un autre portant le même nom__amazon_msk_canary_state
. Il s'agit de rubriques internes MSK créées et utilisées par Amazon pour les indicateurs de santé et de diagnostic du cluster. Ces rubriques sont d'une taille négligeable et ne peuvent pas être supprimées.
Échec de la réplication des partitions
Vérifiez que vous n'avez pas défini ACLs CLUSTER _ACTIONS.
Impossible d'accéder au cluster dont l'accès public est activé
Si l'accès public est activé sur votre cluster, mais que vous ne pouvez toujours pas y accéder depuis Internet, procédez comme suit :
Assurez-vous que les règles entrantes du groupe de sécurité du cluster autorisent votre adresse IP et le port du cluster. Pour obtenir la liste des numéros de port du cluster, consultez Informations sur le port. Assurez-vous également que les règles sortantes du groupe de sécurité autorisent les communications sortantes. Pour plus d'informations sur les groupes de sécurité et leurs règles d'entrée et de sortie, consultez la section Groupes de sécurité correspondants VPC dans le guide de VPC l'utilisateur Amazon.
Assurez-vous que votre adresse IP et le port du cluster sont autorisés dans les règles entrantes du VPC réseau ACL du cluster. Contrairement aux groupes de sécurité, les réseaux ACLs sont apatrides. Cela signifie que vous devez configurer à la fois des règles entrantes et sortantes. Dans les règles sortantes, autorisez tout le trafic (plage de ports : 0 à 65535) vers votre adresse IP. Pour plus d'informations, consultez la section Règles d'ajout et de suppression dans le guide de VPC l'utilisateur Amazon.
-
Assurez-vous que vous utilisez la chaîne bootstrap-brokers à accès public pour accéder au cluster. Un MSK cluster dont l'accès public est activé possède deux chaînes bootstrap-brokers différentes, l'une pour l'accès public et l'autre pour l'accès depuis l'intérieur. AWS Pour de plus amples informations, veuillez consulter Faites appel aux courtiers Bootstrap à l'aide du AWS Management Console.
Impossible d'accéder au cluster depuis l'intérieur AWS : problèmes de réseau
Si une application Apache Kafka ne parvient pas à communiquer correctement avec un MSK cluster, commencez par effectuer le test de connectivité suivant.
Utilisez l'une des méthodes décrites dans Trouvez les courtiers Bootstrap pour un cluster Amazon MSK pour obtenir les adresses des brokers d’amorçage.
-
Dans la commande suivante, remplacez
bootstrap-broker
avec l'une des adresses de courtier que vous avez obtenues à l'étape précédente. Remplacezport-number
avec 9094 si le cluster est configuré pour utiliser l'TLSauthentification. Si le cluster n'utilise pas l'TLSauthentification, remplacezport-number
avec 9092. Exécutez la commande à partir de l'ordinateur du client.telnet
bootstrap-broker
port-number
Où le numéro de port est :
9094 si le cluster est configuré pour utiliser l'TLSauthentification.
9092 Si le cluster n'utilise pas l'TLSauthentification.
Un numéro de port différent est requis si l'accès public est activé.
Exécutez la commande à partir de l'ordinateur du client.
-
Répétez la commande précédente pour tous les brokers d’amorçage.
Si la machine cliente est en mesure d'accéder aux courtiers, cela signifie qu'il n'y a aucun problème de connectivité. Dans ce cas, exécutez la commande suivante pour vérifier si votre client Apache Kafka dispose de la configuration adéquate. Pour obtenir bootstrap-brokers
, utilisez l'une des méthodes décrites dansTrouvez les courtiers Bootstrap pour un cluster Amazon MSK. Remplacez topic
avec le nom de votre sujet.
<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --broker-listbootstrap-brokers
--producer.config client.properties --topictopic
Si la commande précédente réussit, cela signifie que votre client possède la bonne configuration. Si vous ne parvenez toujours pas à produire et à consommer à partir d'une application, déboguez le problème au niveau de cette dernière.
Si la machine cliente n'est pas en mesure d'accéder aux courtiers, consultez les sous-sections suivantes pour obtenir des instructions basées sur votre configuration client-machine.
EC2Client Amazon et MSK cluster dans le même environnement VPC
Si la machine cliente se trouve dans le même emplacement VPC que le MSK cluster, assurez-vous que le groupe de sécurité du cluster dispose d'une règle entrante qui accepte le trafic provenant du groupe de sécurité de la machine cliente. Pour plus d'informations sur la configuration de ces règles, consultez Règles des groupes de sécurité. Pour un exemple de la façon d'accéder à un cluster depuis une EC2 instance Amazon qui se trouve dans la même instance VPC que le cluster, consultezCommencez à utiliser Amazon MSK.
EC2Client Amazon et MSK cluster dans différents VPCs
Si la machine cliente et le cluster se trouvent dans deux emplacements différentsVPCs, assurez-vous de ce qui suit :
-
Les deux VPCs sont regardés.
-
L'état de la connexion d'appairage soit actif.
-
Les tables de routage des deux VPCs sont correctement configurées.
Pour plus d'informations sur l'VPCappairage, consultez la section Utilisation des connexions d'VPCappairage.
Client sur site
Dans le cas d'un client local configuré pour se connecter au MSK cluster en utilisant AWS VPN, assurez-vous de ce qui suit :
-
L'état VPN de la connexion est
UP
. Pour plus d'informations sur la façon de vérifier l'état de la VPN connexion, voir Comment vérifier l'état actuel de mon VPN tunnel ?. -
La table de routage du cluster VPC contient l'itinéraire d'un environnement local CIDR dont la cible a le format
Virtual private gateway(vgw-xxxxxxxx)
. -
Le groupe de sécurité du MSK cluster autorise le trafic sur le port 2181, le port 9092 (si votre cluster accepte le trafic en texte brut) et le port 9094 (si votre cluster accepte TLS le trafic chiffré).
Pour plus d'informations sur le AWS VPN dépannage, consultez la section Résolution des problèmes liés au client VPN.
AWS Direct Connect
Si le client l'utilise AWS Direct Connect, consultez la section Résolution des problèmes AWS Direct Connect.
Si les instructions données dans la résolution de problèmes ne suffisent pas, vérifiez si un pare-feu ne bloque pas le trafic. Pour poursuivre le débogage, utilisez des outils tels que tcpdump
et Wireshark
pour analyser le trafic et vous assurer qu'il atteint le MSK cluster.
Échec de l'authentification : trop de connexions
L'Failed authentication ... Too many connects
erreur indique qu'un courtier se protège parce qu'un ou plusieurs IAM clients essaient de s'y connecter à un rythme agressif. Pour aider les courtiers à accepter un taux plus élevé de nouvelles IAM connexions, vous pouvez augmenter le paramètre reconnect.backoff.ms
Pour en savoir plus sur les limites de taux applicables aux nouvelles connexions par agent, consultez la page MSKQuota Amazon.
MSKSans serveur : échec de la création du cluster
Si vous essayez de créer un cluster MSK sans serveur et que le flux de travail échoue, vous n'êtes peut-être pas autorisé à créer un VPC point de terminaison. Vérifiez que votre administrateur vous a autorisé à créer un VPC point de terminaison en autorisant l'ec2:CreateVpcEndpoint
action.
Pour obtenir la liste complète des autorisations requises pour effectuer toutes les MSK actions Amazon, consultezAWS politique gérée : A mazonMSKFull Access.