Intereting Posts
502 Bad Gateway при доступе к виртуальному хосту через прокси-сервер Nginx Jwilder Запуск контейнера докеров на локальном хосте через VM Возможно ли иметь централизованное ведение журнала для приложений Docker для ElasticBeanstalk? Выявление нескольких портов из ManagedVM Правильный способ перемещения контейнера докеров-данных только с одного компьютера на другой Создание реестра Docker HA Ошибка резервного копирования Gitlab: упакованные объекты умерли от сигнала 9 Докер – невозможно связать контейнер Как использовать docker-compose на ovh-хостинге Мониторинг изменений при установке каталога хоста из контейнера Docker Файлы не добавляются в рабочую область докеров Внедрение приложения моделирования с использованием AKKA Выбор различных ветвей кода при использовании общего базового изображения в Docker dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim mock package docker: build – соединение отказано

узел akka в докере явно отключен

Я использую akka 2.4-M2 в своем проекте. И я хочу развернуть свои проекты с докером. Однако, когда я использую 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: 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-SNAPSHOT

Мне интересно, что я могу сделать, чтобы сделать frontend-ассоциировать успешно с бэкэнд.

Заранее благодарю ваших пациентов за ответы.

    Проверьте это, как запустить кластер akka в докере: http://blog.michaelhamrah.com/2014/06/akka-clustering-with-sbt-docker-and-sbt-native-packager/

    Короткий ответ заключается в том, что кластер akka требует, чтобы адрес был согласован как с внутренним, так и с внешним. Поэтому, когда вы запускаете приложение akka в докере, вам нужно работать с внутренним IP-адресом, который динамически создается для вашего контейнера.

    У вас должен быть сценарий запуска следующим образом:

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

    Поместите его в контейнер докеров и используйте переменную окружения CLUSTER_IP в вашей конфигурации akka для своего адреса хоста кластера.

    UPDATE: в докерной версии 1.10+ из-за добавления новой сетевой функции нет необходимости запускать сценарий запуска. Вы можете просто использовать имя контейнера, поскольку ссылка и докер фиксируют адрес для вас.