From 4212dd597e271d8c8bcf96facb0370c9f12aaf1d Mon Sep 17 00:00:00 2001 From: rdhabalia Date: Mon, 11 May 2020 19:15:33 -0700 Subject: [PATCH] [pulsar-proxy] add advertised address option for proxy --- conf/proxy.conf | 4 ++++ .../org/apache/pulsar/proxy/server/ProxyConfiguration.java | 6 ++++++ .../java/org/apache/pulsar/proxy/server/ProxyService.java | 6 +++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/conf/proxy.conf b/conf/proxy.conf index 40c95b16fdb82..ae6df4974c1f0 100644 --- a/conf/proxy.conf +++ b/conf/proxy.conf @@ -46,6 +46,10 @@ zooKeeperCacheExpirySeconds=300 ### --- Server --- ### +# Hostname or IP address the service advertises to the outside world. +# If not set, the value of `InetAddress.getLocalHost().getHostname()` is used. +advertisedAddress= + # The port to use for server binary Protobuf requests servicePort=6650 diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java index 7eac236c6dac2..ba4cf03bb2251 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java @@ -131,6 +131,12 @@ public class ProxyConfiguration implements PulsarConfiguration { ) private String functionWorkerWebServiceURLTLS; + @FieldContext( + category = CATEGORY_SERVER, + doc = "Hostname or IP address the service advertises to the outside world." + + " If not set, the value of `InetAddress.getLocalHost().getHostname()` is used." + ) + private String advertisedAddress; @FieldContext( category = CATEGORY_SERVER, doc = "The port for serving binary protobuf request" diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java index 700b9b76dd268..8437a6416efa0 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java @@ -37,17 +37,16 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; -import java.util.HashSet; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; +import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.broker.authentication.AuthenticationService; import org.apache.pulsar.broker.authorization.AuthorizationService; import org.apache.pulsar.broker.cache.ConfigurationCacheService; @@ -189,7 +188,8 @@ public void start() throws Exception { String hostname; try { - hostname = InetAddress.getLocalHost().getHostName(); + hostname = StringUtils.isNotBlank(proxyConfig.getAdvertisedAddress()) ? proxyConfig.getAdvertisedAddress() + : InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException e) { throw new RuntimeException(e); }