微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

泊坞窗中的akka​​节点显式取消关联

我在我的项目中使用akka 2.4-M2.我想用docker部署我的项目.但是,当我使用boot2docker测试两个节点时,会出现问题.我的节点无法连接到种子节点.

build.sbt中的配置如下:

lazy val `topGatewayFrontend` = (project in file("topGatewayFrontend"))
  .enablePlugins(PlayScala)
  .enablePlugins(DockerPlugin)
  .settings(
    name := "topGatewayFrontend",libraryDependencies ++= (Dependencies.topGatewayFrontend ++ Seq(cache,ws)),dockerExposedPorts := Seq(9000)
  )

lazy val `topGatewayBackend` = (project in file("topGatewayBackend"))
  .enablePlugins(JavaAppPackaging)
  .enablePlugins(DockerPlugin)
  .enablePlugins(UniversalPlugin)
  .settings(
    name := "topGatewayBackend",javaoptions in run ++= Seq(
      "-Djava.library.path=./sigar","-xms128m","-Xmx512m"),// this enables custom javaoptions
    fork in run := true,libraryDependencies ++= Dependencies.topGatewayBackend ++ Seq(ws),dockerExposedPorts := Seq(9527)
  ).dependsOn(auditApi).aggregate(auditApi)

topGatewayFrontend中的远程配置为:

akka{
  remote {
    log-sent-messages = on
    log-received-messages = on
    netty.tcp {
      hostname = ${?HOSTNAME}
      port = 9527                   # external (logical) port
      bind-hostname = 0.0.0.0
      bind-port = 0
    }
  }
  cluster {
    seed-nodes = ["akka.tcp://application@"${?HOSTNAME}":9527"]
    roles = [topGatewayBackend]
  }
}

在topGatewayBackend中是:

akka{
  remote {
    log-sent-messages = on
    log-received-messages = on
    netty.tcp {
      hostname = ${?HOSTNAME}
      port = 0              # external (logical) port
      bind-hostname = 0.0.0.0
      bind-port = 0
    }
  }
  cluster {
    seed-nodes = ["akka.tcp://application@"${?HOSTNAME}":9527"]
    roles = [topGatewayFrontend]
  }
}

我得到的日志如下:

在后端:

[INFO] [07/12/2015 03:13:37.568] [application-akka.actor.default-dispatcher-16] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:9527] - Metrics collection has started successfully
[INFO] [07/12/2015 03:13:38.107] [application-akka.actor.default-dispatcher-16] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:9527] - leader is moving node [akka.tcp://application@192.168.59.103:9527] to [Up]
[INFO] [07/12/2015 03:13:38.112] [application-akka.actor.default-dispatcher-4] [akka.tcp://application@192.168.59.103:9527/user/cluster-monitor] Member up akka.tcp://application@192.168.59.103:9527 with roles Set(topGatewayBackend)

在前端:

[INFO] [07/12/2015 03:13:47.558] [main] [akka.remote.Remoting] Starting remoting
[INFO] [07/12/2015 03:13:47.842] [main] [akka.remote.Remoting] Remoting started; listening on addresses :[akka.tcp://application@192.168.59.103:34354]
[INFO] [07/12/2015 03:13:47.883] [main] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:34354] - Starting up...
[INFO] [07/12/2015 03:13:48.057] [main] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:34354] - Registered cluster JMX MBean [akka:type=Cluster]
[INFO] [07/12/2015 03:13:48.058] [main] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:34354] - Started up successfully
[INFO] [07/12/2015 03:13:48.251] [application-akka.actor.default-dispatcher-17] [akka.cluster.Cluster(akka://application)] Cluster Node [akka.tcp://application@192.168.59.103:34354] - Metrics collection has started successfully
[WARN] [07/12/2015 03:13:48.509] [application-akka.remote.default-remote-dispatcher-5] [akka.tcp://application@192.168.59.103:34354/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fapplication%40192.168.59.103%3A9527-0] Association with remote system [akka.tcp://application@192.168.59.103:9527] has Failed,address is Now gated for [5000] ms. Reason: [Association Failed with [akka.tcp://application@192.168.59.103:9527]] Caused by: [The remote system explicitly disassociated (reason unkNown).]

问题是[关联失败[akka.tcp://application@192.168.59.103:9527]]由以下原因引起:[远程系统显式取消关联(原因未知).]

docker run命令为:
docker run -e HOSTNAME = 192.168.59.103 -p 9527:9527 docker.fenxibao.com/topgatewaybackend:1.0-SNAPSHOT和docker run -p 9000:9000 -e HOSTNAME = 192.168.59.103 docker.fenxibao.com/topgatewayfrontend:1.0-快照

我想知道如何使前端与后端成功关联.

预先感谢您的耐心解答.

最佳答案
检查此如何在docker中运行akka集群:http://blog.michaelhamrah.com/2014/06/akka-clustering-with-sbt-docker-and-sbt-native-packager/

一个简单的答案是,akka群集要求该地址必须与内部和外部地址一致.因此,在docker中启动akka应用程序时,需要使用为容器动态创建的内部ip地址.

您需要具有以下启动脚本:

#!/bin/bash

CLUSTER_IP=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }'` $@     

将其放入您的docker容器中,并在akka配置中使用CLUSTER_IP环境变量作为其群集主机地址.

更新:
在docker 1.10版本中,由于添加了新的网络功能,因此不需要启动脚本.您可以只使用容器的名称作为参考,而docker会为您修复地址.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇文章和大家了解一下docker容器无法执行vim如何解决。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录docker容器无法执行vim【已解决...
这篇文章主要介绍了windowsDockerDeskTop最新款4.18.0怎么安装的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows&nb...
这篇文章主要介绍“docker的常用命令怎么使用”,在日常操作中,相信很多人在docker的常用命令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
这篇文章主要介绍“docker中怎么配置hosts”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker中怎么配置hosts”...
这篇“docker怎么部署zookeeper集群”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读...
这篇文章主要介绍了怎么使用Maven打包构建Docker镜像并推送到仓库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Maven...
本文小编为大家详细介绍“怎么使用Docker自动搭建GitLab”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Docker自动搭建GitLab”文章能帮助大家解决疑...
这篇文章主要介绍“docker容器内缺少命令如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker容器内缺少...
本篇内容主要讲解“DockerAPI未授权访问漏洞问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习...
今天小编给大家分享一下怎么使用docker部署centos系统测试环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家...