Hyperledger Fabric - crash restore strategies - hyperledger-fabric

Yesterday faced with a nice problem: Nothing happens in case of chaincode container crash or someone manual stopping it.
Sample network (using v1.2.0 images):
2 ORGs
2 CA's
2 peers ORG1 (using LevelDB as a storage)
2 peers ORG2 (using LevelDB as a storage)
1 solo orderer
1 shared channel with consorcium of 2 org's
this network is launched under the control of Docker Swarm on 4 VM's (2 manager's, 2 worker's nodes)
There are many elements that can break down:
chaincode container crashes (!)
one/two peer's of ORG1 crashes
orderer crashes
So. The fabric's default behavior:
chaincode container crashes (!)
Stop processing sdk request's. no restart
UPD_1: With the next request (invoke/query) cc-container will be recreated
one/two peer's of ORG1 crashes
stop processing requests's due to lost connection to channel
after auto-restart/start on failure: lost connection to channel
if chaincode was instantiated on this peer: crash chaincode container
So. What are the strategies/best practice to restore the Hyperledger Fabric network after crashes?

Related

hyperledger fabric some problem in deploying on kubernetes

i have some question.
while deploying fabric-ca 1.4.9, orderer 2.2.1 and peer 2.2.1 in kubernetes with tls configure is enable, i cannot excute command peer channel create following this error.
Error: failed to create deliver client for orderer: orderer client failed to connect to orderer.example.com:7050: failed to create new connection: context deadline exceeded
i executed configtxgen and crypto-gen command before create channel with configtx.yaml and crypto-config.yaml.
Current problems and questions are not specified. To solve this problem, information about the parameter options in the peer channel create command is required.
Then, check whether the MSP (crypto) specified in the created configtx.yaml and the policy match well.
In addition to the above information, it is good to give the topology information of the currently established blockchain network.

container in Hyperledger fabric network

what are the containers which are associated with each peer in Hyperledger Fabric (HLF)?
For example: Endorsing peers most have one chaincode container to execute chaincode.
I'm not sure if I understand your question very well, but I still would like to give it a try.
The docker containers associated with a peer are:
Peer container, which manages you peer node. It's the peer container to which you send the transaction proposal either using CLI or through SDK. Every peer container embodies a copy of the ledger. The ledger is segregated using a channel.
Couchdb container, which persists the world state. It saves every key-value pair which you query or invoke using chaincode. The name of the container is usually in the form couchdb.
Chaincode container, where the chaincode is actually deployed. All the modules/packages that your chaincode requires are first installed when you instantiate your chaincode. The chaincode container usually have its name in the form dev-peer0.org1.example.com-fabcar-1.0.1, where dev refers to the environment in which the chaincode is instantiated. peer0.org1.example.com refers to the peer which instantiated it. fabcar here is the name of your chaincode and 1.0.1 is its version, which is changed every time you upgrade your chaincode.
A peer might not have a chaincode container if it's only acting as a validating or committing peer.
CLI container, this container is required for managing peers. At a time, CLI container can only manage a single peer. You can change the peer it's managing by adding/changing the environment variable CORE_PEER_ADDRESS, e.g. CORE_PEER_ADDRESS=peer0.org1.example.com:7051.

Getting error - No peers available to register a listener and No peers available to query

I have set up hyperledger fabric, and installed and instantiate chaincode for peer0.org1 and peer0.org2 .
I am able to do all transaction for one org. When I tried to do adding peer0.org2 and tried to do transaction through docker cli; I'm able to do all transaction and querying for both org1 and org2.
When I am trying to do these transactions with gateway nodeJS code, I am able to create data from both org, but in org2 creation part getting error: [AbstractEventListener]: No peers available to register a listener
and in querying I am getting error: [SingleQueryHandler]: evaluate: message=No peers available to query
I am able to do all transactions from docker cli for both org. Docker Logs are as well fine.
Please help to resolve the issue. Thanks in advance.
https://hyperledger-fabric.readthedocs.io/en/release-1.4/build_network.html

How to configure two P2P nodes on same channel using Hyperledger composer?

Current solution:
1. I have a single node running on Hyperledger.
2. I have deployed my car-auction application on it.
Solution looking for:
I want my car-auction application to deploy on the second node and both nodes should be synced on the same channel.
Any suggestion.
Thanks
This basically boils down to the network configuration that you define in Hyperledger Fabric.
This configuration is defined in two files:
crypto-config.yaml: Contains network topology
configtx.yaml: Defines genesis info and channel consortium
Considering your case, I assume your setup to be:
Single Organization
2 peer nodes within this organization
1 Orderer node
A single channel
So, you need to define network topology with an orderer and a single organization containing two peer nodes. You can find references for this complete setup at build your first network docs on fabric documentation.
Once you have that fabric setup ready, you take references from the Composer Docs. Over here, pay close attention to "connection-profile" file that you create. Since you want both these nodes to execute the car-auction chaincode, you'll need to define both of your peers as "endorsing peers" by setting "endorsingPeers" section to be "true" in the connection profile json file.
Follow the same compose reference to generate the PeerAdmin card. Now, when you install the car-auction bna file, it'll be installed on both the peers. Next, when you start the network, both the peer nodes will have their own chaincode container started up.
This way, you'll have two peer nodes connected on the same channel. And since they're on the same channel, they'll be in sync (regardless a peer is endorsing peer or not).
The same kind of setup goes for the multi-org setup.

Not able to register and instantiate Chaincode - Hyperledger Fabric - Blockchain

I am working upon a basic Blockchain POC and I have been able to do following:
Installed and started the Hyperledger fabric v1.0 successfully
I have list of Docker images running on Fabric
hyperledger/fabric-ca, hyperledger/fabric-orderer, hyperledger/fabric-peer, hyperledger/fabric-ccenv , hyperledger/fabric-couchdb
I have written Chaincode in go to read and update the ledger and compiled successfully
Next - What do I need to do and not able to do and Where I am confused?
Register my Chaincode to a peer – How do I find which Peer I need to register
I tried to follow this video but it uses YAML and I do not have it and it gives error-
https://www.youtube.com/watch?v=76WIJjKNekY&list=PLz3iwtnWFin-yUUgn-zP7KJp0iW0IFas9&index=2
Also followed few more tutorials but still confused what to do
https://hyperledger-fabric.readthedocs.io/en/release-1.2/build_network.html
Instantiate my Chaincode
Query my Chaincode - I will be able to do it once Chaincode is registered and deployed
Invoke my Chaincode to update the ledger - Same as above
Please help in above step or let me know if there is any good source of clear steps to perform registration and instantiation of chaincode.

Resources