=doc #18163 More visible docs about NAT support
This commit is contained in:
parent
49558dc415
commit
ca22ae9090
5 changed files with 60 additions and 14 deletions
|
|
@ -70,23 +70,13 @@ The consequence of these decisions is that it is not possible to safely create
|
||||||
pure client-server setups with predefined roles (violates assumption 2).
|
pure client-server setups with predefined roles (violates assumption 2).
|
||||||
For client-server setups it is better to use HTTP or Akka I/O.
|
For client-server setups it is better to use HTTP or Akka I/O.
|
||||||
|
|
||||||
Using setups involving Network Address Translation, Load Balancers or Docker
|
**Important**: Using setups involving Network Address Translation, Load Balancers or Docker
|
||||||
containers violates assumption 1, unless additional steps are taken in the
|
containers violates assumption 1, unless additional steps are taken in the
|
||||||
network configuration to allow symmetric communication between involved systems.
|
network configuration to allow symmetric communication between involved systems.
|
||||||
In such situations Akka can be configured to bind to a different network
|
In such situations Akka can be configured to bind to a different network
|
||||||
address than the one used for establishing connections between Akka nodes::
|
address than the one used for establishing connections between Akka nodes.
|
||||||
|
See :ref:`remote-configuration-nat`.
|
||||||
|
|
||||||
akka {
|
|
||||||
remote {
|
|
||||||
netty.tcp {
|
|
||||||
hostname = my.domain.com # external (logical) hostname
|
|
||||||
port = 8000 # external (logical) port
|
|
||||||
|
|
||||||
bind-hostname = local.address # internal (bind) hostname
|
|
||||||
bind-port = 2552 # internal (bind) port
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Marking Points for Scaling Up with Routers
|
Marking Points for Scaling Up with Routers
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,10 @@ To enable cluster capabilities in your Akka project you should, at a minimum, ad
|
||||||
settings, but with ``akka.cluster.ClusterActorRefProvider``.
|
settings, but with ``akka.cluster.ClusterActorRefProvider``.
|
||||||
The ``akka.cluster.seed-nodes`` should normally also be added to your ``application.conf`` file.
|
The ``akka.cluster.seed-nodes`` should normally also be added to your ``application.conf`` file.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you are using Docker or the nodes for some other reason have separate internal and external ip addresses
|
||||||
|
you must configure remoting according to :ref:`remote-configuration-nat-java`
|
||||||
|
|
||||||
The seed nodes are configured contact points for initial, automatic, join of the cluster.
|
The seed nodes are configured contact points for initial, automatic, join of the cluster.
|
||||||
|
|
||||||
Note that if you are going to start the nodes on different machines you need to specify the
|
Note that if you are going to start the nodes on different machines you need to specify the
|
||||||
|
|
|
||||||
|
|
@ -469,3 +469,27 @@ There are lots of configuration properties that are related to remoting in Akka.
|
||||||
best done by using something like the following:
|
best done by using something like the following:
|
||||||
|
|
||||||
.. includecode:: code/docs/remoting/RemoteDeploymentDocTest.java#programmatic
|
.. includecode:: code/docs/remoting/RemoteDeploymentDocTest.java#programmatic
|
||||||
|
|
||||||
|
.. _remote-configuration-nat-java:
|
||||||
|
|
||||||
|
Remote configuration for NAT and Docker
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
In setups involving Network Address Translation (NAT), Load Balancers or Docker
|
||||||
|
containers the hostname and port pair that akka binds to will be different than the "logical"
|
||||||
|
host name and port pair that is used to connect to the system from the outside. This requires
|
||||||
|
special configuration that sets both the logical and the bind pairs for remoting.
|
||||||
|
|
||||||
|
.. code-block:: ruby
|
||||||
|
|
||||||
|
akka {
|
||||||
|
remote {
|
||||||
|
netty.tcp {
|
||||||
|
hostname = my.domain.com # external (logical) hostname
|
||||||
|
port = 8000 # external (logical) port
|
||||||
|
|
||||||
|
bind-hostname = local.address # internal (bind) hostname
|
||||||
|
bind-port = 2552 # internal (bind) port
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -28,6 +28,10 @@ To enable cluster capabilities in your Akka project you should, at a minimum, ad
|
||||||
settings, but with ``akka.cluster.ClusterActorRefProvider``.
|
settings, but with ``akka.cluster.ClusterActorRefProvider``.
|
||||||
The ``akka.cluster.seed-nodes`` should normally also be added to your ``application.conf`` file.
|
The ``akka.cluster.seed-nodes`` should normally also be added to your ``application.conf`` file.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you are using Docker or the nodes for some other reason have separate internal and external ip addresses
|
||||||
|
you must configure remoting according to :ref:`remote-configuration-nat`
|
||||||
|
|
||||||
The seed nodes are configured contact points for initial, automatic, join of the cluster.
|
The seed nodes are configured contact points for initial, automatic, join of the cluster.
|
||||||
|
|
||||||
Note that if you are going to start the nodes on different machines you need to specify the
|
Note that if you are going to start the nodes on different machines you need to specify the
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ For an introduction of remoting capabilities of Akka please see :ref:`remoting`.
|
||||||
particular Akka Remoting does not work transparently with Network Address Translation,
|
particular Akka Remoting does not work transparently with Network Address Translation,
|
||||||
Load Balancers, or in Docker containers. For symmetric communication in these situations
|
Load Balancers, or in Docker containers. For symmetric communication in these situations
|
||||||
network and/or Akka configuration will have to be changed as described in
|
network and/or Akka configuration will have to be changed as described in
|
||||||
:ref:`symmetric-communication`.
|
:ref:`remote-configuration-nat`.
|
||||||
|
|
||||||
Preparing your ActorSystem for Remoting
|
Preparing your ActorSystem for Remoting
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
@ -474,3 +474,27 @@ There are lots of configuration properties that are related to remoting in Akka.
|
||||||
|
|
||||||
.. includecode:: ../java/code/docs/remoting/RemoteDeploymentDocTest.java#programmatic
|
.. includecode:: ../java/code/docs/remoting/RemoteDeploymentDocTest.java#programmatic
|
||||||
|
|
||||||
|
|
||||||
|
.. _remote-configuration-nat:
|
||||||
|
|
||||||
|
Remote configuration for NAT and Docker
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
In setups involving Network Address Translation (NAT), Load Balancers or Docker
|
||||||
|
containers the hostname and port pair that akka binds to will be different than the "logical"
|
||||||
|
host name and port pair that is used to connect to the system from the outside. This requires
|
||||||
|
special configuration that sets both the logical and the bind pairs for remoting.
|
||||||
|
|
||||||
|
.. code-block:: ruby
|
||||||
|
|
||||||
|
akka {
|
||||||
|
remote {
|
||||||
|
netty.tcp {
|
||||||
|
hostname = my.domain.com # external (logical) hostname
|
||||||
|
port = 8000 # external (logical) port
|
||||||
|
|
||||||
|
bind-hostname = local.address # internal (bind) hostname
|
||||||
|
bind-port = 2552 # internal (bind) port
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue