Подключить две машины в АККА удаленно, соединение отказано - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в akka и хотел соединить два компьютера с помощью akka удаленно, чтобы запустить какой-то код в обоих as (2 субъекта).Я попробовал пример в akka doc .Но что я на самом деле делаю, это добавляю 2 IP-адреса в конфигурационный файл, я всегда получаю эту ошибку?

Первая машина выдала мне эту ошибку:

[info] [ОШИБКА] [20.11.2008 13: 58: 48.833] [ClusterSystem-akka.remote.default-remote-dispatcher-6] [akka.remote.artery.Association (akka: // ClusterSystem)] Исходящий поток управления в [akka: //ClusterSystem@192.168.1.2: 2552] не выполнен.Перезапустить это.Рукопожатие с [akka: //ClusterSystem@192.168.1.2: 2552] не завершилось в течение 20000 мс (akka.remote.artery.OutboundHandshake $ HandshakeTimeoutException: Рукопожатие с [akka: //ClusterSystem@192.168.1.2: 2552] не завершилосьв течение 20000 мс)

и второй компьютер:

Исключение в потоке "main" akka.remote.RemoteTransportException: не удалось связать TCP с [192.168.1.3:2552]из-за: Связать не удалось из-за java.net.BindException: Невозможно назначить запрошенный адрес: связать

Содержимое файла конфигурации:

akka {
  actor {
    provider = cluster
  }
  remote {
    artery {
      enabled = on
      transport = tcp
      canonical.hostname = "192.168.1.3"
      canonical.port = 0
    }
  }
  cluster {
    seed-nodes = [
      "akka://ClusterSystem@192.168.1.3:2552",
      "akka://ClusterSystem@192.168.1.2:2552"]

    # auto downing is NOT safe for production deployments.
    # you may want to use it during development, read more about it in the docs.
    auto-down-unreachable-after = 120s
  }
}

# Enable metrics extension in akka-cluster-metrics.
akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"]

# Sigar native library extract location during tests.
# Note: use per-jvm-instance folder when running multiple jvm on one host.
akka.cluster.metrics.native-library-extract-folder=${user.dir}/target/native

1 Ответ

0 голосов
/ 20 ноября 2018

Прежде всего, вам не нужно добавлять конфигурацию кластера для удаленного взаимодействия AKKA.На ПК или узлах должно быть разрешено удаленное взаимодействие с конкретным портом вместо «0», чтобы вы знали, какой порт подключать.

Имеются конфигурации ниже

PC1

akka {
  actor {
    provider = remote
  }
  remote {
    artery {
      enabled = on
      transport = tcp
      canonical.hostname = "192.168.1.3"
      canonical.port = 19000
    }
  }
} 

PC2

akka {
  actor {
    provider = remote
  }
  remote {
    artery {
      enabled = on
      transport = tcp
      canonical.hostname = "192.168.1.4"
      canonical.port = 18000
    }
  }
} 

Используйте путь ниже действующего субъекта для подключения любого актера в удаленном режиме от ПК1 к ПК2

akka://<PC2-ActorSystem>@192.168.1.4:18000/user/<actor deployed in PC2>

Используйте путь ниже действующего субъекта для подключения от ПК2 к ПК1

akka://<PC2-ActorSystem>@192.168.1.3:19000/user/<actor deployed in PC1>

Номера портов и IP-адреса являются образцами.

...