Акка удаленных актеров из разных сетей
У меня 2 системы в 2 разных сетях. Одна система находится в общедоступном облаке, а другая - на ПК. Проблема в том, что я не могу получить доступ к системе ПК удаленно, потому что система ПК имеет локальный IP-адрес в качестве имени хоста (например, 192.168.1.140), а в облачной системе я указал в качестве системы назначения IP-адрес из моего открытого IP-адреса. И в маршрутизаторе я сделал переадресацию портов, чтобы перенаправить трафик, поступивший через указанный порт, в систему субъекта. Ниже приведена ошибка, которая происходит на ПК актеров системы:
[ERROR] [03/27/2015 14:57:54.712] [slave-port-akka.remote.default-remote-dispatcher-6] [akka.tcp://pc-system@192.168.1.140:20007/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fxxx%40192.168.1.183%3A2005-0/endpointWriter] dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient [Actor[akka.tcp://pc-system@my_public_ip:20007/]] arriving at [akka.tcp://pc-system@my_public_ip:20007] inbound addresses are [akka.tcp://pc-system@192.186.1.140:20007]
Спасибо, Мариус!
2 ответа
Решено путем создания VPN, и теперь оно более безопасно и работает отлично!
Akka должен иметь возможность связываться с тем же IP-адресом или именем хоста, что другие удаленные системы акторов будут использовать для его адресации. Если действующие системы в вашем общедоступном облаке обращаются к системе в вашем локальном ящике как $MY_PUBLIC_IP, это то, к чему должна привязываться ваша действующая система.
Вы можете использовать DNS, чтобы обойти это, связывая и действуя в системах акторов по логическому имени, а не по IP-адресу. Отображение имен хостов в /etc/hosts также работает, но, очевидно, представляет собой проблему с обслуживанием.
(Это изменится в будущей версии, но вам все равно нужно будет обеспечить, чтобы ваша система акторов была доступна другим системам акторов).