Tuesday, September 5, 2017

Azure BaaS - HyperLedger Fabric Installation Issues...

Azure Blockchain As A Service  is  a  great  option  for  enterprises  to  get  started  with their  blockchain Proof of  Value, Pilot  and  live  production projects.  The solution templates  which are available  using ARM (Azure Resource Manager) make  the  blockchain implementation much easier. Most  organizations  who have  good  Network  and Cloud administrators  can  easily implement blockchain  consortium networks using  Azure  BaaS.

While  these  templates  does  not  really  recommend  any  specific configuration, the following  typical  consortium  architectures are supported  in Azure BaaS.

1. Single Organization    where  the  multiple  divisions  within  it  share information . Typically global  organizations  who have  their  own  setup  in USA, Europe, Asia Pacific .. with different regulatory  needs  can  use  this kind of a setup.

2. Multiple Organizations  Private Network :  This is a  typical  consortium setup, which is permissioned and  private. This  extends  the  Single Organization mentioned above, at the same time more than  one  organization  participate in this. Typically  the Compute, Storage, Network components  of  each  organizations  are  managed separately, however  multiple  nodes  across  organization  will  communicate  with each other, for mining  and other  transaction related activities.

3. Multiple Organization Public Facing :  This is the most   advanced  configuration, where it extends option 1,2 above  and  also  provides access from  public network. However  this  setup  will still be permissioned  where the pubic  will  interact  with  blockchain network only through a member organization. For example  bank customers  may  access the  blockchain consortium  using the  bank's  self  service  portal.

Azure BaaS  also  extended  their  support  to  multiple  protocols  beyond  Ethereum, these include the following.
  • Hyperledger Fabric
  • R3 Corda
  • Quorum
  • Chain
  • BlockApps
This  support  for  multiple protocols  is  important, as  it  is likely  that  an  organization  is part of multiple consortium  and  each  consortium  again could have been implemented  with a different protocol. The  following diagram provides an illustration of  a  multi consortium, multi protocol view from the point of an enterprise.

It  is  in the  best  interest  of Azure  Blockchain adoption that  all these  protocol work seamlessly without  errors, such that  Azure  can be the go to platform for  Blockchain implementation. In this context  I  have  listed  the  current  issues  I am facing  with setting  up  HyperLedger Fabric On Azure. It  could  be  that  some  thing  is missed  out. Azure  should  include  more  documentation on implementing  this  on Azure, so that  more  work could be done.

For  implementing  HyperLedger Fabric  start  with the  pre defined ARM Template that is available in Azure Market Place.

  • Select, Hyperledger Fabric Single Member Blockchain  from Azure Resource Manager Template
  • Enter  information  about SSH Public Key  that  will help with authentication
  • In the Network Size  & Performance tab,  select information about number of  Membership Nodes, Orderer Nodes, Peer Nodes. We can  leave it the default for the demo setup.
  • Finally the system  runs  a  validation to ensure  that  all  values  are  correct to be ready with deployment.
After  the  final  submission,  the  deployment  takes roughly  around  30 minutes  to  create the objects and  it  also outputs  the  connection parameters  to  connect to the  blockchain network.

The  template  creates  5 virtual machines,  same number of  network interfaces, storage objects. The Load Balancer  will  act as a entry  point  for  each of the virtual machines  and  NAT rules  are setup to SSH into  each  of  the virtual  machines.

We could use  Putty  to  log in to each of the nodes  to  see  the Docker  Processes that  are running. However  as  seen  in  the  following  screen shot,  few of the Docker Images are running properly. For others  it  looks like they  are  going  into Restart mode.  There is  no further  documentation from Microsoft  for  fixing  this  issue.  As mentioned  it  will be in the best interest of organization to fix  the  HyperLedger Fabric  Installation issues  as  it  is one of  the important private  consortium  protocol.

See  the output  of Docker  from  each of the  nodes,  it  is better  to close the next steps  with proper documentation  from  Microsoft  side.


  1. Very informative article Srinivasan. Thanks.

  2. Can we have two membership node Default template has fixed setting for membership node as 1