You can override DNS by setting storm.local.hostname in the config yaml on each node. Use the public IP/hostname and that should fix your problem.
This is a big issue to how storm ui generates the URLs to access storm logviewer. I need to have some control to how storm ui generates the links, such as using routes or custom name to represent the supervisors.
In my use case
: 1) secure VPC, only accessible through 22 from admin VPC, 2) storm ui available through ELB which is secured to only use public DNS, 3) internal DNS different that public DNS.
As I understand, storm ui fetches the supervisor names from zookeeper, and supervisors register to zookeeper using some name it generates (hostname? reverse DNS lookup?)
The problem is that the DNS names are not usable, even if I park a reverse-proxy, I cannot route to URLs that ONLY make sense to internal DNS.