Browse Source

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

(cherry picked from commit 683897fd028dcc2185383f73b52d15245a69e0cb)
Karthik Kambatla 10 năm trước cách đây
mục cha
commit
9af3cfc7eb

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

@@ -30,6 +30,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);      
     }