From 0671498e0e480336838d34837dfea2502f9f8b81 Mon Sep 17 00:00:00 2001 From: Kelly Gremban Date: Thu, 3 Aug 2017 14:42:23 -0700 Subject: [PATCH] App Proxy QP week 4 --- ...plication-proxy-connectors-azure-portal.md | 52 +++++++++--------- .../new-group.png | Bin 0 -> 9560 bytes 2 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 articles/active-directory/media/active-directory-application-proxy-connectors-azure-portal/new-group.png diff --git a/articles/active-directory/active-directory-application-proxy-connectors-azure-portal.md b/articles/active-directory/active-directory-application-proxy-connectors-azure-portal.md index 0ef76243f37c2..69ec2a7183ba8 100644 --- a/articles/active-directory/active-directory-application-proxy-connectors-azure-portal.md +++ b/articles/active-directory/active-directory-application-proxy-connectors-azure-portal.md @@ -12,10 +12,10 @@ ms.workload: identity ms.tgt_pltfrm: na ms.devlang: na ms.topic: article -ms.date: 05/04/2017 +ms.date: 08/04/2017 ms.author: kgremban - -ms.custom: H1Hack27Feb2017 +ms.reviewer: harshja +ms.custom: H1Hack27Feb2017; it-pro --- # Publish applications on separate networks and locations using connector groups @@ -24,42 +24,42 @@ ms.custom: H1Hack27Feb2017 > * [Azure classic portal](active-directory-application-proxy-connectors.md) > -## Azure AD Application Proxy and connector groups +Customers utilize Azure AD's Application Proxy for more and more scenarios and applications. So we've made App Proxy even more flexible by enabling more topologies. You can create Application Proxy connector groups so that you can assign specific connectors to serve specific applications. This capability gives you more control and ways to optimize your Application Proxy deployment. -Customers utilize Azure AD's Application Proxy for more and more scenarios and applications. So we've made App Proxy even more flexible by enabling more topologies. You can create Application Proxy connector groups – a new capability to assign specific connectors to serve specific applications. This capability generates many use cases for Application Proxy that were not possible before. +Each Application Proxy connector is assigned to a connector group. All the connectors that belong to the same connector group act as a separate unit for high-availability and load balancing. All connectors belong to a connector group. If you don't create groups, then all your connectors are in a default group. You admin can create new groups and assign connectors to them in the Azure portal. -The basic concept is that each Application Proxy connector is assigned to a connector group. All the connectors that belong to the same connector group act as a separate group for high-availability and load balancing. By default, all connectors belong to a default group. The admin can create new groups and change these assignments in the Azure portal. +All applications are assigned to a connector group. If you don't create groups, then all your applications are assigned to a default group. But if you organize your connectors into groups, you can set each application to work with a specific connector group. In this case, only the connectors in that group will serve the application upon request. This feature is useful if your applications are hosted in different locations. You can create connector groups based on location, so that applications are always served by connectors that are physically close to them. -By default, all applications are assigned to a default connector group. If your admin doesn’t change anything, the system continues to behave like it did before. If you change nothing, all the applications assigned to the default connector group include all the connectors. But if you organize your connectors into groups, you can set each application to work with a specific connector group. In this case, only the connectors in that group will serve the application upon request. +>[!TIP] +>If you have a large Application Proxy deployment, don't assign any applications to the default connector group. That way, new connectors don't receive any live traffic until you assign them to an active connector group. This configuration also enables you to put connectors in an idle mode by moving them back to the default group, so that you can perform maintenance without impacting your users. +## Prerequisites +To group your connectors, you have to make sure you [installed multiple connectors](active-directory-application-proxy-enable.md). When you install a new connector, it automatically joins the **Default** connector group. ->[!NOTE] ->Because new connectors are automatically assigned to a default connector group, for large deployments we recommend that you do not have applications assigned to the default group. Therefore once installed, new connectors will not receive any live traffic. Only after you assign the connector to one of the active groups, it can start serving live traffic. This also enables you to put connectors in an idle mode in order to enable maintenance. -> +## Create connector groups +Use these steps to create as many connector groups as you want. -## Prerequisite: Create your connector groups -To group your connectors, you have to make sure you [installed multiple connectors](active-directory-application-proxy-enable.md). When you install a new connector, it automatically joins the **Default** connector group. +1. Sign in to the [Azure portal](https://portal.azure.com). +1. Select **Azure Active Directory** > **Enterprise applications** > **Application proxy**. +2. Select **New connector group**. The New Connector Group blade appears. -## Step 1: Create connector groups -You can create as many connector groups as you want. Connector group creation is accomplished in the [Azure portal](https://portal.azure.com). + ![Select new connector group](./media/active-directory-application-proxy-connectors-azure-portal/add-group.png) -1. Select **Azure Active Directory** to go to the management dashboard for your directory. From there, select **Enterprise applications** > **Application proxy**. -2. Select the **Connector Groups** button. The New Connector Group blade appears. 3. Give your new connector group a name, then use the dropdown menu to select which connectors belong in this group. -4. Select **Save** when your connector Group is complete. +4. Select **Save**. -## Step 2: Assign applications to your connector groups -The last step is to set each application to the connector group that will serve it. +## Assign applications to your connector groups +Use these steps for each application that you've published with Application Proxy. You can assign an application to a connector group when you first publish it, or you can use these steps to change the assignment whenever you want. 1. From the management dashboard for your directory, select **Enterprise applications** > **All applications** > the application you want to assign to a connector group > **Application Proxy**. -2. Under **Connector group**, use the dropdown menu to select the group you want the application to use. +2. Use the **Connector Group** dropdown menu to select the group you want the application to use. 3. Select **Save** to apply the change. ## Use cases for connector groups Connector groups are useful for various scenarios, including: -###Sites with multiple interconnected datacenters +### Sites with multiple interconnected datacenters Many organizations have a number of interconnected datacenters. In this case, you want to keep as much traffic within the datacenter as possible because cross-datacenter links are expensive and slow. You can deploy connectors in each datacenter to serve only the applications that reside within the datacenter. This approach minimizes cross-datacenter links and provides an entirely transparent experience to your users. @@ -92,7 +92,7 @@ In this case, specific connectors can be deployed per forest, and set to serve a There are two different approaches you can take with a disaster recovery (DR) site, depending on how your sites are implemented: * If your DR site is built in active-active mode where it is exactly like the main site and has the same networking and AD settings, you can create the connectors on the DR site in the same connector group as the main site. This enables Azure AD to detect failovers for you. -* If your DR site is separate from the main site, you can create a different connector group in the DR site, and have either 1) additional applications or 2) manually divert the existing application to the DR connector group as needed. +* If your DR site is separate from the main site, you can create a different connector group in the DR site, and either 1) have backup applications or 2) manually divert the existing application to the DR connector group as needed.   ### Serve multiple companies from a single tenant @@ -125,8 +125,8 @@ In the example below, the company has two datacenters, A and B, with two connect ![AzureAD No Connector Groups](./media/application-proxy-publish-apps-separate-networks/application-proxy-sample-config-3.png) ## Next steps -* [Enable Application Proxy](active-directory-application-proxy-enable.md) -* [Enable single-sign on](active-directory-application-proxy-sso-using-kcd.md) -* [Enable conditional access](active-directory-application-proxy-conditional-access.md) -* [Troubleshoot issues you're having with Application Proxy](active-directory-application-proxy-troubleshoot.md) + +* [Understand Azure AD Application Proxy connectors](application-proxy-understand-connectors.md) +* [Enable single-sign on](application-proxy-sso-overview.md) + diff --git a/articles/active-directory/media/active-directory-application-proxy-connectors-azure-portal/new-group.png b/articles/active-directory/media/active-directory-application-proxy-connectors-azure-portal/new-group.png new file mode 100644 index 0000000000000000000000000000000000000000..6314fec4e60d5f793b0db0abcc50075938d22bdb GIT binary patch literal 9560 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

WRgdgb~A%urD`vovrDIfjPi*L=jEr~HA!?t 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 TCb>%BvH)30MTrt|Bj5i39YM)z literal 0 HcmV?d00001