Kafka configuration du serveur - auditeurs vs. annoncés.auditeur

pour lancer Kafka, vous devez définir quelques propriétés dans config/server.properties fichier. Il y a deux paramètres que je ne comprends pas.

quelqu'un Peut-il expliquer la différence entre les auditeurs et la publicité.la propriété des auditeurs?

La documentation dit:

auditeurs: l'adresse que le serveur socket écoute.

et

annoncés.auditeur: Nom d'hôte et port le courtier fera de la publicité à les producteurs et les consommateurs.

Quand dois-je utiliser?

18
demandé sur CPA 2017-03-24 14:54:29

3 réponses

comme je ne peux pas encore commenter, je vais poster ceci comme une" réponse", en ajoutant à la réponse de M. Situations.

dans le même document il y a cette confusion à propos de l'auditeur qui est utilisé par un client KAFKA (https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic):

comme indiqué précédemment, les clients ne voient jamais les noms des écouteurs et feront des demandes de métadonnées exactement comme avant. La différence est que la liste des paramètres qu'ils obtiennent en retour est limitée au nom de l'auditeur du point où ils ont fait la demande.

ceci est important car cela dépend de L'URL que vous utilisez dans votre bootstrap.config de serveurs qui seront L'URL* que le client récupérera s'il est mappé dans la publicité.auditeurs (ne savent pas ce qu'est le comportement si l'auditeur n'existe pas).

Notez aussi ceci:

l'exception est les consommateurs basés sur le gardien de Zoo. Ces consommateurs récupèrent l'information d'enregistrement de courtier directement de ZooKeeper et choisiront le premier auditeur avec PLAINTEXT comme le protocole de sécurité (le seul protocole de sécurité qu'ils supportent).

comme exemple de configuration de courtier (pour tous les courtiers dans le cluster):

advertised.listeners=EXTERNAL://XXXXX.compute-1.amazonaws.com:9990,INTERNAL://ip-XXXXX.ec2.internal:9993

inter.courtier.écouteur.Nom=interne

port d'écoute.sécurité.protocole.map=EXTERNAL: SSL, INTERNAL:PLAINTEXT

si le client utilise XXXXX.calcul-1.amazonaws.com: 9990 pour se connecter, le fetch de métadonnées ira à ce courtier. Toutefois, l'URL de retour à utiliser avec le coordonnateur ou le chef de groupe pourrait être 123.calcul-1.amazonaws.com: 9990* (une autre machine!). Cela signifie que la correspondance est faite sur le nom de l'écouteur tel que annoncé par KIP-103 indépendamment de l'URL réelle (noeud).

Depuis le protocole map for EXTERNAL is SSL ceci vous forcerait à utiliser un keystore SSL pour vous connecter.

si d'un autre côté vous êtes dans AWS disons, vous pouvez alors émettre ip-XXXXX.ec2.interne: 9993 et la connexion correspondante serait en clair selon le protocole map.

ceci est particulièrement nécessaire dans IaaS où dans mon cas les courtiers et les consommateurs vivent sur AWS, alors que mon producteur vit sur un site client, ce qui nécessite des protocoles de sécurité différents et auditeur.

modifier: Il est également beaucoup plus facile d'ajouter des règles entrantes maintenant que vous avez différents ports pour différents clients (courtiers, producteurs, consommateurs).

22
répondu PragmaticProgrammer 2018-08-15 01:23:55

listeners est ce que le courtier va utiliser pour créer des sockets de serveur.

advertised.listeners est ce que les clients utiliseront pour se connecter aux courtiers.

les deux paramètres peuvent être différents si vous avez une configuration réseau "complexe" (avec des choses comme les sous-réseaux publics et privés et le routage entre les deux).

11
répondu Thilo 2017-03-24 13:08:59
https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic

pendant le cycle de publication 0.9.0.0, prise en charge de plusieurs courtier a été présenté. Chaque auditeur est associé à une sécurité protocole, IP / host et port. Lorsqu'il est combiné avec la publicité mécanisme d'écouteurs, Il ya une bonne dose de flexibilité avec un limitation: au plus un auditeur par sécurité protocole dans chacun des deux configs (listeners et advertised.auditeur.)

Dans certains environnements, on peut différencier externe les clients, les clients internes et le trafic de réplication indépendamment de la protocole de sécurité pour le coût, de performance et de sécurité. Quelques des exemples qui illustrent ceci:

  • le trafic de réplication est assigné à une interface réseau séparée afin de ne pas interférer avec le trafic client.
  • le trafic externe passe par un proxy / load-balancer (sécurité, flexibilité) tandis que le trafic interne touche directement les courtiers (performance, coût).
  • différents paramètres de sécurité pour le trafic externe par rapport au trafic interne, même si le protocole de sécurité est le même (par ex. mécanismes SASL activés, serveurs d'authentification, différentes keystores, etc.)

en tant que tel, nous proposons que Kafka brokers devrait être en mesure de définir plusieurs écouteurs pour le même protocole de sécurité pour la liaison (i.e. les auditeurs) et de partage (annoncé.les auditeurs) de sorte que les internes, externe et le trafic de réplication peuvent être séparés si nécessaire.

Donc,

listeners-liste d'URIs séparées par des virgules que nous écouterons et leurs protocoles. Spécifiez hostname comme 0.0.0.0 pour lier à toutes les interfaces. Laisser le nom d'hôte vide pour lier à l'interface par défaut. Exemples d'auditeur légal listes:

  • PLAINTEXT: / / myhost: 9092, TRACE://: 9091
  • PLAINTEXT: / / 0.0.0.0: 9092, TRACE: / / localhost:9093

annoncés.les auditeurs - les Auditeurs de publier à la Gardienne pour les clients à utiliser, si différents que les auditeurs ci-dessus. Dans les environnements IaaS, cela peut être différent de l'interface à laquelle le courtier se lie. Si ce n'est pas définie, la valeur de listeners sera utilisé.

3
répondu M. Situation 2018-09-19 14:23:38