Documentation ¶
Overview ¶
Package cluster provides an elastic peer discovery and gossip layer. Proposer and acceptor nodes join the same cluster and know about each other.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CalculateAdvertiseIP ¶
func CalculateAdvertiseIP(bindHost, advertiseHost string, resolver Resolver, logger log.Logger) (net.IP, error)
CalculateAdvertiseIP deduces the best IP on which to advertise our API based on a user-provided bind host and advertise host. This code lifts some logic out of the memberlist internals, and augments it with extra logic to resolve hostnames. (Memberlist demands pure IPs.)
Types ¶
type HostPorts ¶
HostPorts are deduced via CalculateHostPorts.
func CalculateHostPorts ¶
func CalculateHostPorts(bindAddr, advertiseAddr string, defaultClusterPort int, clusterPeers []string, logger log.Logger) (res HostPorts, err error)
CalculateHostPorts will take a user-specified cluster bind address (required) and explicit advertise address (optional), along with a default port for cluster communications (required) and a set of cluster peer host:ports (optional), and deduce the best concrete hosts and ports to bind to and advertise within the cluster, suitable for passing to memberlist. We also figures out some notices and warnings along the way, and log them to the passed logger.
type Peer ¶
type Peer struct {
// contains filtered or unexported fields
}
Peer represents this node in the cluster.
func NewPeer ¶
func NewPeer( bindAddr string, bindPort int, advertiseAddr string, advertisePort int, existing []string, t NodeType, apiPort int, logger log.Logger, ) (*Peer, error)
NewPeer creates or joins a cluster with the existing peers. We will listen for cluster communications on the bind addr:port. We advertise a NodeType API, reachable on apiPort.
If advertiseAddr is not empty, we will advertise ourself as reachable for cluster communications on that address; otherwise, memberlist will extract the IP from the bound addr:port and advertise on that.
func (*Peer) ClusterSize ¶
ClusterSize returns the total size of the cluster from this node's perspective.