Tag: 阿卡

重新启动后,Akka actor不会重新连接到远程Actor

所以我有2个docker运行2个akka系统。 集装箱A运行系统A. 容器B运行系统B. 当系统A加载时,它通过以下方式连接到系统B: Await.result(system.actorSelection(actorPath).resolveOne(new Timeout(RESOLVE_DURATION)), RESOLVE_DURATION) 这里的一切都很好,连接是成功的,系统交换消息。 然后我重新启动容器B. docker restart container-b 在系统A上,如果系统B被终止,我会添加一个监视。 当我重新启动系统B时,系统A中出现akka终止消息 – 一切正常。 然后,我每5秒钟启动一个重新连接循环,并尝试重新连接到系统B: Await.result(system.actorSelection(actorPath).resolveOne(new Timeout(RESOLVE_DURATION)), RESOLVE_DURATION) 但是现在,我得到了一个ActorNotFoundexception。 [ERROR] [21/08/2017 08:11:49.851] [exchange-akka.actor.default-dispatcher-14] [akka.remote.EndpointWriter] AssociationError [akka.tcp://system@systemA:2555] -> [akka.tcp://system@systemB:2550]: Error [Shut down address: akka.tcp://system@systemB:2550] [ akka.remote.ShutDownAssociation: Shut down address: akka.tcp://system@systemB:2550 Caused by: akka.remote.transport.Transport$InvalidAssociationException: The remote system terminated the association because it is shutting down. […]

在Singularity中运行Docker映像时绑定端口

我目前正在处理分布式graphics处理平台,该平台在Docker容器内维护一个Akka集群,并且最近已经被授予访问大型集群的权限来testing它。 不幸的是,这个集群不运行docker,只有奇点。 因为奇点支持docker镜像,这并不是一个初始问题,但是由于Akka集群的特性,我必须通过几个环境variables并绑定几个端口。 例如,系统中的“分区pipe理器”将使用以下命令运行: docker run -p $PM0Port:2551 –rm -e "HOST_IP=$IP" -e "HOST_PORT=$PM0Port" -v $entityLogs:/logs/entityLogs $Image partitionManager $PM0ID $NumberOfPartitions $ZooKeeper 通过查看Singularity文档,我可以看到我可以创build一个“Singularity”文件并指定环境variables,但似乎没有关于绑定自定义端口的任何文档。 也没有解释如何我可以传递参数到默认入口点(该项目编译与'sbt docker:发布',所以我不知道这将是重新分配它)。 即使这是解决scheme,因为有多个angular色types(以及每个angular色的多个实例),所以会出现指定环境variables和文档中的端口需要模板化,在运行时创build文件以及为每个angular色构build映像。 我相信我完全错过了一个页面,很好地将这个docker命令翻译成等价的奇点,但是我找不到它。 如果有人可以指点我这样的资源,或者可以帮我自己改变这个,那太棒了!

泊坞窗akka和斯卡拉,应用程序启动和停止后,没有理由

我使用Akka创build了一个Scala应用程序。 当我运行它: scala /Statistics.jar ./server.conf它完美的作品。 但如果我把它放在一个服务器,或者如果我把它放在泊坞窗图像,当我启动它的应用程序启动,然后直接停止后。 这是我的日志: … [DEBUG] [02/01/2017 10:26:13.198] [webserver-akka.actor.default-dispatcher-11] [EventStream(akka://version)] logger log1-Slf4jLogger started [DEBUG] [02/01/2017 10:26:13.185] [subscription-akka.actor.default-dispatcher-4] [akka://subscription/system] now supervising Actor[akka://subscription/system/log1-Slf4jLogger#731298157] [DEBUG] [02/01/2017 10:26:13.201] [subscription-akka.actor.default-dispatcher-4] [akka://subscription/system] now watched by Actor[akka://subscription/] [DEBUG] [02/01/2017 10:26:13.202] [webserver-akka.actor.default-dispatcher-11] [EventStream(akka://version)] Default Loggers started [DEBUG] [02/01/2017 10:26:13.193] [version-akka.actor.default-dispatcher-2] [akka://version/system] now supervising Actor[akka://version/system/log1-Slf4jLogger#1075717908] [DEBUG] [02/01/2017 10:26:13.206] [session-akka.actor.default-dispatcher-3] [akka://session/system/UnhandledMessageForwarder] started […]

如何在Docker和Akka HTTP中最大化吞吐量?

我正在build立一个特定的性能测量夹具。 我有一个负载生成器,繁荣( https://github.com/rakyll/boom )。 有了这个我可以产生一个相当不错的负载量。 我也有一个包含nginx作为负载平衡器的Docker镜像,以及两个基于Akka-HTTP的REST服务器。 除了点击命中之外,它们什么也不做(它们总是返回200)。 单机运行这些服务器(Docker之外)我已经能够达到1000点/秒。 不知道这是否好。 在这个Dockerconfiguration下,这个数字下降到每秒220次。 我有点期待,以及… 2000点击/秒左右。 更高会更好。 如果我能find一种方法来达到3-4K点击/秒的安排,我会很高兴。 我经常得到这样的错误信息: [9549] Get http://192.168.99.100:9090/dispatcher?reply_to=foo: dial tcp 192.168.99.100:9090: socket: too many open files 尝试使用–ulimit nofile = 2048运行我的Docker,但这并没有帮助。 我的阿卡的application.conf只是: akka { loglevel = "ERROR" stdout-loglevel = "ERROR" http.host-connection-pool.max-open-requests = 512 } 服务器代码: object Main extends App { implicit val system = ActorSystem() implicit […]

Docker Akka-Http应用程序端点无法访问

我有一个非常基本的Akka-http应用程序,它基本上不比Hello-world设置更多 – 我定义了一个端点并简单地将它绑定到“localhost”和端口“8080”: object Main extends App with Routes { private implicit val system = ActorSystem() protected implicit val executor: ExecutionContext = system.dispatcher protected implicit val materializer: ActorMaterializer = ActorMaterializer() protected val log: LoggingAdapter = Logging( system, getClass ) log.info( "starting server" ) Http().bindAndHandle( logRequestResult("log",Logging.InfoLevel)( allRoutes ), "localhost", 8080 ) log.info( "server started, awaiting requests.." […]

如何从sbt-native-packager发布到Google Container Engine?

我正在尝试dockerizing我的Scala / Akka应用程序:我正在使用sbt-native-packager并希望部署到GKE。 看来我可以通过在我的build.sbt文件中设置正确的值,然后通过sbt docker:publish启动它。 我不知道build.sbt文件中的值应该是什么。 例如, dockerRepository设置应该具有表单 [repository.host[:repository.port]] 在GKE上放上一个集群的正确信息是什么? 非常感谢你的任何指针。