redpanda-data / redpanda

Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!
https://redpanda.com
9.65k stars 589 forks source link

Admin API redirects assume all nodes use same port & listen on RPC address #2865

Open jcsp opened 3 years ago

jcsp commented 3 years ago

This is a follow-on from changes made in https://github.com/vectorizedio/redpanda/pull/2806 (specifically at https://github.com/vectorizedio/redpanda/pull/2806/files#diff-73d28bb5261bfea6d41375856d8a2f5c2d3e9ca85cf813e275539ddfdf71f0a7R252)

Because nodes don't currently publish their advertised admin API endpoints to the controller, we make a guess that: A) All nodes use the same port for the admin API B) the rpc address they advertise will be the same as the address of their admin API endpoint

Neither of these are necessarily true, but highly likely in real life systems. Usually we wouldn't fudge something like this but in this case it wasn't a regression, because prior to redirects clients would just get a 400 if they hit the wrong node -- now they get a redirect which could be to a bad address if their system is configured in an unusual way.

JIRA Link: CORE-776

jcsp commented 2 years ago

Update: the redirection was improved in https://github.com/redpanda-data/redpanda/pull/3571 so that it no longer assumes the listen address is the RPC address. The port assumption is still in there.

The full solution to this may be introducing an advertized_admin_api or similar configuration + storing it in members_table like we do for other listeners, or remove the need for redirects by making all the controller frontends implement RPCs so that they're callable on every node.