Siyao Meng created HDDS-17138:
---------------------------------
Summary: Add a bind-host setting for the OM RPC server so a
dual-stack OM can listen on ::
Key: HDDS-17138
URL: https://issues.apache.org/jira/browse/HDDS-17138
Project: Apache Ozone
Issue Type: Task
Reporter: Siyao Meng
OM binds its Hadoop RPC server to the host in {{ozone.om.address}} (or
{{ozone.om.address.<serviceId>.<nodeId>}} under HA). That property is also the
address OM advertises to clients and peers. Unlike SCM
({{ozone.scm.client.bind.host}}, {{ozone.scm.block.client.bind.host}},
{{ozone.scm.datanode.bind.host}}, {{ozone.scm.security.service.bind.host}}) and
the OM HTTP servers ({{ozone.om.http-bind-host}},
{{ozone.om.https-bind-host}}), there is no separate bind-host setting for the
OM RPC listener.
Code path on master: {{OzoneManager}} takes {{OmUtils.getOmAddress(conf)}} and
passes {{addr.getHostString()}} to {{RPC.Builder.setBindAddress}}
({{OzoneManager.java}} around lines 1548 and 1615).
h3. Impact
* *Dual-stack:* when the OM host name has both A and AAAA records,
{{InetAddress}} resolves it to the IPv4 address by default
({{java.net.preferIPv6Addresses=false}}). OM RPC then listens only on that IPv4
address, so IPv6 clients cannot reach it.
* The wildcard workaround is gone: setting {{ozone.om.address}} to {{::}} is
now rejected, because HDDS-16308 refuses wildcard advertised addresses.
* IPv6-only clusters are not affected, because the name resolves only to an
IPv6 address.
* OM's other listeners are not affected. The OM gRPC server
({{NettyServerBuilder.forPort}}) and the OM Ratis server (port only) already
listen on all interfaces.
This gap was not covered by HDDS-15778, which required bind-host support for
the OM listeners.
h3. Proposal
Add {{ozone.om.bind.host}} (and the {{.<serviceId>.<nodeId>}} suffixed form for
HA), defaulting to the host of {{ozone.om.address}}, so behavior is unchanged
when it is unset. Build the listener from the bind host and the RPC port,
following the SCM pattern in {{HddsServerUtil}} / {{ScmUtils}}. Keep
advertising {{ozone.om.address}}. Then {{::}} can be used as the bind host on a
dual-stack OM.
h3. Testing
* Unit test the bind address chosen for an unset, IPv4, IPv6 and {{::}} bind
host, in non-HA and HA configurations.
* Test that the advertised address stays unchanged.
* Add a dual-stack acceptance check (HDDS-15779) that reaches OM RPC over both
IPv4 and IPv6.
Parent epic: HDDS-15763.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]