пишутся, из него всё читается. с ним работают 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?
вам сеть надо общую создать и запускать контейнеры указав эту сеть https://runnable.com/docker/basic-docker-networking
разве host.docker.internal не решает эту проблему за меня (хотя для целей локальной разработки, не берём сейчас продакшн)? почему clickhouse судя по логам и не пытается использовать host.docker.internal, а обращается к 127.0.0.1?
я хз про host.docker.internal, все это зависит от оси, в линуксе может и будет работать
это не имеет отношения к КХ, если вы подключитесь в контейнер кх, то можете там проверить курлом например ping host.docker.internal , curl host.docker.internal:9092
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, то всё бы заработало
с кафкой есть такая проблема, что это адрес host.docker.internal:9092 service discovery. Дальше брокер говорит откуда забирать партиции этого топика, там в кафке настраивается какой хостнейм отдавать. Т.е. брокеров много, и куда ходить за партициями топика знают только сами брокеры, клиенту кафки надо знать только одну точку входа, дальше ему рассказывают где вещи лежат. возможно в вашем случае кафка говорит ходить в локалхост
я сейчас пересобрал контейнер, указав вместо 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 значение одно, а в логах другое. непонятное что-то
это было оно! Неверное значение advertised.listeners в настройках кафки. Спасибо за наводку!
Обсуждают сегодня