Condividi tramite


Configurazione condivisa con IIS 7

Introduzione

Internet cambia i modi in cui le aziende gestiscono le loro attività quotidiane e come competono nel marketplace. Con l'avvento delle nuove tecnologie Web e un aumento del numero di clienti che accedono alle risorse disponibili tramite il Web, è necessario aumentare la scalabilità, la disponibilità, l'affidabilità e la gestibilità delle applicazioni. Le applicazioni devono basarsi su sistemi che offrono la possibilità di offrire tempi di attività elevati, una maggiore velocità effettiva delle richieste, un aumento delle transazioni utente simultanee e un migliore valore di ritorno sugli investimenti, ad esempio una migliore qualità del servizio, rispetto ai sistemi concorrenti.

Web farm - cluster server - sono diventati uno standard per offrire applicazioni altamente scalabili, disponibili e gestibili distribuendo il carico. In particolare, questi attributi dell'applicazione sono i motivi principali delle web farm e del bilanciamento del carico. Usando una Web farm, un'organizzazione può offrire un modo scalabile per aumentare la capacità della base utente che accede all'applicazione e alle relative risorse simultaneamente.

Il cluster del server offre una maggiore disponibilità grazie alla distribuzione del carico di più server. Il cluster consente anche di aumentare il numero di clienti in qualsiasi momento specifico. Infine, il cluster offre un'esperienza di gestione migliorata gestendo il provisioning e l'amministrazione dell'architettura della Web farm con facilità e senza faticare le risorse operative.

Panoramica

Questo articolo è incentrato sulla funzionalità di configurazione globale centralizzata condivisa. Questa funzionalità consente di supportare web farm omogenee in cui i server condividono la stessa configurazione in un gruppo di server. Usando una condivisione UNC, le modifiche apportate a un file di configurazione master centrale verranno propagate tra server diversi senza strumenti aggiuntivi o supporto a livello di codice.

La prima parte di questo articolo descrive come usare l'interfaccia utente di amministrazione di IIS 7 e versioni successive per abilitare e usare la configurazione condivisa. La seconda parte descrive come abilitare e usare la configurazione condivisa dalla riga di comando.

Non obiettivi: cosa questo articolo non copre

Più aspetti contribuiscono a un ambiente web farm di successo, tra cui supporto corretto, gestibilità, accessibilità, scalabilità e così via.

La configurazione condivisa è incentrata solo sull'aspetto di gestione della configurazione di una Web farm e gestisce la configurazione tra server. Sono disponibili strumenti e altre funzionalità che consentono di gestire più server, copiare contenuto, distribuire moduli, sincronizzare i file binari dell'applicazione, configurare componenti di terze parti e così via. Questi strumenti, funzionalità e aspetti non rientrano nell'ambito di questo articolo.

Questo articolo illustra solo come gestire la configurazione usando un file centrale tra server.

Si noti quindi che sharedconfiguration consente a un server di accedere a un file di configurazione in una condivisione UNC back-end come se fosse la configurazione locale. Di conseguenza, quando si aggiorna la configurazione usando un server Web front-end, gli aggiornamenti vengono eseguiti a tutti gli altri server.

È importante prendere in considerazione altre situazioni, ad esempio l'installazione di un modulo di terze parti o l'aggiunta di impostazioni di configurazione e includere proprietà che un solo server può comprendere e ha i file binari e lo schema disponibili per funzionare correttamente. In caso contrario, questo tipo di utilizzo può interrompere gli altri server.

Per evitare questo problema in farm omogenee, è necessario disabilitare la configurazione condivisa nel cluster, aggiornare il file applicationHost locale in modo che rispecchi il file remoto, distribuire e aggiornare i moduli e la configurazione in un singolo server e quindi riabilitare la configurazione condivisa in tale server. È quindi possibile distribuire e aggiornare i file binari e i moduli nel resto dei server prima di abilitare di nuovo la configurazione condivisa.

Ambienti di dominio e non di dominio

Alcuni amministratori distribuiscono cluster di server Web in un ambiente di dominio, mentre altri distribuiscono in un gruppo di lavoro (non di dominio). Questo articolo illustra entrambi gli scenari e evidenzia le differenze e le avvertenze. È consigliabile configurare IIS in un cluster in un dominio, con la guida e la sicurezza fornite da Active Directory tramite un controller di dominio.

Prerequisiti

È necessario completare i passaggi seguenti nell'ordine:

  1. Installare IIS nel server, che verrà definito Server Web in questo articolo.
  2. Assicurarsi di accedere a un secondo server, a cui verrà fatto riferimento come file server in questo articolo. Il file server conterrà la condivisione per la configurazione e il contenuto di base, a cui è possibile accedere tramite UNC.
  3. Ogni passaggio di questo articolo presuppone che il passaggio precedente sia stato completato. Eseguire tutti i passaggi in ordine.
  4. Per alcuni passaggi, è possibile eseguire un passaggio equivalente usando l'interfaccia utente. Eseguire un solo tipo di passaggio, a meno che non sia specificato diversamente.

Configurazione centralizzata

L'interfaccia utente di amministrazione iis include il supporto per la configurazione del reindirizzamento e l'esportazione dei file di configurazione e delle chiavi di crittografia necessarie in un percorso specificato.

Per esportare i file e configurare il reindirizzamento della configurazione tramite l'interfaccia utente

  1. Apri Gestione IIS.
  2. Nella visualizzazione albero selezionare la connessione server per cui si vuole configurare il reindirizzamento della configurazione.
  3. Fare doppio clic su Configurazione condivisa.
    Screenshot dell'icona Di configurazione condivisa di I Manager con l'opzione Configurazione condivisa selezionata.
  4. Nel riquadro Azioni fare clic su Esporta configurazione per esportare i file di configurazione necessari dal server locale in un'altra posizione, ad esempio una condivisione UNC.
    Screenshot del riquadro Azioni in Configurazione condivisa con il punto punto punto di esportazione evidenziato.
  5. Nella finestra di dialogo Esporta configurazione immettere il percorso in cui si desidera esportare i file. Immettere una password per proteggere le chiavi di crittografia esportate. Fare clic su OK per esportare i file di configurazione e le chiavi di crittografia protette da password.
    Screenshot della finestra di dialogo Esporta configurazione con i campi percorso di configurazione e password delle chiavi di crittografia visualizzati.
  6. Selezionare la casella di controllo Abilita configurazione condivisa per abilitare il reindirizzamento della configurazione.
    Screenshot della finestra di dialogo Configurazione condivisa con l'opzione Abilita configurazione condivisa evidenziata.
  7. Specificare il percorso in cui si trovano le chiavi di configurazione e crittografia e specificare le credenziali da usare per accedere a tale percorso. Fare clic su Connessione As... e immettere le credenziali.
    Screenshot della finestra di dialogo Configurazione condivisa con le credenziali immesse per Nome utente e Password.
  8. Fare clic su Applica per salvare le impostazioni. Nella finestra di dialogo Configurazione condivisa immettere la password specificata per proteggere le chiavi di crittografia.
    Screenshot della finestra di dialogo Configurazione condivisa che mostra il campo per immettere la password della chiave di crittografia.
  9. Fare clic su OK per completare la configurazione del reindirizzamento.

I passaggi precedenti descrivono come esportare la configurazione e attivare la configurazione centralizzata. Tuttavia, è necessario esportare la configurazione una sola volta. Eseguire i passaggi da 6 a 9 in ogni server successivo che userà la configurazione centralizzata.

Note sull'uso dell'interfaccia utente

Quando si configura il reindirizzamento della configurazione, è previsto che i file esportati siano stati esportati tramite l'interfaccia utente. Ciò è dovuto al fatto che l'interfaccia utente esporta e importa elementi come le chiavi di crittografia protette da password usando il proprio formato personalizzato.

Ad esempio, se i file administration.config e applicationHost.config sono stati copiati manualmente in una condivisione e quindi esportati manualmente le chiavi di crittografia, non sarà possibile usare l'interfaccia utente per configurare il reindirizzamento della configurazione in modo che punti a tali file. Ciò è dovuto al fatto che le chiavi di crittografia esportate non sarebbero nel formato richiesto dall'interfaccia utente.

Prompt dei comandi

Nel resto di questo articolo, è necessario usare un prompt dei comandi per eseguire determinati comandi. È consigliabile usare un prompt dei comandi con diritti utente elevati, poiché alcuni comandi non funzioneranno se si esegue un normale prompt dei comandi.

Per aprire un prompt dei comandi con diritti utente elevati

  1. Fare clic su Inizia.
  2. Fare clic su Tutti i programmi.
  3. Fare clic su Accessori.
  4. Fare clic con il pulsante destro del mouse sul prompt dei comandi e scegliere Esegui come amministratore.
  5. Seguire le istruzioni in tutte le finestre di dialogo visualizzate.

Backup del file applicationHost.config corrente

Quando si provano nuove funzionalità o si modificano più impostazioni di configurazione, è consigliabile eseguire il backup del file applicationHost.config corrente.

Per eseguire il backup del file applicationHost.config

  1. Apri un prompt dei comandi.

  2. Passare alla directory IIS, che si trova in per %WINDIR%\System32\InetSrv impostazione predefinita. I file di configurazione vengono archiviati nella directory InetSrv\Config. Usare lo strumento AppCmd per creare un oggetto di backup ed eseguire il backup del file applicationHost.config eseguendo il comando seguente:

    cd /d %windir%\system32\inetsrv
    appcmd add backup centralConfigBackup
    

    Nota

    Lo strumento AppCmd si trova nella directory InetSrv. È necessario accedere allo strumento da questa directory, a meno che il percorso dello strumento non venga aggiunto alle variabili di ambiente del sistema.

  3. Assicurarsi che l'oggetto di backup, che include il file applicationHost.config e il file di metabase legacy per SMTP e altre impostazioni del server non Web, sia presente eseguendo il comando seguente:

    appcmd list backup
    

Per sostituire il file di configurazione corrente con il file di backup

  1. Apri un prompt dei comandi.

  2. Passare alla directory IIS, che si trova nella directory InetSrv per impostazione predefinita. Ripristinare l'oggetto file di backup AppCmd eseguendo il comando seguente:

    cd /d %windir%\system32\inetsrv\
    appcmd restore backup centralConfigBackup
    

Creazione di un utente per accedere alla condivisione UNC per la configurazione

In un ambiente di dominio, un amministratore deve fornire o creare un account nel dominio da usare con Active Directory. Questo account deve essere configurato con i diritti utente corretti per accedere alla condivisione UNC.

In un ambiente non di dominio, un amministratore deve creare in entrambi i server un utente locale con diritti utente per accedere al contenuto. Il nome utente e la password devono essere gli stessi tra i server per funzionare in questa configurazione. I passaggi seguenti consentono di creare un utente per leggere la condivisione in cui risiede la configurazione condivisa.

Per creare un utente in grado di leggere la condivisione in cui risiede la configurazione condivisa (non di dominio)

  1. Apri un prompt dei comandi.

  2. Nel server Web (server front-end in cui è installato IIS), creare un utente denominato ConfigUser1 con la password ConfigPass1 eseguendo il comando seguente:

    net user ConfigUser1 ConfigPass1 /add
    
  3. Nel file server (server back-end in cui risiederà la configurazione centrale), creare un utente denominato ConfigUser1 con la password ConfigPass1 eseguendo il comando seguente:

net user ConfigUser1 ConfigPass1 /add

Creazione delle condivisioni UNC per la configurazione centrale e il contenuto

La condivisione UNC per la configurazione ospita il file applicationHost.config per tutti i server che desiderano raccogliere i dati di configurazione da questa posizione centralizzata.

Per creare la condivisione UNC

  1. Nel file server aprire un prompt dei comandi.

  2. Passare alla radice dell'unità. Eseguire il comando seguente per creare una directory per la configurazione e condividere questa directory, assicurandosi di concedere agli utenti i diritti utente per leggere e scrivere nella directory:

    md %SystemDrive%\centralconfig
    net share centralconfig$=%SystemDrive%\centralconfig /grant:Users,Change
    

    Nota

    Questo comando concede automaticamente i diritti utente al gruppo di utenti a questa condivisione. All'utente creato per lo scenario non di dominio vengono concessi automaticamente diritti di modifica, che possono essere ulteriormente limitati, se necessario. Per lo scenario di dominio, l'utente deve avere diritti utente impostati in modo esplicito per accedere alla condivisione o essere aggiunti al gruppo di utenti nel sistema.

  3. Scenario non di dominio: per aumentare la sicurezza della condivisione, è possibile sostituire la parte Users,Change dell'opzione /grant con i parametri ConfigUser1,Change. Solo l'utente specificato avrà accesso alla condivisione.

  4. Scenario di dominio: per aumentare la sicurezza della condivisione, è possibile sostituire la parte Utenti, Modifica dell'opzione /grant con il dominio\utente, Modificare i parametri. Solo l'utente specificato avrà accesso remoto alla condivisione.

    Nota

    I diritti utente per una condivisione sono un'unione tra diritti utente del file system remoto e locale. Per poter leggere correttamente la condivisione di configurazione, è necessario impostare i diritti utente appropriati sulla directory per consentire a un account di dominio di leggere correttamente la condivisione di configurazione.

Concessione dei diritti utente agli account per le condivisioni UNC che ospitano la configurazione centrale e il contenuto

È necessario assicurarsi che l'account usato per accedere alla configurazione disponga dei diritti utente appropriati. Questo account viene usato da IIS per accedere alla condivisione UNC nello stesso modo in cui accede al contenuto quando viene eseguito il mapping di una directory virtuale a una condivisione UNC. I diritti utente di lettura per questo account sono utili solo per l'accesso alla condivisione. Dopo questo punto, ogni volta che IIS legge il file di configurazione, viene ripristinata l'identità che il chiamante ha: l'API, lo strumento di amministrazione usato o l'utente connesso in quel momento.

Nota

L'account ConfigUser1, o l'account di dominio equivalente usato per leggere la configurazione, non corrisponde all'account usato per scrivere la configurazione. Questi account non devono disporre dei diritti utente di scrittura per la condivisione o il file di configurazione.

Per concedere diritti utente agli account per la condivisione UNC (dominio)

  1. Se l'account di dominio fa parte del gruppo di utenti locali e agli utenti è stato concesso l'accesso al momento della creazione della condivisione, è possibile ignorare i passaggi successivi per la configurazione del dominio. Tuttavia, se l'account di dominio per accedere alla condivisione file locale non fa parte di alcun gruppo di utenti locali, è necessario eseguire il comando per concedere i diritti utente.
  2. Nel file server aprire un prompt dei comandi.
  3. Fornire diritti utente all'account di dominio per leggere la directory in cui è archiviata la configurazione eseguendo il comando seguente:
icacls %SystemDrive%\centralconfig\ /grant domain\user:R

Per aggiungere l'utente UNC (non dominio e dominio)

Per gli scenari di dominio e non di dominio, il nome utente deve includere la configurazione del processo batch di accesso. Questa non è un'impostazione predefinita in Windows Server® 2008; è necessario aggiungerlo manualmente al server Web.

  1. Fare clic su Inizia. Fare clic su strumenti Amministrazione istrativi e selezionare Criteri di sicurezza locali.
  2. In Criteri locali selezionare Assegnazioni diritti utente.
  3. Fare doppio clic su Accedi come processo batch e aggiungere l'utente UNC creato.

Reindirizzamento della configurazione

Introduzione

Dopo aver completato i passaggi precedenti, il server Web è funzionale e il server Web front-end deve gestire il sito Web predefinito usando l'indirizzo di back del ciclo localhost.

È ora possibile spostare la configurazione in una posizione centrale. In questo modo è possibile dichiarare un file come file master e salvarlo in una condivisione UNC per la configurazione di più server. La modifica di questo file una sola volta eseguirà il provisioning e aggiornerà tutte le configurazioni del server contemporaneamente.

Per archiviare la configurazione in una condivisione UNC

  1. Copiare i file applicationHost.config e administration.config dalla directory nel %windir%\system32\inetsrv\config server Web front-end per la condivisione nel file server back-end. Se l'account utente attualmente connesso ha accesso in scrittura alla condivisione back-end, è possibile eliminare il file nella directory. In caso contrario, è necessario autenticare l'account utente nel back-end per completare questo passaggio.

  2. Accedere al file XML redirection.config esistente nella directory di configurazione del server front-end:

    • Usare Esplora risorse per passare a %windir%\system32\inetsrv\config.
    • Aprire il file redirection.config. Questo file e il relativo contenuto vengono creati al momento della configurazione del server Web. Gli strumenti e le API possono accedere a questo file per determinare se questa funzionalità è abilitata o meno.
  3. Aprire il file redirection.config. Impostare la configurazione seguente con il nome del server, il nome utente e la password corretti per l'ambiente.

    <configuration> 
        <configSections> 
            <section name="configurationRedirection" /> 
        </configSections> 
        <configurationRedirection enabled="true" path="\\machinename\centralconfig$\" userName="ConfigUser1 or domain\user" password="ConfigPass1 or domainPassword" /> 
    </configuration>
    
  4. Salvare il file redirection.config. È possibile accedere di nuovo ai siti, ma la configurazione è ora archiviata in una condivisione UNC.

Test della configurazione

Con la configurazione a cui si fa riferimento dal back-end, esistono due scenari chiave per cui questa funzionalità è stata progettata. È possibile aggiornare la configurazione nei server Web front-end in due modi:

  1. È possibile modificare il file applicationHost.config direttamente nella condivisione file. Al termine, le notifiche di modifica vengono eseguite e i server Web prelevano le modifiche nel file.
  2. È possibile aggiungere un secondo file applicationHost.config nella condivisione file back-end e modificare il file redirection.config del server Web in modo che punti alla nuova versione del file. Ciò è utile per scopi di rollback o distribuzioni a fasi.

Riepilogo

Questo articolo ha introdotto la nuova funzionalità di configurazione centralizzata. Questa funzionalità consente agli amministratori che dispongono di cluster omogenei in un ambiente web farm di configurare e distribuire una configurazione in tutti i server in modo semplice.

Una volta configurata la funzionalità, se viene apportata una modifica nel file nella condivisione UNC o un server viene reindirizzato a un'altra posizione, le modifiche vengono prelevate immediatamente dal server Web. Solo le modifiche globali che interessano più siti e applicazioni causeranno il riciclo, ma se le modifiche vengono apportate in un ambito localizzato, il resto dei siti e delle applicazioni non verrà riavviato.

Appendice 1: Accesso al file Redirection.config a livello di codice per leggere i valori

Questo passaggio fornisce un esempio di come accedere al file redirection.config a livello di codice sfruttando la nuova API AHADMIN COM. Usare l'API COM AHADMIN per implementare questa API dal codice nativo o dallo script e dal codice gestito.

Per leggere i valori a livello di codice

  1. Creare un file di testo e salvarlo con l'estensione .js. Lo script seguente fornisce un esempio di come leggere l'attributo abilitato, il nome del server, il nome utente e la password per l'ambiente:

    try
    {
      var config = WScript.CreateObject( "Microsoft.ApplicationHost.AdminManager" );
      var section = config.GetAdminSection( "configurationRedirection", "MACHINE/REDIRECTION" );
    
      WScript.Echo( "Current redirection:" );
      WScript.Echo( "enabled = " + section.Properties.Item( "enabled" ).Value );
      WScript.Echo( "path = " + section.Properties.Item( "path" ).Value );
      WScript.Echo( "user = " + section.Properties.Item( "userName" ).Value );
      WScript.Echo( "pass = " + section.Properties.Item( "password" ).Value );
    }
    catch(e)
    {
      WScript.Echo(e.number);
      WScript.Echo(e.description);
    }
    
  2. Salvare il file redirection.js. È ora possibile eseguire questo file da un prompt dei comandi a causa di Windows Script Host (WSH).

Appendice 2: Accesso al file redirection.config a livello di codice per scrivere i valori

Questo passaggio fornisce un esempio di come accedere al file redirection.config a livello di codice sfruttando la nuova API AHADMIN COM. Usare questa API dal codice nativo o dallo script e dal codice gestito dal relativo oggetto COM.

Per scrivere i valori a livello di codice

  1. Creare un file di testo e salvarlo con l'estensione .js. Lo script seguente fornisce un esempio di come scrivere l'attributo abilitato, il nome del server, il nome utente e la password per l'ambiente:

    try
    {
        var config = WScript.CreateObject( "Microsoft.ApplicationHost.WritableAdminManager" );
      config.CommitPath = "MACHINE/REDIRECTION";
        var section = config.GetAdminSection( "configurationRedirection","MACHINE/REDIRECTION" );
      section.Properties.Item( "enabled" ).Value = true;
      section.Properties.Item( "path" ).Value = "\\\\somemachine\\sharefile://folder/";
      section.Properties.Item( "userName" ).Value = "testuser";
      section.Properties.Item( "password" ).Value = "testuser";
      config.CommitChanges();
    }
    catch(e)
    {
      WScript.Echo(e.number);
      WScript.Echo(e.description);
    }
    
  2. Salvare il file redirection.js.

  3. È ora possibile eseguire questo file da un prompt dei comandi a causa di Windows Script Host (WSH).

Appendice 3: Gestione delle proprietà crittografate specifiche del computer

Per impostazione predefinita, IIS include due provider principali per la protezione delle proprietà. Questi provider si trovano nella sezione di configurazione configProtectedData del <file applicationHost.config e sono definiti nell'elemento <providers>.>

AesProvider è specifico per la gestione della crittografia e della decrittografia per le proprietà presenti nella sezione system.webServer.

IISWASOnlyRsaProvider è specifico per la gestione della crittografia e della decrittografia per le proprietà presenti nella sezione system.applicationHost.

Queste chiavi si trovano nei contenitori di chiavi iisConfigurationKey e iisWasKey e sono specifiche del computer. In uno scenario di Web farm, se è necessaria la crittografia, una chiave da un computer, in genere quella che ha creato il file applicationHost.config, viene esportata e inserita negli altri computer in modo che le proprietà sicure possano essere decrittografate e usate dal server Web.

Passaggi

  1. Aprire un prompt dei comandi. Passare alla directory Framework, che si trova in per %windir%\Microsoft.NET\Framework\v2.0.50727\ impostazione predefinita.

    Nota

    Per riferimento, le chiavi del computer per il sistema si trovano in %ALLU edizione Standard RSPROFILE%\Microsoft\Crypto\RSA\MachineKeys\

  2. Usare lo strumento aspnet_regiis per esportare la chiave. Il comando per trasferire la chiave di configurazione è indicato di seguito. L'opzione px identifica che si vuole esportare una coppia di chiavi RSA. L'opzione pri identifica anche che si desidera includere sia la chiave privata che quella pubblica.

    Questa identificazione del commutatore è necessaria per eseguire sia la crittografia che la decrittografia; in caso contrario, è possibile crittografare solo i dati con la chiave esportata. Il parametro dopo - px è il nome del contenitore di chiavi da esportare. In questo caso, si tratta del contenitore di chiavi "iisConfigurationKey". L'altro contenitore di chiavi usato da IIS è il contenitore di chiavi "iisWasKey".

    aspnet_regiis -px "iisConfigurationKey" "D:\iisConfigurationKey.xml" -pri
    
  3. Al termine dell'esportazione, copiare il file XML nell'altro computer del cluster per prepararsi all'importazione.

  4. Passare alla directory Framework e usare lo strumento aspnet_regiis per importare la chiave dal file XML. Il comando per finalizzare il trasferimento per la chiave è indicato di seguito.

    Il parametro dopo - pi è il nome del contenitore di chiavi da importare. In questo caso, si tratta del contenitore di chiavi "iisConfigurationKey". L'altro contenitore di chiavi usato da IIS è il contenitore di chiavi "iisWasKey".

    aspnet_regiis -pi "iisConfigurationKey" "D:\iisConfigurationKey.xml"