184 похожих чатов

Ситуация: 1. есть настроенный рабочий контейнер с kafka. Сообщения в него

пишутся, из него всё читается. с ним работают kafka-manager, zookeeper из скоих контейнеров и десятки программ из локального окружения (windows). Т.е. рабочий вариант
2. разворачиваю контейнер clickhouse:
docker run -d --name md-clickhouse -p 8123:8123 --ulimit nofile=262144:262144 -v=e:/.docker-mount/storage/clickhouse:/var/lib/clickhouse -v=e:/dev/_clickhouse/initdb.d:/docker-entrypoint-initdb.d -v=e:/dev/_clickhouse/logs:/var/log/clickhouse-server yandex/clickhouse-server

в результате на старте контейнера из папки docker-entrypoint-initdb.d исполняется 0001_init.sql.
Исполняется без ошибок. Clickhouse стартует, всё, что должно создаться, создаётся

В числе прочего в этом файле создаётся таблица с движком Kafka, типа такой (опущены некоторые столбцы):
create table auditTrail.SpanBuffer
(
async_trace_id UUID,
type UInt8
)
ENGINE = Kafka
SETTINGS kafka_broker_list = 'host.docker.internal:9092',
kafka_topic_list = 'Topic.Name',
kafka_group_name = 'Group.Clickhouse.Kafka.Engine',
kafka_format = 'JSONEachRow',
kafka_max_block_size = 1048576;

Но в логах clickhouse видно, что соединиться он пытается по 127.0.0.1:9092:

2021.10.13 12:59:14.091724 [ 57 ] {} <Warning> Context: Effective user of the process (clickhouse) does not match the owner of the data (root).
2021.10.13 12:59:17.967427 [ 228 ] {} <Error> StorageKafka (SpanBuffer): [rdk:FAIL] [thrd:GroupCoordinator]: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
2021.10.13 12:59:17.968299 [ 212 ] {} <Error> StorageKafka (SpanBuffer): [rdk:ERROR] [thrd:app]: ClickHouse-2ca3cfcc592b-auditTrail-SpanBuffer#consumer-1: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)

что я делаю не так, как заставить clickhouse подключаться через host.docker.internal:9092?

8 ответов

21 просмотр

вам сеть надо общую создать и запускать контейнеры указав эту сеть https://runnable.com/docker/basic-docker-networking

Alex-Spiridonov Автор вопроса
Denny [Altinity]
вам сеть надо общую создать и запускать контейнеры...

разве host.docker.internal не решает эту проблему за меня (хотя для целей локальной разработки, не берём сейчас продакшн)? почему clickhouse судя по логам и не пытается использовать host.docker.internal, а обращается к 127.0.0.1?

Alex Spiridonov
разве host.docker.internal не решает эту проблему ...

я хз про host.docker.internal, все это зависит от оси, в линуксе может и будет работать

Alex Spiridonov
разве host.docker.internal не решает эту проблему ...

это не имеет отношения к КХ, если вы подключитесь в контейнер кх, то можете там проверить курлом например ping host.docker.internal , curl host.docker.internal:9092

Alex-Spiridonov Автор вопроса
Denny [Altinity]
это не имеет отношения к КХ, если вы подключитесь ...

root@ffacb257f26f:/# curl 127.0.0.1:9092 curl: (7) Failed to connect to 127.0.0.1 port 9092: Connection refused root@ffacb257f26f:/# curl host.docker.internal:9092 curl: (52) Empty reply from server root@ffacb257f26f:/# ping host.docker.internal PING host.docker.internal (192.168.65.2) 56(84) bytes of data. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=0.460 ms есть ощушение, что если бы clickhouse обращался по host.docker.internal, а не по 127.0.0.1, то всё бы заработало

Alex Spiridonov
root@ffacb257f26f:/# curl 127.0.0.1:9092 curl: (7)...

с кафкой есть такая проблема, что это адрес host.docker.internal:9092 service discovery. Дальше брокер говорит откуда забирать партиции этого топика, там в кафке настраивается какой хостнейм отдавать. Т.е. брокеров много, и куда ходить за партициями топика знают только сами брокеры, клиенту кафки надо знать только одну точку входа, дальше ему рассказывают где вещи лежат. возможно в вашем случае кафка говорит ходить в локалхост

Alex-Spiridonov Автор вопроса
Denny [Altinity]
с кафкой есть такая проблема, что это адрес host.d...

я сейчас пересобрал контейнер, указав вместо host.docker.internal:9092 вообще заведомо некорректное значение: engine = Kafka SETTINGS kafka_broker_list = 'some.invalid.address:9999' в логах ничего не поменялось: 2021.10.13 14:25:55.984670 [ 220 ] {} <Error> StorageKafka (SpanBuffer): [rdk:FAIL] [thrd:GroupCoordinator]: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT) т.е. до использования указанного адреса дело даже не доходит, а clickhouse что-то пытается найти локально на порту 9092 p.s. проверил DDL таблицы - там именно то, что я указал при создании контейнера. Т.е. в kafka_broker_list значение одно, а в логах другое. непонятное что-то

Alex-Spiridonov Автор вопроса
Denny [Altinity]
с кафкой есть такая проблема, что это адрес host.d...

это было оно! Неверное значение advertised.listeners в настройках кафки. Спасибо за наводку!

Похожие вопросы

Обсуждают сегодня

Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
38
Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
24
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
у меня вопрос на счет .global <name> для чего это нужно если я пишу на ассемблере? только для того что бы сделать это видимым для линкера? вот что написано в докумментации GA...
Simple Sorcerer
1
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
У меня вот только только был затык при изучении одной темы. Я настолько привык к джс, что мозг с трудом признал таки, что f и \x -> f x - это равные функции. Потому что в д...
xfides Barabanov
7
Карта сайта