¿Es posible ejecutar nodos akka detrás de NAT (cada nodo está detrás de nat independiente, el puerto público está DNAT en privado)? Actualmente estoy tratando de implementar nodos akka en contenedor acoplable. Docker es el puerto público de Natting al puerto privado de instancia, el problema es que la dirección del nodo de akka se crea desde akka.remote.netty.tcp.hostname, pero en el entorno natted difiere del nombre de host público. el post procedente de la interfaz pública se rechaza porque akka está vinculado a una IP privada. ¿Es posible cambiar la dirección de los nodos akka que no respetan akka.remote.netty.tcp.hostname, digamos que la dirección actual de los nodos es akka.tcp: //ClusterSystem@172.16.10.5: 2551, donde 172.16.10.5 es akka.remote.netty .tcp.hostname, pero quiero cambiarlo a akka.tcp: //ClusterSystem@10.2.0.222: 2551, donde 10.2.0.222 es una dirección pública accesible, pero akka todavía debería estar escuchando en 172.16.10.5:2551.
Tal vez puedas instruir a Akka o Netty para que se vinculen a una dirección y puerto específicos, pero anunciarse en uno diferente. No entiendo lo suficiente a Akka o Netty como para saber si es posible.
De lo contrario, hay tres cosas que puedes probar:
0.0.0.0
, y luego hacer "identity port-binding", es decir, docker run -p 1234:1234 …
que expondrá el puerto 1234 fuera el contenedor al puerto 1234 dentro del contenedor (mitigando así un poco la NAT); Sí, es posible: necesita configurar el bind-host
y el bind-port
para la comunicación remota además del host
y el port
habitual.
Cómo configurar Akka detrás de NAT de los documentos de Akka.
El soporte nativo para esto está fuera desde Akka 2.4.x; y 2.3.11 para clientes de suscripción Typesafe .