From 43b56e82bd61ea6b665ee493ef361b5bd54f54b2 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Tue, 31 May 2022 10:08:21 +0800 Subject: [PATCH 1/2] feat: add listener bind ip config. --- etc/emqx.conf | 13 +++++++++++++ priv/emqx.schema | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/etc/emqx.conf b/etc/emqx.conf index 0f8f93a91..858079d15 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -301,6 +301,17 @@ node.crash_dump = {{ platform_log_dir }}/crash.dump ## vm.args: -kernel net_ticktime Number ## node.dist_net_ticktime = 120 +## If the host of an Erlang node has many network interfaces, +## this parameter specifies which one to listen on. +## For the type definition of ip_address(), see inet(3). +## +## See: http://www.erlang.org/doc/man/kernel_app.html +## +## Value: IP Address, [0-255].[0-255].[0-255].[0-255] +## Default: 0.0.0.0 +## 0.0.0.0 means all network interfaces. +node.dist_use_interface = 0.0.0.0 + ## Sets the port range for the listener socket of a distributed Erlang node. ## Note that if there are firewalls between clustered nodes, this port segment ## for nodes’ communication should be allowed. @@ -341,6 +352,8 @@ rpc.async_batch_size = 256 ## Defaults to `stateless`. rpc.port_discovery = stateless +rpc.tcp_server_ip = 0.0.0.0 + ## TCP port number for RPC server to listen on. ## ## Only takes effect when `rpc.port_discovery` = `manual`. diff --git a/priv/emqx.schema b/priv/emqx.schema index 304fc0634..e5bd24633 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -344,6 +344,23 @@ end}. hidden ]}. +%% @doc http://www.erlang.org/doc/man/kernel_app.html#net_ticktime +{mapping, "node.dist_use_interface", "kernel.inet_dist_use_interface", [ + {commented, "0.0.0.0"}, + {datatype, string} +]}. + +{translation, "kernel.inet_dist_use_interface", +fun(Conf) -> + Addr = cuttlefish:conf_get("node.dist_use_interface", Conf, "0.0.0.0"), + case inet:parse_address(Addr) of + {ok, IP} -> + IP; + _ -> + error({bad_node_dist_use_interface, Addr}) + end +end}. + %% @doc http://www.erlang.org/doc/man/kernel_app.html {mapping, "node.dist_listen_min", "kernel.inet_dist_listen_min", [ {commented, 6369}, From f900e4ea3f5bdbb6a4c7c51675d48e096b5d21f6 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:35:09 +0800 Subject: [PATCH 2/2] feat: add rpc server listener bind ip config --- etc/emqx.conf | 11 ++++++++++- priv/emqx.schema | 17 +++++++++++++++++ rebar.config | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/etc/emqx.conf b/etc/emqx.conf index 858079d15..a4892c610 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -352,7 +352,16 @@ rpc.async_batch_size = 256 ## Defaults to `stateless`. rpc.port_discovery = stateless -rpc.tcp_server_ip = 0.0.0.0 +## If the host of an Erlang node has many network interfaces, +## this parameter specifies which one for RPC server to listen on. +## For the type definition of ip_address(), see inet(3). +## +## See: http://www.erlang.org/doc/man/kernel_app.html +## +## Value: IP Address, [0-255].[0-255].[0-255].[0-255] +## Default: 0.0.0.0 +## 0.0.0.0 means all network interfaces. +#rpc.tcp_server_ip = 0.0.0.0 ## TCP port number for RPC server to listen on. ## diff --git a/priv/emqx.schema b/priv/emqx.schema index e5bd24633..b4f456f36 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -406,6 +406,23 @@ end}. {datatype, integer} ]}. +%% RPC server, network interface. +{mapping, "rpc.tcp_server_ip", "gen_rpc.socket_ip", [ + {default, "0.0.0.0"}, + {datatype, string} +]}. + +{translation, "gen_rpc.socket_ip", +fun(Conf) -> + Addr = cuttlefish:conf_get("rpc.tcp_server_ip", Conf, "0.0.0.0"), + case inet:parse_address(Addr) of + {ok, IP} -> + IP; + _ -> + error({bad_gen_rpc_socket_ip, Addr}) + end +end}. + %% Number of tcp connections when connecting to RPC server {mapping, "rpc.tcp_client_num", "gen_rpc.tcp_client_num", [ {default, 0}, diff --git a/rebar.config b/rebar.config index 2307f3620..4288bcd84 100644 --- a/rebar.config +++ b/rebar.config @@ -46,7 +46,7 @@ , {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.8.2"}}} , {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.8.5"}}} , {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.8.1.10"}}} - , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.1"}}} + , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.5.2"}}} , {cuttlefish, {git, "https://github.com/emqx/cuttlefish", {tag, "v3.3.6"}}} , {minirest, {git, "https://github.com/emqx/minirest", {tag, "0.3.7"}}} , {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.2"}}}