Przeglądaj źródła

YARN-2713. "RM Home" link in NM should point to one of the RMs in an HA setup. (kasha)

Karthik Kambatla 10 lat temu
rodzic
commit
683897fd02

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -57,6 +57,9 @@ Release 2.7.0 - UNRELEASED
     YARN-2254. TestRMWebServicesAppsModification should run against both 
     CS and FS. (Zhihai Xu via kasha)
 
+    YARN-2713. "RM Home" link in NM should point to one of the RMs in an 
+    HA setup. (kasha)
+
 Release 2.6.0 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 17 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/WebAppUtils.java

@@ -143,14 +143,29 @@ public class WebAppUtils {
   public static String getResolvedRMWebAppURLWithoutScheme(Configuration conf,
       Policy httpPolicy) {
     InetSocketAddress address = null;
+    String rmId = null;
+    if (HAUtil.isHAEnabled(conf)) {
+      // If HA enabled, pick one of the RM-IDs and rely on redirect to go to
+      // the Active RM
+      rmId = (String) HAUtil.getRMHAIds(conf).toArray()[0];
+    }
+
     if (httpPolicy == Policy.HTTPS_ONLY) {
       address =
-          conf.getSocketAddr(YarnConfiguration.RM_WEBAPP_HTTPS_ADDRESS,
+          conf.getSocketAddr(
+              rmId == null
+                  ? YarnConfiguration.RM_WEBAPP_HTTPS_ADDRESS
+                  : HAUtil.addSuffix(
+                  YarnConfiguration.RM_WEBAPP_HTTPS_ADDRESS, rmId),
               YarnConfiguration.DEFAULT_RM_WEBAPP_HTTPS_ADDRESS,
               YarnConfiguration.DEFAULT_RM_WEBAPP_HTTPS_PORT);
     } else {
       address =
-          conf.getSocketAddr(YarnConfiguration.RM_WEBAPP_ADDRESS,
+          conf.getSocketAddr(
+              rmId == null
+                  ? YarnConfiguration.RM_WEBAPP_ADDRESS
+                  : HAUtil.addSuffix(
+                  YarnConfiguration.RM_WEBAPP_ADDRESS, rmId),
               YarnConfiguration.DEFAULT_RM_WEBAPP_ADDRESS,
               YarnConfiguration.DEFAULT_RM_WEBAPP_PORT);      
     }