Как заставить производителя Какфа говорить через туннель - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть сценарий использования, в котором у меня есть производитель Kafka, которому необходимо поговорить с брокером Kafka и потребителем, но с дополнительным бонусом, когда Брокер и Потребитель находятся внутри ПО клиента C (AWS VP C).

Как я искал способы передачи сообщений и рассматривал различные технологии туннелирования (geneve, s sh tunnels et c).

Проблема всех этих подходов заключается в том, что после настройки туннеля мне необходимо «переопределить» код посредника Kafka, чтобы он перенаправлял сообщения на IP-адрес туннеля, а не на IP-адрес посредника.

Теперь я попытался исследовать кучу вещей, прежде чем отправлять сообщения, но пока они зашли в тупик.

Я читал протокол Кафки: https://aws.amazon.com/blogs/aws/new-managed-nat-network-address-translation-gateway-for-aws/, и хотя я мог вставлять произвольные заголовки в запись, не имея дополнительного процесса, каким-то образом «перехватывающего» эти сообщения, взламывая заголовок и перенаправляя сообщение, я не вижу его полезным.

Я просматривал Apache клиентский код Kafka и нашел это https://kafka.apache.org/0100/javadoc/org/apache/kafka/clients/producer/ProducerInterceptor.html, но в лучшем случае это перезаписывает записи.

Я также просматривал https://github.com/apache/kafka/blob/4090f9a2b0a95e4da127e4786007542276d97520/clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.java, но конфигурация Producer не предоставляет переопределений или какого-либо контроля над базовым TCP-клиентом.

Я также рассматривал возможность переопределения файла / etc / hosts, но эти туннели нужно было бы динамически создавать и / или уничтожать, и, кроме того, IP-адреса брокеров являются частными IP-адресами, и могут быть конфликты IP для двух разных клиентов, если они находятся на разных VPC с одинаковыми / одинаковыми диапазонами CIDR.

На данный момент у меня нет выбора, и я был бы признателен за помощь.

...