pub struct ClusterConfig {
pub listen: SocketAddr,
pub root_pubkeys: Vec<String>,
pub seeds: Vec<String>,
pub join_token: Option<String>,
pub store_dir: Option<PathBuf>,
pub mesh: Option<MeshConfig>,
}Expand description
cluster section — self-hosted cluster mode. Parsed in
every build so config files stay portable; only consumed when the cluster
feature is compiled in (boatramp serve --mode cluster).
Fields§
§listen: SocketAddrAddress to bind this node’s Raft peer mesh on (the /raft/* +
/stream/* endpoints) — distinct from the public serve.addr.
root_pubkeys: Vec<String>The cluster root anchor set — the es256:/ed25519:-tagged public
keys that define this cluster’s identity (a cluster is its root key).
Every join/trust decision verifies against this set. Empty ⇒ falls back to
serve.auth_root_public_key (the single-anchor default). A set enables
make-before-break root rotation.
seeds: Vec<String>Seeds — control-plane addresses of existing cluster members
(host:port), any of which can admit this node. Present ⇒ this node
joins (redeems its join_token); absent + no durable state + explicit
--cluster-init ⇒ it founds. There is no peer map: members are learned
from the root-signed join response.
join_token: Option<String>The single-use bearer join token used when seeds are set. Keeps the
secret out of the file via a prefix: env:VAR, path:/file, or an inline
literal. Usually supplied via serve --cluster-join <ticket> instead.
store_dir: Option<PathBuf>Directory for this node’s durable Raft log/state store (node-local;
distinct from the replicated control plane). Default
<data-dir>/raft.
mesh: Option<MeshConfig>Mesh identity + TLS settings. Absent ⇒ defaults (identity key
auto-generated under <data-dir>/mesh/identity.key).
Trait Implementations§
Source§impl Clone for ClusterConfig
impl Clone for ClusterConfig
Source§fn clone(&self) -> ClusterConfig
fn clone(&self) -> ClusterConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClusterConfig
impl Debug for ClusterConfig
Source§impl<'de> Deserialize<'de> for ClusterConfig
impl<'de> Deserialize<'de> for ClusterConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ClusterConfig
impl RefUnwindSafe for ClusterConfig
impl Send for ClusterConfig
impl Sync for ClusterConfig
impl Unpin for ClusterConfig
impl UnsafeUnpin for ClusterConfig
impl UnwindSafe for ClusterConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more