NATS.io networking fundamentals in Bacalhau
Support of the libp2p
was discontinued in version v1.5.0
Starting from the v.1.3.0
to communicate with other nodes on the network Bacalhau uses NATS.io, a powerful open-source messaging system designed to streamline communication across complex network environments.
Our initial NATS integration focuses on simplifying communication between orchestrator and compute nodes. By embedding NATS within orchestrators, we streamline the network. Now, compute nodes need only connect to one or a few orchestrators and dynamically discover others at runtime, dramatically cutting down on configuration complexity.
Easier Setup: Compute nodes no longer need to be directly accessible by orchestrators, removing deployment barriers in diverse environments (on-premises, edge locations, etc.).
Increased Reliability: Network changes are less disruptive, as compute nodes can easily switch between orchestrators if needed.
Future-Proof: This sets the stage for more advanced NATS features like global clusters and multi-orchestrator setups.
The aim of integrating NATS into Bacalhau is to keep user experience with Bacalhau's HTTP APIs and CLIs for job submission and queries consistent. This ensures a smooth transition, allowing you to continue your work without any disruptions.
Start by creating a secure token. This token will be used for authentication between the orchestrator and compute nodes during their communications:
Make sure to securely store this token and share it only with authorized parties in your network.
With the authentication token set, launch your orchestrator node as follows:
This command sets up an orchestrator node with an embedded NATS server, using the given auth token to secure communications. It defaults to port 4222
, but you can customize this using the Orchestrator.Port
configuration key if needed.
Compute nodes can authenticate using one of the following methods, depending on your preferred configuration setup:
authsecret
from the Config:This method assumes the Compute.Auth.Token
is already configured on the compute node, allowing for a seamless authentication process.
Auth.Token
Value Directly in the Orchestrator URI:Here, the Auth.Token
is directly included in the command line, providing an alternative for instances where it's preferable to specify the token explicitly rather than rely on the configuration file.
Both methods ensure that compute nodes, acting as NATS clients, securely authenticate with the orchestrator node(s), establishing a trusted communication channel within your Bacalhau network.
We're committed to providing a secure and flexible distributed computing environment. Future Bacalhau versions will expand authentication choices, including TLS certificates and JWT, catering to varied security needs and further strengthening network security.
Global Connectivity and Scalability: NATS opens avenues for Bacalhau to operate smoothly across all scales, from local deployments to international networks. Its self-healing capabilities and dynamic mesh networking form the foundation for a future of resilient and flexible distributed computing.
Unlocking New Possibilities: The integration heralds a new era of possibilities for Bacalhau, from global clusters to multiple orchestrator nodes, tackling the complexities of distributed computing with innovation and community collaboration.
The shift to NATS is a step toward making distributed computing more accessible, resilient, and scalable. As we start this new chapter, we're excited to explore the advanced features NATS brings to Bacalhau and welcome our community to join us on this transformative journey.
If you’re interested in learning more about distributed computing and how it can benefit your work, there are several ways to connect with us. Visit our website, sign up to our bi-weekly office hour, join our Slack or send us a message.