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]

Reply via email to