Akka Management是管理Akka集群的一套工具。
总览
Akka Management 包括以下模块:
akka-management是基础模块,为Akka管理工具提供可扩展的HTTP管理端点以及可插入的运行状况检查机制。
akka-cluster-bootstrap:帮助集群引导程序使用 Akka Discovery完成集群的启动
akka-management-cluster-http是一个提供HTTP端点的模块,用于akka集群内部检查和管理。
Akka的内置JMX管理支持为集群管理提供了JMX MBean。
Akka Discovery有下面几种方法:
依赖
主要的Akka Management依赖关系称为akka-management。 但是它本身并不提供任何功能,您必须将它与您想要使用的管理扩展库(例如cluster http management或者cluster bootstrap)结合使用。 这种选择设计使用户只要包含他们实际想要在项目中使用(和加载)的最小功能集即可。
libraryDependencies += "com.lightbend.akka.management" %% "akka-management" % "1.0.1"
基本使用
Akka Management需要启动来暴露路由:
AkkaManagement(system).start()
这允许用户在暴露路由之前可以为引导加入过程和其他事情准备任何东西。
基本配置
可以使用下面的配置信息来配置 HTTP Cluster management信息:
akka.management.http.hostname = "127.0.0.1"
akka.management.http.port = 8558
通过设置下面的属性,可以修改API的基础路径:
akka.management.http.base-path = "myClusterName"
使用上面配置之后,Akka管理路由将在/ myClusterName / ...基本路径下公开。 例如,当使用Akka Cluster Management路由时,成员信息将在/ myClusterName / shards / {name}下可用。
只读路由
默认情况下,Akka Management的扩展应该只提供只读路由。 这可以通过将akka.management.http.route-providers-read-only设置为false来更改。 每个扩展都可以通过ManagementRouteProviderSettings.readOnly访问此属性的值,以决定要公开的路由。
例如,cluster-http扩展只提供了只读访问cluster的member信息,但是可以设置route-provider-read-only = false,管理集群的httpA访问点就被暴露出来了,例如设置成员downing的http访问点。
安全配置
非安全使用的代码如下:
AkkaManagement(system).start()
停止Akka Management
您可以通过在AkkaManagement上调用stop()来完成此操作。 此方法返回Future [Done]以通知服务器何时停止。
val management = AkkaManagement(system)
management.start()
//...
val bindingFuture = management.stop()
bindingFuture.onComplete { _ =>
println("It's stopped")
}
扩展功能的开发
用户可以要为Akka Management编写第三方扩展。比如ClusterBootstrap。
第三方扩展需要主动执行,Akka Management扩展不应自动启动,而应由用户手动启动。 其中一个例子是Cluster Bootstrap。 它为Akka Management提供路由,但除非调用ClusterBootstrap()。start(),否则引导过程不会启动。 因此,用户可以确定应用程序何时准备好开始加入现有集群。