Package

akka.cluster.bootstrap

dns

Permalink

package dns

Visibility
  1. Public
  2. All

Type Members

  1. final class HeadlessServiceDnsBootstrap extends Actor with ActorLogging with Timers

    Permalink

    Looks up members of the same "service" in DNS and initiates HttpContactPointBootstrap's for each such node.

    Looks up members of the same "service" in DNS and initiates HttpContactPointBootstrap's for each such node. If any of the contact-points returns a list of seed nodes it joins them immediately.

    If contact points do not return any seed-nodes for a contactPointNoSeedsStableMargin amount of time, we decide that apparently there is no cluster formed yet in this deployment and someone as to become the first node to join itself (becoming the first node of the cluster, that all other nodes will join).

    The decision of joining "self" is made by deterministically sorting the discovered service IPs and picking the *lowest* address.

    If this node is the one with the lowest address in the deployment, it will join itself and other nodes will notice this via the contact-point probing mechanism and join this node. Please note while the cluster is "growing" more nodes become aware of the cluster and start returning the seed-nodes in their contact-points, thus the joining process becomes somewhat "epidemic". Other nodes may get to know about this cluster by contacting any other node that has joined it already, and they may join any seed-node that they retrieve using this method, as effectively this will mean it joins the "right" cluster.

    CAVEATS: There is a slight timing issue, that may theoretically appear in this bootstrap process. FIXME explain the races

    Annotations
    @InternalApi()

Ungrouped