2016-07-22 17 views
8

Mamy dość ścisłą politykę dotyczącą segmentacji sieci. Używam instancji odlewni chmury do wdrożenia aplikacji. Reguły zapory sieciowej zostały skonfigurowane tak, aby docierały do ​​klastra kafka z poziomu instancji odlewni chmury. Sądzę, że reguły zapory zostały również skonfigurowane, aby dostać się do instancji Zookeepera. Muszę to potwierdzić.Zasady Kafki i zapory

Moim problemem wydaje się być to, że mogę produkować wiadomości do kafka, ale mój konsument nie wydaje się ich odbierać. Wydaje się zawieszać podczas "odpytywania".

Czy są jakieś ukryte hosty lub porty, z którymi muszę się uporać w przypadku moich reguł firewalla, które nie są tylko standardowymi hostami i portami dla węzłów kafka i zookeepera?

+0

Jaka jest lista portów otwartych do komunikacji w instancji Kafka i zookeepera w regule AWS? –

+0

Nie używamy AWS, ale podobno wdrożyliśmy dostęp z odlewni chmury do portów 9091, 9092, 2181. Pierwsze dwa to kafka. Ostatni jest zookeeper. –

+2

Czy używasz kafka w konfiguracji klastrowej lub samodzielnej? W przypadku klastra otwórz porty '2888 i 3888'. Wykorzystanie portu wynosi ** 2181 ** dla połączeń klienta; ** 2888 ** dla połączeń z następcami, jeśli są liderami; i ** 3888 ** dla innych połączeń z serwerem podczas fazy wyborów lidera. Aby uzyskać więcej informacji, użyj tego [link] (https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.2/bk_HDP_Reference_Guide/content/zookeeper-ports.html) –

Odpowiedz

2

TL; DR: Nie ma ukrytego portu. Sprawdź konfigurację brokera. Upewnij się, że reklamuje IP/PORT, który jest dostępny dla konsumentów Kafki.


Natknąłem się na to pytanie po doświadczeniu tego samego problemu z Kafką 0.10.1.1 z biblioteką kafka-python jako konsumenta.

Nie. Przechwyciłem ruch sieciowy i nie używam żadnego innego portu do komunikacji z Kafką. Jeśli brokerzy są skonfigurowani do używania 9092, będzie to jedyny port używany przez konsumentów.

Ale po dalszych dochodzeniach, konfiguracje brokerów zawiodły w moim przypadku.

kafka.advertised.listeners = plainText: // [private_ip]: 9092, SSL: // [public_ip]: 9093 kafka.listeners = plainText: //0.0.0.0: 9092 SSL: // 0.0.0.0:9093

użyłem [public_ip]: 9092 jako serwer bootstrap, bo nie mają PKI skonfigurować ale chciałem przetestować konsumenta od publicznego Internetu.

Konsument był w stanie połączyć się z brokerem, ale nie mógł pobrać żadnej wiadomości.

Od czasu połączenia klienta z Kafką przy użyciu PLAINTEXT, Kafka anonsował adresy brokerów PLAINTEXT zamiast adresów SSL. Następnie konsument próbował dotrzeć do brokerów Kafka, używając prywatnych adresów IP zamiast publicznych. (jak ujawnił surowy przechwytywania sieci)

Po włączeniu PKI i skonfigurowaniu w brokerów & klientów, udało mi się wyciągnąć wiadomości z publicznego Internetu w porządku.

+0

Ta odpowiedź jest myląca. Chociaż jest poprawny dla samodzielnych instancji Kafki, nie bierze pod uwagę, że podczas pracy w klastrze Kafka potrzebuje również portów 2888 i 3888 dla połączeń z następcami i wyborów przywódców. Pytanie dotyczy klastra Kafki, a nie samodzielnej instancji. –

2

Kafka i zookeeper to różne rzeczy. Jeśli używasz obu na tym samym komputerze, musisz otworzyć oba porty, z corse.

Kafka domyślne porty:

  • 9092, mogą być zmienione na serwerze.nieruchomości;

domyślne zookeeper porty:

  • 2181 dla połączeń klienckich;
  • 2888 dla połączeń następujących osób (inne węzły zookeepera);
  • 3888 dla połączeń między węzłami;

To wszystko.

Kafka, ma również słuchaczy i advertised.listeners właściwości, które rośnie trochę zamieszania na pierwszych użytkowników. Aby to było proste, słuchacz jest interfejsem sieciowym, z którym Twój serwer się wiąże, a advertised.listeners to nazwa hosta lub adres IP, z którego serwer zarejestruje się w zookeeperze i wysłucha żądań. Jeśli umieścisz tam nazwę hosta, twoi klienci będą musieli używać nazwy hosta do połączenia. Adres URL advertised.listenersjest tym, którego klienci będą używać do ładowania połączenia. Po nawiązaniu połączenia Twój klient otrzyma połączenie z zookeeperem, aby uzyskać adresy URL innych brokerów. Twój producent nie działa z tego powodu.

Aby to działało, musisz również otworzyć 2888 na swojej zaporze, a nie tylko 2181. A @Jaya Ananthram myli się, kiedy mówi, że kafka potrzebuje portu 2181. To port zookeeper. Konsumenci w kafejce 0.10 muszą skontaktować się z Zookeeperem, aby utrzymać pewne rzeczy, to wszystko.

Kafka 0.11.0.0 zmieniła to i sprawia, że ​​klienci wcale nie potrzebują zookeepera.

Powiązane problemy