无法连接到发现卡夫卡容器,基本连接问题

与docker和kafka磕磕绊绊的基础,不能得到客户端连接

到目前为止我所做的

1)在Windows 10上安装Docker窗口。2)打开kitematic,并searchkafka,并select了spotify kafka(wurstmeister图像未启动)。
3)容器启动,我可以看到图像在容器日志中运行。
4)IP和端口报告docker端口9092 – 和访问端口为本地主机:32768

docker ps show this 7bf9f9278e64 spotify / kafka:latest“supervisord -n”2小时前Up 57分钟0.0.0.0:32769->2181/tcp,0.0.0.0:32768->9092/tcp kafka

docker-machine active,返回没有活动的主机

我的groovy类(从一个例子中剪切粘贴类似这样的连接

class KafkaProducer { String topicName = "wills topic" Producer<String, String> producer def init () { Properties props = new Properties() props.put("bootstrap.servers", "192.168.1.89:32768" ) //Assign localhost id and external port (9092 int) props.put("acks", "all") //Set acknowledgements for producer requests. props.put("retries", 0) //If the request fails, the producer can automatically retry, props.put("batch.size", 16384) //Specify buffer size in config props.put("linger.ms", 1) //Reduce the no of requests less than 0 props.put("buffer.memory", 33554432) //The buffer.memory controls the total amount of memory available to the producer for buffering. props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") producer = new org.apache.kafka.clients.producer.KafkaProducer<String, String>(props) } .... 

当我运行这个init我得到错误说它无法parsing连接,对于java.io.IOException:无法parsing地址:7bf9f9278e64:9092,这是内部容器端口。 (我的脚本正在从我的正常IDE桌面环境调用)

kitmatic说这是映射。 所以为什么不能连接,然后发送? 另外,我只是通过kitematic下载,如果你想改变configuration,那么你可以把docker-compose.yml放在哪里。 真的不清楚在哪里做这个。

 18:05:41.022 [main] INFO oakcpProducerConfig:[.logAll:] > ProducerConfig values: acks = all batch.size = 16384 block.on.buffer.full = false bootstrap.servers = [192.168.1.89:32768] buffer.memory = 33554432 client.id = compression.type = none connections.max.idle.ms = 540000 interceptor.classes = null key.serializer = class org.apache.kafka.common.serialization.StringSerializer linger.ms = 1 max.block.ms = 60000 max.in.flight.requests.per.connection = 5 max.request.size = 1048576 metadata.fetch.timeout.ms = 60000 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.sample.window.ms = 30000 partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner receive.buffer.bytes = 32768 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retries = 0 retry.backoff.ms = 100 sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT send.buffer.bytes = 131072 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1] ssl.endpoint.identification.algorithm = null ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLS ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS timeout.ms = 30000 value.serializer = class org.apache.kafka.common.serialization.StringSerializer 18:05:41.076 [main] INFO oakcpProducerConfig:[.logAll:] > ProducerConfig values: acks = all batch.size = 16384 block.on.buffer.full = false bootstrap.servers = [192.168.1.89:32768] buffer.memory = 33554432 client.id = producer-1 compression.type = none connections.max.idle.ms = 540000 interceptor.classes = null key.serializer = class org.apache.kafka.common.serialization.StringSerializer linger.ms = 1 max.block.ms = 60000 max.in.flight.requests.per.connection = 5 max.request.size = 1048576 metadata.fetch.timeout.ms = 60000 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.sample.window.ms = 30000 partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner receive.buffer.bytes = 32768 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retries = 0 retry.backoff.ms = 100 sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT send.buffer.bytes = 131072 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1] ssl.endpoint.identification.algorithm = null ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLS ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS timeout.ms = 30000 value.serializer = class org.apache.kafka.common.serialization.StringSerializer 18:05:41.079 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name bufferpool-wait-time 18:05:41.083 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name buffer-exhausted-records 18:05:41.085 [main] DEBUG oakcMetadata:[.update:] > Updated cluster metadata version 1 to Cluster(id = null, nodes = [192.168.1.89:32768 (id: -1 rack: null)], partitions = []) 18:05:41.401 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name connections-closed: 18:05:41.401 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name connections-created: 18:05:41.402 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name bytes-sent-received: 18:05:41.402 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name bytes-sent: 18:05:41.406 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name bytes-received: 18:05:41.406 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name select-time: 18:05:41.407 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name io-time: 18:05:41.409 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name batch-size 18:05:41.410 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name compression-rate 18:05:41.410 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name queue-time 18:05:41.410 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name request-time 18:05:41.410 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name produce-throttle-time 18:05:41.411 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name records-per-request 18:05:41.412 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name record-retries 18:05:41.412 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name errors 18:05:41.412 [main] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name record-size-max 18:05:41.414 [main] WARN oakcpProducerConfig:[.logUnused:] > The configuration 'key.deserializer' was supplied but isn't a known config. 18:05:41.414 [kafka-producer-network-thread | producer-1] DEBUG oakcpiSender:[.run:] > Starting Kafka producer I/O thread. 18:05:41.414 [main] WARN oakcpProducerConfig:[.logUnused:] > The configuration 'value.deserializer' was supplied but isn't a known config. 18:05:41.416 [main] INFO oakcuAppInfoParser:[.<init>:] > Kafka version : 0.10.1.1 18:05:41.416 [main] INFO oakcuAppInfoParser:[.<init>:] > Kafka commitId : f10ef2720b03b247 18:05:41.417 [main] DEBUG oakcpKafkaProducer:[.<init>:] > Kafka producer started 18:05:41.430 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.maybeUpdate:] > Initialize connection to node -1 for sending metadata request 18:05:41.430 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.initiateConnect:] > Initiating connection to node -1 at 192.168.1.89:32768. 18:05:41.434 [kafka-producer-network-thread | producer-1] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name node--1.bytes-sent 18:05:41.434 [kafka-producer-network-thread | producer-1] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name node--1.bytes-received 18:05:41.435 [kafka-producer-network-thread | producer-1] DEBUG oakcmMetrics:[.sensor:] > Added sensor with name node--1.latency 18:05:41.435 [kafka-producer-network-thread | producer-1] DEBUG oakcnSelector:[.pollSelectionKeys:] > Created socket with SO_RCVBUF = 32768, SO_SNDBUF = 131072, SO_TIMEOUT = 0 to node -1 18:05:41.436 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.handleConnections:] > Completed connection to node -1 18:05:41.452 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.maybeUpdate:] > Sending metadata request {topics=[wills topic]} to node -1 18:05:41.476 [kafka-producer-network-thread | producer-1] WARN oakcNetworkClient:[.handleResponse:] > Error while fetching metadata with correlation id 0 : {wills topic=INVALID_TOPIC_EXCEPTION} 18:05:41.477 [kafka-producer-network-thread | producer-1] DEBUG oakcMetadata:[.update:] > Updated cluster metadata version 2 to Cluster(id = 8cjV2Ga6RB6bXfeDWWfTKA, nodes = [7bf9f9278e64:9092 (id: 0 rack: null)], partitions = []) 18:05:41.570 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.maybeUpdate:] > Initialize connection to node 0 for sending metadata request 18:05:41.570 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.initiateConnect:] > Initiating connection to node 0 at 7bf9f9278e64:9092. 18:05:43.826 [kafka-producer-network-thread | producer-1] DEBUG oakcNetworkClient:[.initiateConnect:] > Error connecting to node 0 at 7bf9f9278e64:9092: java.io.IOException: Can't resolve address: 7bf9f9278e64:9092 at org.apache.kafka.common.network.Selector.connect(Selector.java:180) at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:498) at org.apache.kafka.clients.NetworkClient.access$400(NetworkClient.java:48) at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:645) at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:552) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:258) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:236) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:135) at java.lang.Thread.run(Thread.java:745) 

感谢帮助,让我通过这第一个障碍

试着在启动容器时设置--env ADVERTISED_HOST=192.168.1.89--env ADVERTISED_PORT=32768 。 这是必需的,因为默认Kafka通告本地主机名(这是容器主机名,例如7bf9f9278e64 ),这是不能从主机访问的。 在使用端口绑定时,您需要通告您的主机IP(例如192.168.1.89 )和映射的端口(例如32768 )。