GitHubContribute in GitHub: Open doc issue|Edit online

Adding and removing ordering service nodes without a system channel

In this tutorial, we'll talk about the process for creating ordering nodes without a system channel. These new ordering nodes will be added to an existing ordering service and existing channels. This topic includes instructions for adding ordering nodes using the same organization and blockchain environment that already has ordering nodes.

Adding a node to the ordering service is, at a high level, a three step process.

  1. Create the node to be added to an existing ordering service.
  2. Add the node to the ordering service without a system channel.
  3. Add the node to any application channels where you want it to become a consenter.

If you have already created an ordering service, you can reuse the CA, MSP, node identity,tls certificate for orderer identity and admin identity you created as part of that process when creating the new node and can skip down to the Create the node.

Create the node

While it is not possible to ensure that the ordering service is available (that is, that a quorum of nodes are up and that a leader has been elected) without reviewing your Orderer node logs, it is a best practice to minimally ensure the likelihood that a quorum exists by verifying that the pods where the nodes have been deployed are available. This can be done by checking to make sure the relevant pods are active in the Kubernetes dashboard or by issuing kubectl get pods -n <namespace> and checking on the pods. If you do not have access to the cluster where all of the ordering nodes were created, contact the administrator of the relevant clusters. If a quorum of nodes is not available, it will not be possible to add another node to the ordering service.

To add a node, click on the tile representing the ordering service in the Nodes panel. Then click on the Ordering nodes panel and the Add another node tile. Then click Create an ordering node. This will open a series of panels similar to the process for creating an ordering service.

Add another node
Figure 5. Add another node

You will need to:

  • Give the node a display name. A best practice will be to give the node a display name that matches the pattern used for the other nodes in the ordering service. By default, nodes are given the name <name of ordering service>, <name of ordering service>, and so on.
  • Select a CA. This should be the CA used to create your MSP.
  • Enter an enroll ID and secret. Again, if you created an enroll ID and secret for your existing ordering nodes, you may use the same enroll ID and secret here.
  • Select an MSP. If you are adding to an ordering service you created in your console, reuse the MSP you used when creating that ordering service. If the new node is being added to an ordering service created elsewhere, use the MSP you exported to that console.
  • Choose a Fabric version for the new node. Note that this must be the same Fabric version used by the other nodes in the ordering service. If you choose a different Fabric version, the new node will be unable to join the consenter set.
  • Associate identity. You will only have to associate an identity if you are using a different MSP from the MSP that was originally used when creating the ordering service.

The TLS Certificate Signing Request (CSR) hostname is an option available to advanced users who to want specify a custom domain name that can be used to address the ordering service endpoint. Custom domain names are not a part of this tutorial, so leave the TLS CSR hostname blank for now.

Join the node to the application channel

Joining an orderer to an application channel will make it either a follower or a consenter. It will be a consenter if the node is found in the the channel's config block in the consenters section. Otherwise the orderer will be a follower. Both types of orderers will receive transaction/block data, but only a consenter can vote and play a role in the consensus algorithm. A node can be promoted from a follower to a consenter by first joining it to the channel, and then editing the channel's config to add it as a consenter. Similarly these steps can be reversed to demote an orderer and unjoin it completely if need be.

Joining an orderer to the application channel can be started by clicking the cluster's tile. Next click either the plus sign on a channel tile or the **Join channel** blue button. Follow the prompts and select which orderer nodes to join. Then click **Submit**. Once an orderer has joined it will begin downloading blocks to catch up to the current level.

Add the node to the application channel

  1. Navigate to the Channels and click the respective channel.

  2. Click the Settings in the channel panel.

  3. After adding the organization, click on the Consenter set tab, select the Ordering Service node from the drop down list, and click Add. Note that you will only be able to add one node to a channel at a time.

  4. After the Ordering Service MSP has signed the channel configuration update, the organization that initiated the channel update will get a notification that it must sign and submit the channel configuration update. This notification, like all notifications, will be located in the upper right of the screen behind the Notifications icon, which resembles a bell. For more information about how signature collections work, see Signature collection flow.

It will take a few minutes for the new node to sync with the consenter set of the application channel. The time involved depends on a number of factors, including the number of blocks in a channel. During this time, the ordering service may be down. After the node has been successfully added to the application channel, you will see it in the Ordering nodes tab.

Removing ordering service nodes

If a user wants to delete an ordering node, it must first remove the node from all channels where it is a consenter. This is because the console does not distinguish between a deleted node and an unavailable node, and will keep an ordering node as part of its consenter set until it is removed.

As a result, when you delete a node, a check is performed to see if it is a consenter on any channels. If it is, you will not be able to delete the node until it has been removed as a consenter from all channels. After removing the node as a consenter from all channels, you will be able to delete the node by clicking the trash can icon. Note that this action will have to be taken in the console where the node was created.

As part of this same process, make sure to reach out to the other console operators to let them know that the node has been deleted so they can remove the tile from their console.