Proxy inverso in Azure Service FabricReverse proxy in Azure Service Fabric

Il proxy inverso integrato in Azure Service Fabric consente ai microservizi in esecuzione in un cluster di Service Fabric di rilevare e comunicare con altri servizi che hanno endpoint HTTP.Reverse proxy built into Azure Service Fabric helps microservices running in a Service Fabric cluster discover and communicate with other services that have http endpoints.

Modello di comunicazione di microserviziMicroservices communication model

I microservizi in Service Fabric vengono eseguiti in un subset di nodi nel cluster e possono eseguire la migrazione tra i nodi per vari motivi.Microservices in Service Fabric run on a subset of nodes in the cluster and can migrate between the nodes for various reasons. Gli endpoint per microservizi possono quindi cambiare in modo dinamico.As a result, the endpoints for microservices can change dynamically. Per rilevare e comunicare con altri servizi nel cluster, i microservizi devono eseguire questa procedura:To discover and communicate with other services in the cluster, microservice must go through the following steps:

  1. Risolvere la posizione del servizio tramite il servizio Naming.Resolve the service location through the naming service.
  2. Connettersi al servizio.Connect to the service.
  3. Eseguire il wrapping dei passaggi precedenti in un ciclo che implementa la risoluzione del servizio e provare di nuovo i criteri da applicare in caso di errori di connessioneWrap the preceding steps in a loop that implements service resolution and retry policies to apply on connection failures

Per altre informazioni, vedere Connettersi e comunicare con i servizi.For more information, see Connect and communicate with services.

Comunicare tramite il proxy inversoCommunicating by using the reverse proxy

Il proxy inverso è un servizio che viene eseguito in ogni nodo e gestisce risoluzione degli endpoint, tentativi automatici e altri errori di connessione per conto dei servizi client.Reverse proxy is a service that runs on every node and handles endpoint resolution, automatic retry, and other connection failures on behalf of client services. Il proxy inverso può essere configurato per applicare diversi criteri mentre gestisce le richieste dei servizi client.Reverse proxy can be configured to apply various policies as it handles requests from client services. L'uso di un proxy inverso consente al servizio client di usare qualsiasi libreria di comunicazione HTTP lato client e non richiede una risoluzione e una logica di ripetizione dei tentativi particolari nel servizio.Using a reverse proxy allows the client service to use any client-side HTTP communication libraries and does not require special resolution and retry logic in the service.

Il proxy inverso espone uno o più endpoint nel nodo locale che i servizi client possono usare per l'invio di richieste ad altri servizi.Reverse proxy exposes one or more endpoints on local node for client services to use for sending requests to other services.

Comunicazione interna

Piattaforme supportateSupported Platforms

Il proxy inverso in Service Fabric supporta attualmente le piattaforme seguentiReverse proxy in Service Fabric currently supports the following platforms

  • Cluster Windows: Windows 8 e versioni successive o Windows Server 2012 e versioni successiveWindows Cluster: Windows 8 and later or Windows Server 2012 and later
  • Cluster Linux: il proxy inverso non è attualmente disponibile per i cluster LinuxLinux Cluster: Reverse Proxy is not currently available for Linux clusters

Raggiungere i microservizi dall'esterno del clusterReaching microservices from outside the cluster

Il modello di comunicazione esterna predefinito per i microservizi è un modello di consenso esplicito nei casi in cui non è possibile accedere direttamente a ogni servizio dai client esterni.The default external communication model for microservices is an opt-in model where each service cannot be accessed directly from external clients. Il servizio Azure Load Balancer è un limite di rete tra microservizi e client esterni che esegue la conversione degli indirizzi di rete e inoltra le richieste esterne agli endpoint IP:port interni.Azure Load Balancer, which is a network boundary between microservices and external clients, performs network address translation and forwards external requests to internal IP:port endpoints. Per rendere un endpoint del microservizio direttamente accessibile ai client esterni, è prima di tutto necessario configurare il servizio Load Balancer per l'inoltro del traffico a ogni porta usata dal servizio nel cluster.To make a microservice's endpoint directly accessible to external clients, you must first configure Load Balancer to forward traffic to each port that the service uses in the cluster. La maggior parte dei microservizi, in particolare i microservizi con stato, non è inoltre presente in tutti i nodi del cluster.Furthermore, most microservices, especially stateful microservices, don't live on all nodes of the cluster. I microservizi possono spostarsi tra i nodi in caso di failover.The microservices can move between nodes on failover. In questi casi, il servizio Load Balancer non può determinare in modo efficace la posizione del nodo di destinazione delle repliche a cui deve inoltrare il traffico.In such cases, Load Balancer cannot effectively determine the location of the target node of the replicas to which it should forward traffic.

Raggiungere i microservizi tramite il proxy inverso dall'esterno del clusterReaching microservices via the reverse proxy from outside the cluster

Invece di configurare la porta di un singolo servizio in Load Balancer, è possibile configurare solo la porta del proxy inverso in Load Balancer.Instead of configuring the port of an individual service in Load Balancer, you can configure just the port of the reverse proxy in Load Balancer. Questa configurazione consente ai client all'esterno del cluster di raggiungere i servizi all'interno tramite il proxy inverso senza configurazioni aggiuntive.This configuration lets clients outside the cluster reach services inside the cluster by using the reverse proxy without additional configuration.

Comunicazione esterna

Avviso

Quando si configura la porta del proxy inverso nel servizio Load Balancer, tutti i microservizi nel cluster che espone un endpoint HTTP sono indirizzabili dall'esterno del cluster.When you configure the reverse proxy's port in Load Balancer, all microservices in the cluster that expose an HTTP endpoint are addressable from outside the cluster.

Formato URI di indirizzamento dei servizi tramite il proxy inversoURI format for addressing services by using the reverse proxy

Il proxy inverso usa un formato URI (Uniform Resource Identifier) specifico per identificare la partizione del servizio a cui deve essere inoltrata la richiesta in ingresso:The reverse proxy uses a specific uniform resource identifier (URI) format to identify the service partition to which the incoming request should be forwarded:

http(s)://<Cluster FQDN | internal IP>:Port/<ServiceInstanceName>/<Suffix path>?PartitionKey=<key>&PartitionKind=<partitionkind>&ListenerName=<listenerName>&TargetReplicaSelector=<targetReplicaSelector>&Timeout=<timeout_in_seconds>
  • http(s): il proxy inverso può essere configurato per accettare il traffico HTTP o HTTPS.http(s): The reverse proxy can be configured to accept HTTP or HTTPS traffic. Per l'inoltro di HTTPS, fare riferimento a Connect to a secure service with the reverse proxy (Connettersi a un servizio protetto con il proxy inverso) dopo aver configurato il proxy inverso per l'ascolto su HTTPS.For HTTPS forwarding, refer to Connect to a secure service with the reverse proxy once you have reverse proxy setup to listen on HTTPS.
  • Nome di dominio completo del cluster | IP interno: Per i client esterni è possibile configurare il proxy inverso in modo che sia raggiungibile tramite il dominio del cluster, ad esempio mycluster.eastus.cloudapp.azure.com. Per impostazione predefinita, il proxy inverso è in esecuzione in ogni nodo.Cluster fully qualified domain name (FQDN) | internal IP: For external clients, you can configure the reverse proxy so that it is reachable through the cluster domain, such as mycluster.eastus.cloudapp.azure.com. By default, the reverse proxy runs on every node. Per il traffico interno, il proxy inverso può essere raggiunto sugli host locali o all'indirizzo IP di qualsiasi nodo interno, ad esempio, 10.0.0.1.For internal traffic, the reverse proxy can be reached on localhost or on any internal node IP, such as 10.0.0.1.
  • Porta: la porta che è stata specificata per il proxy inverso, ad esempio 19081.Port: This is the port, such as 19081, that has been specified for the reverse proxy.
  • ServiceInstanceName: nome completo dell'istanza del servizio distribuito che si sta provando a raggiungere senza lo schema "fabric:/".ServiceInstanceName: This is the fully-qualified name of the deployed service instance that you are trying to reach without the "fabric:/" scheme. Ad esempio, per raggiungere il servizio fabric:/myapp/myservice/, si usa myapp/myservice.For example, to reach the fabric:/myapp/myservice/ service, you would use myapp/myservice.

    Il nome dell'istanza del servizio fa distinzione tra maiuscole e minuscole.The service instance name is case-sensitive. L'uso di maiuscole/minuscole per il nome dell'istanza del servizio nell'URL fa sì che le richieste abbiano esito negativo con errore 404 (Non trovato).Using a different casing for the service instance name in the URL causes the requests to fail with 404 (Not Found).

  • Suffix path: percorso effettivo dell'URL, ad esempio myapi/values/add/3, per il servizio a cui ci si vuole connettere.Suffix path: This is the actual URL path, such as myapi/values/add/3, for the service that you want to connect to.
  • PartitionKey: per un servizio partizionato, questa è la chiave di partizione calcolata della partizione che si vuole raggiungere.PartitionKey: For a partitioned service, this is the computed partition key of the partition that you want to reach. Si noti che questo non è il GUID dell'ID di partizione.Note that this is not the partition ID GUID. Questo parametro non è obbligatorio per i servizi che usano lo schema di partizione singleton.This parameter is not required for services that use the singleton partition scheme.
  • PartitionKind: lo schema di partizione del servizio.PartitionKind: This is the service partition scheme. Può essere "Int64Range" o "Named".This can be 'Int64Range' or 'Named'. Questo parametro non è obbligatorio per i servizi che usano lo schema di partizione singleton.This parameter is not required for services that use the singleton partition scheme.
  • ListenerName Gli endpoint del servizio hanno la forma {"Endpoints":{"Listener1":"Endpoint1","Listener2":"Endpoint2" ...}}.ListenerName The endpoints from the service are of the form {"Endpoints":{"Listener1":"Endpoint1","Listener2":"Endpoint2" ...}}. Quando il servizio espone più endpoint, questa forma indica gli endpoint a cui deve essere inoltrata la richiesta del client.When the service exposes multiple endpoints, this identifies the endpoint that the client request should be forwarded to. Può essere omessa se il servizio ha un solo listener.This can be omitted if the service has only one listener.
  • TargetReplicaSelector Specifica la modalità di selezione della replica o dell'istanza di destinazione.TargetReplicaSelector This specifies how the target replica or instance should be selected.
    • Quando il servizio di destinazione è con stato, TargetReplicaSelector può essere uno dei valori seguenti: "PrimaryReplica", "RandomSecondaryReplica" o "RandomReplica".When the target service is stateful, the TargetReplicaSelector can be one of the following: 'PrimaryReplica', 'RandomSecondaryReplica', or 'RandomReplica'. Il valore predefinito quando non viene specificato questo parametro è "PrimaryReplica".When this parameter is not specified, the default is 'PrimaryReplica'.
    • Quando il servizio di destinazione è senza stato, il proxy inverso sceglie un'istanza casuale della partizione del servizio a cui inoltrare la richiesta.When the target service is stateless, reverse proxy picks a random instance of the service partition to forward the request to.
  • Timeout: specifica il timeout per la richiesta HTTP creata dal proxy inverso al servizio per conto della richiesta del client.Timeout: This specifies the timeout for the HTTP request created by the reverse proxy to the service on behalf of the client request. Il valore predefinito è 60 secondi.The default value is 60 seconds. Questo è un parametro facoltativo.This is an optional parameter.

Esempio di utilizzoExample usage

Si prenda come esempio il servizio fabric:/MyApp/MyService che apre un listener HTTP nell'URL seguente:As an example, let's take the fabric:/MyApp/MyService service that opens an HTTP listener on the following URL:

http://10.0.0.5:10592/3f0d39ad-924b-4233-b4a7-02617c6308a6-130834621071472715/

Di seguito sono indicate le risorse per il servizio:Following are the resources for the service:

  • /index.html
  • /api/users/<userId>

Se il servizio usa lo schema di partizionamento singleton, i parametri della stringa di query PartitionKey e PartitionKind non sono obbligatori e il servizio può essere raggiunto tramite gateway nei modi seguenti:If the service uses the singleton partitioning scheme, the PartitionKey and PartitionKind query string parameters are not required, and the service can be reached by using the gateway as:

  • Esternamente: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyServiceExternally: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyService
  • Internamente: http://localhost:19081/MyApp/MyServiceInternally: http://localhost:19081/MyApp/MyService

Se il servizio usa lo schema di partizionamento Uniform Int64, è necessario usare i parametri della stringa di query PartitionKey e PartitionKind per raggiungere una partizione del servizio:If the service uses the Uniform Int64 partitioning scheme, the PartitionKey and PartitionKind query string parameters must be used to reach a partition of the service:

  • Esternamente: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyService?PartitionKey=3&PartitionKind=Int64RangeExternally: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyService?PartitionKey=3&PartitionKind=Int64Range
  • Internamente: http://localhost:19081/MyApp/MyService?PartitionKey=3&PartitionKind=Int64RangeInternally: http://localhost:19081/MyApp/MyService?PartitionKey=3&PartitionKind=Int64Range

Per raggiungere le risorse esposte dal servizio, è sufficiente inserire il percorso della risorsa dopo il nome del servizio nell'URL:To reach the resources that the service exposes, simply place the resource path after the service name in the URL:

  • Esternamente: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyService/index.html?PartitionKey=3&PartitionKind=Int64RangeExternally: http://mycluster.eastus.cloudapp.azure.com:19081/MyApp/MyService/index.html?PartitionKey=3&PartitionKind=Int64Range
  • Internamente: http://localhost:19081/MyApp/MyService/api/users/6?PartitionKey=3&PartitionKind=Int64RangeInternally: http://localhost:19081/MyApp/MyService/api/users/6?PartitionKey=3&PartitionKind=Int64Range

Il gateway inoltrerà quindi queste richieste all'URL del servizio:The gateway will then forward these requests to the service's URL:

  • http://10.0.0.5:10592/3f0d39ad-924b-4233-b4a7-02617c6308a6-130834621071472715/index.html
  • http://10.0.0.5:10592/3f0d39ad-924b-4233-b4a7-02617c6308a6-130834621071472715/api/users/6

Gestione speciale per servizi di condivisione portaSpecial handling for port-sharing services

Il proxy inverso di Service Fabric prova a risolvere di nuovo un indirizzo del servizio e ripetere la richiesta quando non è possibile raggiungere un servizio.The Service Fabric reverse proxy attempts to resolve a service address again and retry the request when a service cannot be reached. Quando un servizio non può essere raggiunto, la replica o l'istanza del servizio si è in genere spostata in un nodo diverso come parte del ciclo di vita normale.Generally, when a service cannot be reached, the service instance or replica has moved to a different node as part of its normal lifecycle. In questo caso, il proxy inverso potrebbe ricevere un errore di connessione di rete che indica che un endpoint non è più aperto sull'indirizzo risolto in origine.When this happens, the reverse proxy might receive a network connection error indicating that an endpoint is no longer open on the originally resolved address.

Tuttavia, le repliche o le istanze del servizio possono condividere un processo host e una porta quando ospitate da un server Web basato su http.sys, tra cui:However, replicas or service instances can share a host process and might also share a port when hosted by an http.sys-based web server, including:

In questa circostanza è probabile che il server Web sia disponibile nel processo host e che risponda alle richieste, ma la replica o l'istanza del servizio risolto non è più disponibile nell'host.In this situation, it is likely that the web server is available in the host process and responding to requests, but the resolved service instance or replica is no longer available on the host. In questo caso il gateway riceve una risposta HTTP 404 dal server Web.In this case, the gateway will receive an HTTP 404 response from the web server. Una risposta HTTP 404 può pertanto avere due significati distinti:Thus, an HTTP 404 response can have two distinct meanings:

  • Caso n. 1: l'indirizzo del servizio è corretto, ma la risorsa richiesta dall'utente non esiste.Case #1: The service address is correct, but the resource that the user requested does not exist.
  • Caso n. 2: l'indirizzo del servizio non è corretto ed è possibile che la risorsa richiesta dall'utente esista su un nodo diverso.Case #2: The service address is incorrect, and the resource that the user requested might exist on a different node.

Nel primo caso si tratta di una normale situazione HTTP 404, che viene considerata come un errore dell'utente.The first case is a normal HTTP 404, which is considered a user error. Nel secondo caso, tuttavia, l'utente ha richiesto una risorsa che non esiste.However, in the second case, the user has requested a resource that does exist. Il proxy inverso non è riuscito a individuarla perché il servizio stesso è stato spostato.The reverse proxy was unable to locate it because the service itself has moved. Il proxy inverso deve risolvere di nuovo l'indirizzo e ripetere la richiesta.The reverse proxy needs to resolve the address again and retry the request.

Il proxy inverso necessita quindi di un modo per distinguere tra questi due casi.The reverse proxy thus needs a way to distinguish between these two cases. Per eseguire questa distinzione, è necessario un suggerimento dal server.To make that distinction, a hint from the server is required.

  • Per impostazione predefinita, il proxy inverso presuppone la sussistenza del caso n. 2 e prova a risolvere di nuovo l'indirizzo e inviare nuovamente la richiesta.By default, the reverse proxy assumes case #2 and attempts to resolve and issue the request again.
  • Per indicare il caso n.1 al proxy inverso, il servizio deve restituire l'intestazione della risposta HTTP seguente:To indicate case #1 to the reverse proxy, the service should return the following HTTP response header:

    X-ServiceFabric : ResourceNotFound

L'intestazione della risposta HTTP indica una situazione HTTP 404 normale, in cui la risorsa richiesta non esiste e il proxy inverso non prova a risolvere di nuovo l'indirizzo del servizio.This HTTP response header indicates a normal HTTP 404 situation in which the requested resource does not exist, and the reverse proxy will not attempt to resolve the service address again.

Installazione e configurazioneSetup and configuration

Abilitare il proxy inverso tramite il portale di AzureEnable reverse proxy via Azure portal

Il portale di Azure fornisce un'opzione per abilitare il proxy inverso durante la creazione di un nuovo cluster di Service Fabric.Azure portal provides an option to enable Reverse proxy while creating a new Service Fabric cluster. In Crea cluster di Service Fabric, Passaggio 2: Configurazione cluster, Configurazione del tipo di nodo, selezionare la casella di controllo "Abilita proxy inverso".Under Create Service Fabric cluster, Step 2: Cluster Configuration, Node type configuration, select the checkbox to "Enable reverse proxy". Per la configurazione di un proxy inverso sicuro, è possibile specificare un certificato SSL nel Passaggio 3: Sicurezza, Configurare le impostazioni di sicurezza del cluster, selezionare la casella di controllo "Includi un certificato SSL per il proxy inverso" e immettere i dettagli del certificato.For configuring secure reverse proxy, SSL certificate can be specified in Step 3: Security, Configure cluster security settings, select the checkbox to "Include a SSL certificate for reverse proxy" and enter the certificate details.

Abilitare il proxy inverso tramite modelli di Azure Resource ManagerEnable reverse proxy via Azure Resource Manager templates

È possibile usare il modello di Azure Resource Manager per abilitare il proxy inverso in Service Fabric per il cluster.You can use the Azure Resource Manager template to enable the reverse proxy in Service Fabric for the cluster.

Per esempi del modello di Azure Resource Manager per la configurazione del proxy inverso sicuro con un certificato e la gestione del rollover dei certificati, vedere Configure HTTPS Reverse Proxy in a secure cluster (Configurare il proxy inverso HTTPS in un cluster sicuro).Refer to Configure HTTPS Reverse Proxy in a secure cluster for Azure Resource Manager template samples to configure secure reverse proxy with a certificate and handling certificate rollover.

Ottenere prima di tutto il modello per il cluster da distribuire.First, you get the template for the cluster that you want to deploy. È possibile usare i modelli di esempio o creare un modello di Resource Manager.You can either use the sample templates or create a custom Resource Manager template. È quindi possibile abilitare il proxy inverso seguendo questa procedura:Then, you can enable the reverse proxy by using the following steps:

  1. Definire una porta per il proxy inverso nella sezione dei parametri del modello.Define a port for the reverse proxy in the Parameters section of the template.

    "SFReverseProxyPort": {
        "type": "int",
        "defaultValue": 19081,
        "metadata": {
            "description": "Endpoint for Service Fabric Reverse proxy"
        }
    },
    
  2. Specificare la porta per ogni oggetto nodetype nella sezione Cluster Tipo di risorsa.Specify the port for each of the nodetype objects in the Cluster Resource type section.

    La porta è identificata dal nome del parametro reverseProxyEndpointPort.The port is identified by the parameter name, reverseProxyEndpointPort.

    {
        "apiVersion": "2016-09-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
       "nodeTypes": [
          {
           ...
           "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]",
           ...
          },
        ...
        ],
        ...
    }
    
  3. Per fare riferimento al proxy inverso dall'esterno del cluster di Azure, configurare le regole di Azure Load Balancer per la porta specificata nel passaggio 1.To address the reverse proxy from outside the Azure cluster, set up the Azure Load Balancer rules for the port that you specified in step 1.

    {
        "apiVersion": "[variables('lbApiVersion')]",
        "type": "Microsoft.Network/loadBalancers",
        ...
        ...
        "loadBalancingRules": [
            ...
            {
                "name": "LBSFReverseProxyRule",
                "properties": {
                    "backendAddressPool": {
                        "id": "[variables('lbPoolID0')]"
                    },
                    "backendPort": "[parameters('SFReverseProxyPort')]",
                    "enableFloatingIP": "false",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig0')]"
                    },
                    "frontendPort": "[parameters('SFReverseProxyPort')]",
                    "idleTimeoutInMinutes": "5",
                    "probe": {
                        "id": "[concat(variables('lbID0'),'/probes/SFReverseProxyProbe')]"
                    },
                    "protocol": "tcp"
                }
            }
        ],
        "probes": [
            ...
            {
                "name": "SFReverseProxyProbe",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port":     "[parameters('SFReverseProxyPort')]",
                    "protocol": "tcp"
                }
            }  
        ]
    }
    
  4. Per configurare i certificati SSL sulla porta per il proxy inverso, aggiungere il certificato alla proprietà reverseProxyCertificate nella sezione Cluster Tipo di risorsa.To configure SSL certificates on the port for the reverse proxy, add the certificate to the reverseProxyCertificate property in the Cluster Resource type section.

    {
        "apiVersion": "2016-09-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
        ],
        "properties": {
            ...
            "reverseProxyCertificate": {
                "thumbprint": "[parameters('sfReverseProxyCertificateThumbprint')]",
                "x509StoreName": "[parameters('sfReverseProxyCertificateStoreName')]"
            },
            ...
            "clusterState": "Default",
        }
    }
    

Supporto di un certificato di proxy inverso diverso dal certificato di clusterSupporting a reverse proxy certificate that's different from the cluster certificate

Se il certificato di proxy inverso è diverso dal certificato che protegge il cluster, il certificato specificato in precedenza deve essere installato nella macchina virtuale e aggiunto all'elenco di controllo di accesso, in modo che Service Fabric possa accedervi.If the reverse proxy certificate is different from the certificate that secures the cluster, then the previously specified certificate should be installed on the virtual machine and added to the access control list (ACL) so that Service Fabric can access it. Questa operazione può essere eseguita tramite la sezione di virtualMachineScaleSets Tipo di risorsa.This can be done in the virtualMachineScaleSets Resource type section. Per l'installazione, aggiungere il certificato a osProfile.For installation, add that certificate to the osProfile. La sezione del modello relativa all'estensione può aggiornare il certificato nell'elenco di controllo di accesso.The extension section of the template can update the certificate in the ACL.

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ....
    "osProfile": {
        "adminPassword": "[parameters('adminPassword')]",
        "adminUsername": "[parameters('adminUsername')]",
        "computernamePrefix": "[parameters('vmNodeType0Name')]",
        "secrets": [
          {
            "sourceVault": {
              "id": "[parameters('sfReverseProxySourceVaultValue')]"
            },
            "vaultCertificates": [
              {
                "certificateStore": "[parameters('sfReverseProxyCertificateStoreValue')]",
                "certificateUrl": "[parameters('sfReverseProxyCertificateUrlValue')]"
              }
            ]
          }
        ]
      }
 ....
 "extensions": [
        {
            "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]",
            "properties": {
                    "type": "ServiceFabricNode",
                    "autoUpgradeMinorVersion": false,
                    ...
                    "publisher": "Microsoft.Azure.ServiceFabric",
                    "settings": {
                      "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
                      "nodeTypeRef": "[parameters('vmNodeType0Name')]",
                      "dataPath": "D:\\\\SvcFab",
                      "durabilityLevel": "Bronze",
                      "testExtension": true,
                      "reverseProxyCertificate": {
                        "thumbprint": "[parameters('sfReverseProxyCertificateThumbprint')]",
                        "x509StoreName": "[parameters('sfReverseProxyCertificateStoreValue')]"
                      },
                },
                "typeHandlerVersion": "1.0"
            }
        },
    ]
  }

Nota

Quando si usano certificati diversi dal certificato del cluster per abilitare il proxy inverso in un cluster esistente, installare il certificato di proxy inverso e aggiornare l'elenco di controllo di accesso sul cluster prima di abilitare il proxy inverso.When you use certificates that are different from the cluster certificate to enable the reverse proxy on an existing cluster, install the reverse proxy certificate and update the ACL on the cluster before you enable the reverse proxy. Completare la distribuzione del modello di Azure Resource Manager usando le impostazioni indicate in precedenza prima di avviare una distribuzione per abilitare il proxy inverso nei passaggi 1-4.Complete the Azure Resource Manager template deployment by using the settings mentioned previously before you start a deployment to enable the reverse proxy in steps 1-4.

Passaggi successiviNext steps