I think I've resolved the issue on my cluster with the attached patch.  I'm
still testing it, but, so far so good.  I just wanted to get this out there
for now in case others are having similar issues.

Hopefully the diff doesn't get stripped.  Essentially, I tacked oneway and
twoway SSL port configuration to the Builder class in AgentWebApp

Then, I used getPortToRequest() to pull a port from the pool of predefined
ports when creating the App (in SliderAppMaster).


Tim

On Thu, Mar 3, 2016 at 3:32 PM, Tim I <t...@timisrael.com> wrote:

> Hi all,
>
> Our use case is to run apps on slider in an environment where all no
> registered ports (or ranges of ports) need to be firewalled off.
>
> I'm getting some issues when my appmaster runs on a different node than
> the agent.  It appears to be due to the following ports (specifically the
> oneway port):
>
> }; internal endpoints: {{
>   "api" : "classpath:org.apache.slider.agents.secure",
>   "addressType" : "uri",
>   "protocolType" : "REST",
>   "addresses" : [ {
>     "uri" : "https://node03.domain.com:54673/ws/v1/slider/agents";
>   } ]
> }; {
>   "api" : "classpath:org.apache.slider.agents.oneway",
>   "addressType" : "uri",
>   "protocolType" : "REST",
>   "addresses" : [ {
>     "uri" : "https://node03.domain.com:42728/ws/v1/slider/agents";
>   } ]
>
>
> The error from the agent container is:
>
>> INFO 2016-03-03 20:06:37,358 NetUtil.py:38 - Connecting to the following
>> url https://node03.domain.com:42728/ws/v1/slider/agents/
>> INFO 2016-03-03 20:07:40,359 NetUtil.py:57 - Failed to connect to
>> https://node03.domain.com:42728/ws/v1/slider/agents/ due to [Errno 110]
>> Connection timed out
>> INFO 2016-03-03 20:07:40,359 NetUtil.py:76 - Server at
>> https://node03.domain.com:42728/ws/v1/slider/agents/ is not reachable,
>> sleeping for 10 seconds...
>>
>
>
> A few of questions:
> 1.  Is it possible to set this port?
> 2.  Is it possible to set this port per application?
> 3.  Is it possible to set this to a range of ports (like the
> ALLOCATED_PORT)?
>
> Thanks,
>
> Tim
>
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index 019ec71..af37502 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -1127,7 +1127,7 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
    * @throws IOException
    */
   private void startAgentWebApp(MapOperations appInformation,
-      Configuration serviceConf, WebAppApiImpl webAppApi) throws IOException {
+      Configuration serviceConf, WebAppApiImpl webAppApi) throws IOException, 
SliderException {
     URL[] urls = ((URLClassLoader) AgentWebApp.class.getClassLoader() 
).getURLs();
     StringBuilder sb = new StringBuilder("AM classpath:");
     for (URL url : urls) {
@@ -1144,7 +1144,9 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
         webAppApi,
                      RestPaths.AGENT_WS_CONTEXT)
         .withComponentConfig(appMasterConfig)
-        .start();
+        .withPort(getPortToRequest())
+        .withSecuredPort(getPortToRequest())
+            .start();
     agentOpsUrl =
         "https://"; + appMasterHostname + ":" + agentWebApp.getSecuredPort();
     agentStatusUrl =
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentWebApp.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentWebApp.java
index f9ea06d..200fbc2 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentWebApp.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentWebApp.java
@@ -56,6 +56,8 @@ public class AgentWebApp implements Closeable {
     final String name;
     final String wsName;
     final WebAppApi application;
+    int port;
+    int securedPort;
     MapOperations configsMap;
 
     public Builder(String name, String wsName, WebAppApi application) {
@@ -69,6 +71,16 @@ public class AgentWebApp implements Closeable {
       return this;
     }
 
+    public Builder withPort (int port) {
+      this.port = port;
+      return this;
+    }
+
+    public Builder withSecuredPort (int securedPort) {
+      this.securedPort = securedPort;
+      return this;
+    }
+
     public AgentWebApp start() throws IOException {
       if (configsMap == null) {
         throw new IllegalStateException("No SSL Configuration Available");
@@ -80,11 +92,11 @@ public class AgentWebApp implements Closeable {
               configsMap.getOptionInt("agent.threadpool.size.max", 25)));
       agentServer.setStopAtShutdown(true);
 
-      SslSelectChannelConnector ssl1WayConnector = createSSLConnector(false);
+      SslSelectChannelConnector ssl1WayConnector = createSSLConnector(false, 
port);
       SslSelectChannelConnector ssl2WayConnector =
           createSSLConnector(Boolean.valueOf(
               configsMap.getOption(AgentKeys.KEY_AGENT_TWO_WAY_SSL_ENABLED,
-                                   "false")));
+                                   "false")), securedPort);
       agentServer.setConnectors(new Connector[]{ssl1WayConnector,
           ssl2WayConnector});
 
@@ -119,7 +131,7 @@ public class AgentWebApp implements Closeable {
 
     }
 
-    private SslSelectChannelConnector createSSLConnector(boolean 
needClientAuth) {
+    private SslSelectChannelConnector createSSLConnector(boolean 
needClientAuth, int port) {
       SslSelectChannelConnector sslConnector = new
           SslSelectChannelConnector();
 
@@ -135,6 +147,7 @@ public class AgentWebApp implements Closeable {
       sslConnector.setTruststoreType("PKCS12");
       sslConnector.setNeedClientAuth(needClientAuth);
 
+      sslConnector.setPort(port);
       sslConnector.setAcceptors(2);
       return sslConnector;
     }

Reply via email to