Why start akka-management-cluster-bootstrap manually?

While it’s not necessary to manually start akka-management-cluster-http, one must manually start akka-management-cluster-bootstrap. Why is that?

See https://github.com/akka/akka-management/blob/master/bootstrap-joining-demo/kubernetes-api/src/main/scala/akka/cluster/bootstrap/DemoApp.scala#L33.

My observation is that there is always a human at the start of any cluster management sequence. The quest is whether a cluster is able to keep going in the face of failure.

ConductR was like this - you had to start the first node and then everything, including the services it managed, would be looked after for the lifetime of its cluster.

I hang on though, I think you’re referring to something else.

I don’t understand the question. Where did you see that akka-management-cluster-http is started automatically? I thought one would have to run

AkkaManagement(system).start()

or add the routes to an existing http server.

AkkaBootstrap is the part that sends the requests to the other discovered nodes. AkkaManagement is the part that replies to these requests. Therefore you need to have both started. I once asked in a PR why we couldn’t start both when AkkaBootstrap was started and the answer was that one can also bind the management routes to an existing http server and don’t want to start a new one only for the management routes.

2 Likes

AkkaManagement (which one has to start) is different from ClusterHttpManagement. It seems that having the JAR for the latter on the classpath is enough (which I meant with getting started automatically).

But your answer makes sense. Thanks!