Запускаем hlf 1.4 и последний проводник в kubernetes. Проводник зависает в начальной фазе, когда пытается связаться с одноранговыми узлами. Он не достигает кода, где он запускает веб-интерфейс.
На пире установлен чейнкод, подключен к каналу, проблем нет.
Я отключил TLS, чтобы упростить расследование, и поместил журналы в Channel.js, Peer.js в зависимостях проводника, чтобы лучше исследовать его.
Я добавил журнал в Channel.js в /blockchain-explorer/node_modules/fabric-client/lib/Channel.js для печати подключитесь к цели, и я вижу, что она показывает grpc://localhost:undefined. Я считаю, что он пытается отправить запрос на неверный адрес и молча умирает. Весь файл https://gist.github.com/gad0lin/51384bfea1c207ccf016a0cad8e413b6#файл-канал-js-L3474.
[{"_options":"1","_url":"2","_endpoint":"3","_name":"4","_request_timeout":45000,"_grpc_wait_for_ready_timeout":3000,
"_endorserClient":"5","_discoveryClient":"6"},{"name":"4","grpc.ssl_target_name_override":"4","grpc.default_authority":"4","grpc.max_receive_message_length":-1,"grpc.max_send_message_length":-1},"grpc://localhost:undefined",{"addr":"7","creds":"8"},"peer1-hlf-peer.peers.svc.cluster.local",
{"$interceptors":"9","$interceptor_providers":"10","$channel":"11"},{"$interceptors":"12","$interceptor_providers":"13","$channel":"14"},"localhost",{},[],[],{},[],[],{}]
Вот полуконфигурация:
{
"network-configs": {
"network-1": {
"version": "1.0",
"clients": {
"cli": {
"tlsEnable": false,
"organization": "Org1MSP",
"channel": "mychannel",
"credentialStore": {
"path": "./tmp/credentialStore_Org1/credential",
"cryptoStore": {
"path": "./tmp/credentialStore_Org1/crypto"
}
}
}
},
"channels": {
"mychannel": {
"peers": {
"peer1-hlf-peer.peers.svc.cluster.local": {}
},
"connection": {
"timeout": {
"peer": {
"endorser": "30",
"eventHub": "30",
"eventReg": "30"
}
}
}
}
},
"organizations": {
"Org1MSP": {
"certificateAuthorities": ["fabric-ca"],
"mspid": "Org1MSP",
"fullpath": true,
"adminPrivateKey": {
"path": "/var/hyperledger/msp/admincerts/key.pem"
},
"signedCert": {
"path": "/var/hyperledger/msp/admincerts/cert.pem"
}
}
},
"peers": {
"peer1-hlf-peer.peers.svc.cluster.local": {
"url": "grpc://peer1-hlf-peer.peers.svc.cluster.local:7051",
"eventUrl": "grpc://peer1-hlf-peer.peers.svc.cluster.local:7053",
"grpcOptions": {
"ssl-target-name-override": "peer1-hlf-peer.peers.svc.cluster.local"
}
}
},
"orderers": {
"ord1-hlf-ord.orderers.svc.cluster.local" : {
"url":"grpc://ord1-hlf-ord.orderers.svc.cluster.local:7050"
}
},
"certificateAuthorities": {
"fabric-ca": {
"url": "http://ca-hlf-ca.cas.svc.cluster.local:7054",
"httpOptions":{
"verify": false
},
"registrar": {
"enrollId": "admin",
"enrollSecret": "adminpw"
},
"caName": "ca"
}
}
}
}
}{
"persistence": "postgreSQL",
"platforms": ["fabric"],
"postgreSQL": {
"host": "explorer-db.x.svc.cluster.local",
"port": "5432",
"database": "fabricexplorer",
"username": "hppoc",
"passwd": "password"
},
"sync": {
"type": "local",
"platform": "fabric",
"blocksSyncTime": "3"
}
}
Я нашел виновного. Было две проблемы.
Я не установил для переменной среды DISCOVERY_AS_LOCALHOST значение false в конфигурации проводника. Вот почему я увидел: localhost.
В пире я установил переменную CORE_PEER_GOSSIP_EXTERNALENDPOINT, но без порта. Именно по этой причине я видел undefined как порт.