Failover covers a member that refuses the request — a closed port, an unreachable host, a certificate the caller can’t verify. A member that accepts a request and then goes quiet ends that one call with a
502 and is not retried elsewhere: the request may already have executed, and re-sending it to another node would run it twice. A pool masks a dead node, not a wedged one.A pool needs at least one executor with a public IPv4 address, and every pool executor must accept inbound TCP 443 — that’s where the pool’s endpoint terminates TLS. Set
advertised_host in the executor’s config ([agent] in /etc/nvcl/agent.toml, [operator] on Kubernetes) and restart it. It has to be a public IPv4 literal: peers dial the address exactly as advertised, so a DNS name doesn’t work. A node whose executor advertises nothing usable is withheld — the pool keeps serving through its other nodes.Create a pool
Create pool opens a four-step wizard:1
Domain
Choose the pool domain — the exact hostname clients will call (for example
rpc.example.org), hostname only, no scheme, path, or port. It can’t be changed after the pool is created. Creating the pool immediately generates a private key and CSR for this exact domain; the private key stays in the Hub. To serve a different domain, create another pool.2
Nodes
Select 1–100 nodes. The first node fixes the pool’s chain and network — every later node must match. Only compatible, unpooled nodes are offered.
3
Review
Confirm the domain, the pool’s chain/network, and the initial members before anything is saved.
4
Setup
Publish the DNS records shown, then send the CSR to your certificate authority. Uploading the signed certificate here is optional — you can install it later from the Certificate tab. Until it’s installed, each executor serves only its own node: a call to another executor has no certificate to verify, so there is no failover between hosts yet.
Overview
The Overview tab is the pool at a glance — its client endpoint (the domain callers use), its chain/network, and a setup status with a readiness checklist over Domain, TLS certificate, DNS records, and Members. The status describes the setup, not live traffic:Members
The Members tab lists the pool’s nodes — each row shows the node, its executor (name and public IP), and whether it’s in rotation:- In rotation — nothing in the pool’s setup keeps this node out. Whether it serves a given request is decided by its executor on every check-in, from the node’s own state, so a node that is stopped or still syncing still reads in rotation here.
- Withheld — its executor advertises no address, a name instead of an address, or an address that isn’t a public IPv4, so callers have no way to reach it; the pool serves through its other nodes. Fix by advertising a public IPv4 on that executor.
- Cordoned — the pool skips this node while it’s cordoned, and the node keeps running. Cordoning isn’t settable from the console yet.
Certificate
The pool’s private key and CSR are generated for its domain when you create it; the private key stays in the Hub. On the Certificate tab (also the create wizard’s Setup step):- Get the CSR signed — Copy CSR or Download CSR and send it to your certificate authority.
- Install the signed chain — paste the signed chain (starting with
-----BEGIN CERTIFICATE-----) or Choose File, then Save certificate.
DNS
The DNS tab lists the records to create at your DNS provider — an A record per executor public IPv4 that answers for the pool, so the domain round-robins across your nodes’ hosts. Each row shows the type, name, value (the executor’s public IPv4), and which executor and nodes it covers. Novacula can’t check your DNS zone, so verify the records at your provider.Activity
The Activity tab logs what’s happened to the pool — membership changes, certificate installs, and the like. A brand-new pool reads Nothing has happened to this pool yet.The pool endpoint
Clients callhttps://<pool-domain>. That endpoint is open: unlike a node’s own Public domain exposure, it takes no RPC key and applies no rate limit in this release. The only calls it refuses are the chain’s node-control methods (Bitcoin’s stop and setban, and their equivalents elsewhere). Restrict the domain at your own edge if that matters.
What it serves is narrower than a node’s own endpoint:
Send heavy calls — a wide
eth_getLogs, a debug_trace* — to a node directly: through a pool they can come back as a 502 while the same call succeeds against the node itself.
Permissions
- View pools — any organization member.
- Create and delete pools, add or remove members, and install certificates — Owners and Admins.
Related
- RPC exposure — how a single node exposes RPC.
- Deploy a node
- Connect an executor