2017-09-01 113 views
1

我想通过docker-compose在单个虚拟机中安装hyperledger结构和kafka订单。当我在NAT网络模式下使用VM时,我发现它不起作用。当我在Bridge网络节点中使用VM时,这是工作的。波纹管控制台日志:

orderer0.example.com | [sarama] 2017/09/01 14:10:49.471276 broker.go:96:无法连接到经纪人kafka3:9092:dial tcp:I/O timeout orderer0.example.com | [sarama] 2017/09/01 14:10:49.471339 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer0.example.com | [sarama] 2017/09/01 14:10:49.471350 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer0.example.com | [sarama] 2017/09/01 14:10:49.471363 client.go:601:客户端/元数据获取来自代理商的所有主题的元数据kafka0:9092 orderer1.example.com | [sarama] 2017/09/01 14:10:49.581308 broker.go:96:无法连接到代理kafka1:9092:拨号tcp:I/O超时 orderer1.example.com | [sarama] 2017/09/01 14:10:49.581336 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer1.example.com | [sarama] 2017/09/01 14:10:49.581344 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer1.example.com | [sarama] 2017/09/01 14:10:49.581357 client.go:601:客户端/元数据获取来自代理商kafka3的所有主题的元数据:9092 orderer2.example.com | [sarama] 2017/09/01 14:10:50.633648 broker.go:96:无法连接到代理kafka2:9092:拨号tcp:I/O超时 orderer2.example.com | [sarama] 2017/09/01 14:10:50.633691 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer2.example.com | [sarama] 2017/09/01 14:10:50.633699 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer2.example.com | [sarama] 2017/09/01 14:10:50.633713 client.go:601:客户端/元数据获取来自代理商的所有主题的元数据kafka0:9092 orderer0.example.com | [sarama] 2017/09/01 14:10:59.471960 broker.go:96:无法连接到代理kafka0:9092:拨号tcp:I/O超时 orderer0.example.com | [sarama] 2017/09/01 14:10:59.472069 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer0.example.com | [sarama] 2017/09/01 14:10:59.472100 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer0.example.com | [sarama] 2017/09/01 14:10:59.472150 client.go:601:客户端/元数据获取来自代理商kafka2的所有主题的元数据:9092 orderer1.example.com | [sarama] 2017/09/01 14:10:59.581900 broker.go:96:无法连接到经纪人kafka3:9092:拨号tcp:I/O超时 orderer1.example.com | [sarama] 2017/09/01 14:10:59.581927 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer1.example.com | [sarama] 2017/09/01 14:10:59.581935 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer1.example.com | [sarama] 2017/09/01 14:10:59.581948 client.go:601:客户端/元数据获取来自代理商的所有主题的元数据kafka0:9092 orderer2.example.com | [sarama] 2017/09/01 14:11:00.635034 broker.go:96:无法连接到代理kafka0:9092:拨号tcp:I/O超时 orderer2.example.com | [sarama] 2017/09/01 14:11:00.635106 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer2.example.com | [sarama] 2017/09/01 14:11:00.635122 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer2.example.com | [sarama] 2017/09/01 14:11:00.635157客户端。去:601:客户端/元数据获取来自经纪人kafka1的所有主题的元数据:9092 orderer0.example.com | [sarama] 2017/09/01 14:11:09.481998 broker.go:96:无法连接到代理kafka2:9092:在127.0.0.11:53上拨号tcp:lookup kafka2:拨号udp 127.0.0.11:53:i/o超时 orderer0.example.com |客户端/元数据在获取元数据时从代理获取错误:在127.0.0.11:53上拨号tcp:lookup kafka2:拨号udp 127.0.0.11:53: I/O超时 orderer0.example.com | [sarama] 2017/09/01 14:11:09.482172 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer0.example.com | [sarama] 2017/09/01 14:11:09.482194 client.go:601:客户端/元数据获取来自代理商的所有主题的元数据kafka1:9092 orderer1.example.com | [sarama] 2017/09/01 14:11:09.591512 broker.go:96:无法连接到代理kafka0:9092:在127.0.0.11:53上拨号tcp:lookup kafka0:拨号udp 127.0.0.11:53:i/o超时 orderer1.example.com | [sarama] 2017/09/01 14:11:09.591542 client.go:620:客户端/元数据在获取元数据时从代理获取错误:拨号tcp:在127.0.0.11:53上查找kafka0:拨号udp 127.0.0.11:53: I/O超时 orderer1.example.com | [sarama] 2017/09/01 14:11:09.591549 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。 orderer1.example.com | [sarama] 2017/09/01 14:11:09.591562 client.go:601:客户端/元数据获取来自代理商的所有主题的元数据kafka2:9092 orderer2.example.com | [sarama] 2017/09/01 14:11:10.635648 broker.go:96:无法连接到经纪人kafka1:9092:拨号tcp:I/O超时 orderer2.example.com | [sarama] 2017/09/01 14:11:10.635798 client.go:620:客户端/元数据在获取元数据时从代理获取错误:dial tcp:I/O timeout orderer2.example.com | [sarama] 2017/09/01 14:11:10.635827 config.go:329:ClientID是'sarama'的默认值,您应该考虑将其设置为特定于应用程序的内容。Hyperledger fabric 1.0 kafka安装。它工作在虚拟机(桥接模式),但不适用于虚拟机(NAT)

orderer2.example.com | [sarama] 2017/09/01 14:11:10.635918 client.go:601:客户端/元数据获取来自经纪人kafka3的所有主题的元数据:9092

我使用docker网络检查来查看kafka0的ip为低潮,它是172.22.0.11 ....

 "11eaffebfa5be61cfcaaa400b6a30c4da1b05df109d7b72f1f841ff7d0a57e06": { 
      "Name": "kafka0", 
      "EndpointID": "c19bcc0f152498e18c2602855e72da01fefd29fd57c7c3d7ff07f4397e2db6bf", 
      "MacAddress": "02:42:ac:16:00:0b", 
      "IPv4Address": "172.22.0.11/16", 
      "IPv6Address": "" 

},

但为什么订货人连接到kafka0在127.0.0.11?参见下文登录

无法连接到经纪商kafka0:9092:拨号TCP:上127.0.0.11:53查找kafka0:拨打UDP 127.0.0.11:53:I/O超时

我不明白这一点为什么订阅者在127.0.0.11中查看kafka0而不是172.22.0.11。所有的集装箱都在同一个码头桥网络中。我通过docker网络检查双倍确认。该日志波纹管...

[ { “名称”: “fabricdockercomposesvt_default”, “ID”: “4e8fac6babf5e119e12bb65cf9816be913a038e9f11bd06106f20af53abaa5dc”, “创建”:“2017-09-01T02:59:52.678519627-07: 00" , “范围”: “本地”, “驱动程序”: “桥”, “EnableIPv6”:假的, “IPAM”:{ “驱动程序”: “默认”, “选项”:空, “配置”:[ { “子网”:“172.22.0.0/16”, “网关”:“172.22.0。1" } ] }, “内部”:假, “可拆卸的”:假, “集装箱”:{ “05f86e2c5f9ab82aa17063d84330a8026c730b21c547567855b81599243c3f0d”:{ “名称”: “peer1.org1.example.com”, “的EndpointId”: “932343ee2303ee87d056f2089305994ab750efc59d0f2ebb0e961e4e940da0eb”, “MACADDRESS”: “02:42:AC:16:00:02”, “IPv4Address”: “172.22.0.2/16”, “IPv6Address”: “” } , “0e40b56fafb4a53c2efc23e0121c3447218fda02bd0fc50a7b3cf97777a3e552”:{ “Name”:“ca_peerOrg1”, “En dpointID“: ”6f794c84ab7585bc979a815fe7b510f811cfefd0a8c87c51c4b3fb5e0d14c23e“, ”MACADDRESS“: ”02:42:AC:16:00:08“, ”IPv4Address“: ”172.22.0.8/16“, ”IPv6Address“: ”“ }, “11eaffebfa5be61cfcaaa400b6a30c4da1b05df109d7b72f1f841ff7d0a57e06”:{ “名称”: “kafka0”, “的EndpointId”: “c19bcc0f152498e18c2602855e72da01fefd29fd57c7c3d7ff07f4397e2db6bf”, “MACADDRESS”: “02:42:AC:16:00:0b” 时, “IPv4Address”:“172.22。 0.11/16" , “IPv6Address”: “” }, “239381cb14521601efc9dccc9ae96f21b8a7883cc6c1174679e0e59d9f284771”:{ “名称”: “orderer1.example.com” “的EndpointId”: “995349ac618b3ce3099d3b8de5466077a08dc48196651fd7eae2bb8ebe29e013”, “MACADDRESS”: “02:42:AC:16:00:0F”, “IPv4Address”: “172.22.0.15/16”, “IPv6Address”: “” } , “27b4ef727aa9bf189e9b7262d972c627cc77c60407f1e669412b431d6bd48949”:{ “名称”: “kafka2”, “的EndpointId”: “294e7d9d79da12e35db42d870a9ed78136d19dad5c67bc3e301da4a52a34efde”, “MACADDRESS”: “02:42:AC:16:00:0D”, “IPv4Address”:“ 172.22.0.13/16“, ”IPv6Address“:”“ }, ”3959d50127280b311e358668b33b4718c18540c0c7695a2a7bbdd07bbcaf373a“:{ ”Name“: “zookeeper2”, “的EndpointId”: “4e3d9c0d905190bbe24e5e1c9579d4046cb2b8ff33d4a57b23af4a4cd6eddf87”, “MACADDRESS”: “02:42:AC:16:00:07”, “IPv4Address”: “172.22.0.7/16”, “IPv6Address”: “” }, “5689c378b255e649c40dd5988810437a6c1d0d2ea1c48340da5eb66a684b3a78”:{ “名称”: “peer1.org2.example.com”, “的EndpointId”: “1ec40982fbbf10005231e6a73557ad677f32c0f1aeb2a77818ae86627c3b0f93”, “MACADDRESS”:“02:42:AC:16:00 :05" , “IPv4Address”: “172.22.0.5/16”, “IPv6Address”: “” }, “5f386fd1480ea079dfaa9ed15246bf7f42cafd82f6bc1f3eaa1f9ae4a9852655”:{ “名称”: “orderer0.example.com”, “的EndpointId”: “fb76384614442a12735ee2a844787acbd0970a428682236b9a2aba22d8a62269”, “MACADDRESS”: “02:42:AC:16:00:11”, “IPv4Address”:“172.22.0.17/16" , “IPv6Address”: “” }, “6e773f10d98ce70b768c9ff13cfa15349fd512376748197168762be4af116b0d”:{ “名称”: “zookeeper1”, “的EndpointId”: “3d6902f623c8541d4657ef4323c1527a6021e7e140eca5dcb9037154f739c96a”, “MACADDRESS”:“02:42:AC: 16:00:0a“, ”IPv4Address“:”172.22.0。10/16 “ " IPv6Address ”:“ ”} , “ 8198dd5c82939c6513dd9fcec8b4a308c631d4b008e4d5774bf0ca0f46bc914e ” {“ 名称 ”:“ orderer2.example.com”, " 的EndpointId “:” d073d216e8e7173984b0d64ef77d0b85315c6440b306324e518f18893ab3896c”, " MACADDRESS “” 02 :42:AC:16:00:10 “ " IPv4Address ”:“ 172.22.0.16/16”, " IPv6Address “:” “} , ” 8352c58d066ab776ce3e1c50d43d5105130664ba193ae52bc1e00d723923062f “ {” 名称 “:” 阿里”, “的EndpointId”: “39ce6d60b4f223adcd9969832d0442e78d9a7b30737ab6892614f2198db58c0c”, “MACADDRESS”: “02:42:AC:16:00:12”, “IPv4Address”: “172.22.0.18/16”, “IPv6Address”: “”} , “8ec391c08bfcb00dd8c08ddb3c230c47e2c19a340e936451aa25dac875556e3f” { “名称”: “kafka3”, “的EndpointId”: “1ddc30616adc68ddb39e912131b10b8719f887d8c589e2044e453dd9aac11e3f”, “MACADDRESS” “02:42:AC:16:00:0C” “IPv4Address”: “172.22.0.12/16”, “IPv6Address”: “”} , “9962d040aa1532798195a4fd29d60308ed2f14cdd6db9c5de15802fde82c9a2f” { “名称”:“ ca_peerOrg2 “ ” 的EndpointId “:” bdb3959d034d2989d0b046d323ee716ab85fa168a27cb717b9c8837fe9fef0e1 “ " MACADDRESS ”:“ 02:42:AC:16:00:09”, “IPv4Address”: “172.22.0.9/16”, “IPv6Address”: “”} , “9f7c182c543ae849db3cdf09c011e109b5d4a5cf5922ba6b6bfc5c80e83b080c” { “名称”: “peer0.org2.example.com”, “的EndpointId”“ db5986d7e0ffe77e4eced6c43950aaeabe64e4949ab976d017d8df2c446f58f0 “ ” MACADDRESS “:” 02:42:AC:16:00:04 “ " IPv4Address ”:“ 172.22.0.4/16”, " IPv6Address “:” “} , ” ad17f4de4a0a1a4348515bf061fcec3ed70c36882e7181165eb53060714a137d“ { “名称”: “kafka1”, “的EndpointId”: “3897d1c584214be158b1c84f65824dcf2fb6649070128e0589da78cbb383472a”, “MACADDRESS” “02:42:AC:16:00:0E” “IPv4Address”: “172.22.0.14/16”, “IPv6Address”: “”} , “d9923058ffe9697103daa740c68fa10d015788f6bc4e83214d8eff21cf9ada43” { “名称”:“ zookeeper0 “ ” 的EndpointId “:” a0b2d2a321be2bbbdbaab931b3789572f50ea0fcaed4c80da2acc906fe01fed4 “ " MACADDRESS ”:“ 02:42:AC:16:00:06”, " IPv4Address “:” 172.22.0.6/16”, " IPv6Address “” “ }, ” fa6e25647fb0450aadcab51266a94701bf6db49439157372db6e016555c08079 “ {” 名称 “:” peer0.org1.example.com “ " 的EndpointId ”:“ d8e1566da5b6ad7ad1a6e180ebb13239477b454cfe7f7ef70b7859c3bd4d0d67”, “MACADDRESS”: “02:42:AC:16:00:03”, “IPv4Address”: “172.22.0.3/16”, “IPv6Address”: “”} }, “选项”:{ }, “标签”:{}}

]

还有人遇到和我同样的问题?任何建议非常赞赏!

+0

您使用的是什么虚拟机? VirtualBox,KVM等。另外,什么版本的Docker?您可能想要尝试在您的Compose文件中为您的订购者容器设置dns-search字段。请参阅https://stackoverflow.com/a/45916717/6160507(这是针对同行,但您可以对订购者进行相同的更改) –

+0

非常感谢您的及时回复。我使用的是VMware®Workstation 12 Pro 12.5.2 build-4638234。 Docker版本17.03.1-ce。我会尝试你的建议,非常感谢! –

+0

你好,加里辛吉......非常感谢你的建议。其作品。我可以问一下指定的dns_search =的目的吗?在yaml文件中?非常感谢您的帮助! –

回答

1

dial tcp: lookup kafka2 on 127.0.0.11:53: dial udp 127.0.0.11:53: i/o timeout orderer0.example.com

上述错误表明,订货者试图主机kafka2做DNS查找,然后超时试图连接到地址从DNS返回。

我的猜测是,当在NAT模式下运行虚拟机时,最终会使用主机的DNS设置,并且可能主机的DNS设置为在某些特定的DNS域中搜索DNS名称 - 例如搜索域可能是像search.com所以DNS试图解决kafka2 as kafka2.search.com。可能您使用的互联网提供商以某种方式将其解析为地址,然后订购者尝试连接到该地址。

为了覆盖Docker中的这种行为,您可以在您的Compose文件中为您的订购人容器设置dns-search字段。请参阅stackoverflow.com/a/45916717/6160507(这是针对同行的,但您可以对订购者进行相同的更改)。使用此设置,它不会附加DNS后缀,只会尝试解决kafka2然后通过Docker的嵌入式DNS解析为容器IP