Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
I servizi Cloud (versione classica) sono ora obsoleti per tutti i clienti a partire dal 1° settembre 2024. Tutte le distribuzioni in esecuzione esistenti verranno fermate e spente da Microsoft e i dati andranno persi permanentemente a partire da ottobre 2024. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager (supporto esteso) di Servizi cloud di Azure.
Un servizio cloud viene creato da tre componenti, la definizione del servizio (con estensione csdef), la configurazione del servizio (.cscfg) e un pacchetto di servizio (.cspkg). I file ServiceDefinition.csdef e ServiceConfig.cscfg sono entrambi basati su XML e descrivono la struttura del servizio cloud e la relativa configurazione; collettivamente chiamato modello. ServicePackage.cspkg è un file ZIP generato da ServiceDefinition.csdef e, tra le altre cose, contiene tutte le dipendenze binarie necessarie. Azure crea un servizio cloud sia da ServicePackage.cspkg che da ServiceConfig.cscfg.
Quando il servizio cloud è in esecuzione in Azure, è possibile riconfigurarlo tramite il file ServiceConfig.cscfg , ma non è possibile modificare la definizione.
Quali altre informazioni sono necessarie?
- Voglio saperne di più sui file ServiceDefinition.csdef e ServiceConfig.cscfg .
- Lo so già, datemi alcuni esempi su ciò che posso configurare.
- Si vuole creare ServicePackage.cspkg.
- Sto usando Visual Studio e voglio...
ServiceDefinition.csdef
Il file ServiceDefinition.csdef specifica le impostazioni usate da Azure per configurare un servizio cloud. Lo schema di definizione del servizio di Azure (file con estensione csdef) fornisce il formato consentito per un file di definizione del servizio. L'esempio seguente mostra le impostazioni che possono essere definite per i ruoli Web e di lavoro:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1" vmsize="Medium">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="HttpIn" endpointName="HttpIn" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InternalEndpoint name="InternalHttpIn" protocol="http" />
</Endpoints>
<Certificates>
<Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" />
</Certificates>
<Imports>
<Import moduleName="Connect" />
<Import moduleName="Diagnostics" />
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<LocalResources>
<LocalStorage name="localStoreOne" sizeInMB="10" />
<LocalStorage name="localStoreTwo" sizeInMB="10" cleanOnRoleRecycle="false" />
</LocalResources>
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" />
</Startup>
</WebRole>
<WorkerRole name="WorkerRole1">
<ConfigurationSettings>
<Setting name="DiagnosticsConnectionString" />
</ConfigurationSettings>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10000" />
<InternalEndpoint name="Endpoint2" protocol="tcp" />
</Endpoints>
</WorkerRole>
</ServiceDefinition>
È possibile fare riferimento allo schema di definizione del servizio per una migliore comprensione dello schema XML usato qui, tuttavia, ecco una breve spiegazione di alcuni degli elementi:
Siti
Contiene le definizioni per i siti Web o per le applicazioni Web ospitate in IIS7.
Punti di Accesso
Contiene le definizioni per gli endpoint usati per contattare il servizio cloud.
Punti finali interni
Contiene le definizioni per gli endpoint usati dalle istanze del ruolo per comunicare tra loro.
ConfigurationSettings
Contiene le definizioni delle impostazioni per le funzionalità di un ruolo specifico.
Certificati
Contiene le definizioni dei certificati necessari per un ruolo. L'esempio di codice precedente mostra un certificato usato per la configurazione di Azure Connect.
LocalResources
Contiene le definizioni per le risorse di archiviazione locale. Una risorsa di archiviazione locale è una directory riservata nel file system della macchina virtuale in cui è in esecuzione un'istanza di un ruolo.
Importazioni
Contiene le definizioni per i moduli importati. L'esempio di codice precedente mostra i moduli per la connessione Desktop remoto e Azure Connect.
Start-up
Contiene le attività eseguite all'avvio del ruolo. Le attività vengono definite in un file eseguibile o con estensione cmd.
ServiceConfiguration.cscfg
La configurazione delle impostazioni per il servizio cloud è determinata dai valori nel file ServiceConfiguration.cscfg . Si specifica il numero di istanze che si vuole distribuire per ogni ruolo in questo file. I valori per le impostazioni di configurazione definite nel file di definizione del servizio vengono aggiunti al file di configurazione del servizio. Vengono aggiunte al file anche le identificazioni personali per eventuali certificati di gestione associati al servizio cloud. Lo schema di configurazione del servizio di Azure (file con estensione cscfg) fornisce il formato consentito per un file di configurazione del servizio.
Il file di configurazione del servizio non è in pacchetto con l’applicazione. L'upload di configurazione viene caricato su Azure come file separato ed è utilizzato per configurare il servizio cloud. È possibile caricare un nuovo file di configurazione del servizio senza ridistribuire il servizio cloud. I valori di configurazione per il servizio cloud possono essere modificati mentre il servizio cloud è in esecuzione. L'esempio seguente mostra le impostazioni di configurazione che possono essere definite per i ruoli Web e di lavoro:
<?xml version="1.0"?>
<ServiceConfiguration serviceName="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="WebRole1">
<Instances count="2" />
<ConfigurationSettings>
<Setting name="SettingName" value="SettingValue" />
</ConfigurationSettings>
<Certificates>
<Certificate name="CertificateName" thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
<Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption"
thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
</Certificates>
</Role>
</ServiceConfiguration>
È possibile fare riferimento allo schema di configurazione del servizio per comprendere meglio lo schema XML usato qui, ma ecco una rapida spiegazione degli elementi:
Istanze
Configura il numero di istanze in esecuzione per il ruolo. Per impedire che il servizio cloud diventi potenzialmente non disponibile durante gli aggiornamenti, è consigliabile distribuire più di un'istanza di ruoli esposti al Web. Distribuendo più di un'istanza, si rispettano le linee guida del contratto di servizio di calcolo di Azure, che garantisce 99.95% connettività esterna per i ruoli con connessione Internet quando due o più istanze del ruolo vengono distribuite per un servizio.
ConfigurationSettings
Configura le impostazioni per le istanze attualmente in esecuzione di un ruolo. Il nome degli elementi <Setting>
deve corrispondere alle definizioni delle impostazioni nel file di definizione del servizio.
Certificati
Configura i certificati usati dal servizio. L'esempio di codice precedente mostra come definire il certificato per il modulo RemoteAccess. Il valore dell'attributo thumbprint deve essere impostato sull'impronta digitale del certificato da usare.
Annotazioni
L'impronta digitale del certificato può essere aggiunta al file di configurazione utilizzando un editor di testo. In alternativa, il valore può essere aggiunto nella scheda Certificati della pagina Proprietà del ruolo in Visual Studio.
Definizione delle porte per le istanze del ruolo
Azure consente solo un punto di ingresso a un ruolo Web. Ciò significa che tutto il traffico viene gestito tramite un solo indirizzo IP. È possibile configurare la condivisione di una porta per i siti Web configurando l'intestazione host in modo da indirizzare la richiesta al percorso corretto. Si possono anche configurare le applicazioni in modo che siano in ascolto di porte note sull'indirizzo IP.
L'esempio seguente illustra la configurazione di un ruolo Web con un sito Web e un'applicazione Web. Il sito Web è configurato come percorso di immissione predefinito sulla porta 80. Le applicazioni Web sono configurate per ricevere richieste da un’intestazione host alternativa chiamata “mail.mysite.cloudapp.net”.
<WebRole>
<ConfigurationSettings>
<Setting name="DiagnosticsConnectionString" />
</ConfigurationSettings>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InputEndpoint name="Https" protocol="https" port="443" certificate="SSL"/>
<InputEndpoint name="NetTcp" protocol="tcp" port="808" certificate="SSL"/>
</Endpoints>
<LocalResources>
<LocalStorage name="Sites" cleanOnRoleRecycle="true" sizeInMB="100" />
</LocalResources>
<Site name="Mysite" packageDir="Sites\Mysite">
<Bindings>
<Binding name="http" endpointName="HttpIn" />
<Binding name="https" endpointName="Https" />
<Binding name="tcp" endpointName="NetTcp" />
</Bindings>
</Site>
<Site name="MailSite" packageDir="MailSite">
<Bindings>
<Binding name="mail" endpointName="HttpIn" hostHeader="mail.mysite.cloudapp.net" />
</Bindings>
<VirtualDirectory name="artifacts" />
<VirtualApplication name="storageproxy">
<VirtualDirectory name="packages" packageDir="Sites\storageProxy\packages"/>
</VirtualApplication>
</Site>
</WebRole>
Modifica della configurazione di un ruolo
È possibile aggiornare la configurazione del servizio cloud durante l’esecuzione in Azure senza portare offline il servizio. Per modificare le informazioni di configurazione, è possibile caricare un nuovo file di configurazione o modificare il file di configurazione sul posto e applicarlo al servizio in esecuzione. Alla configurazione di un servizio possono essere apportate le seguenti modifiche:
-
Modifica dei valori delle impostazioni di configurazione
Quando un'impostazione di configurazione viene modificata, è possibile applicare la modifica a un'istanza del ruolo mentre l'istanza è online oppure è possibile riciclare normalmente l'istanza e applicare la modifica mentre si trova offline. -
Modifica della topologia del servizio delle istanze del ruolo
Le modifiche alla topologia non influiscono sulle istanze in esecuzione, ad eccezione della posizione da cui viene rimossa un'istanza. Tutte le istanze rimanenti in genere non devono essere riciclate; tuttavia, è possibile scegliere di riciclare le istanze del ruolo in risposta a una modifica della topologia. -
Modifica dell'impronta digitale del certificato
È possibile aggiornare un certificato solo quando un'istanza del ruolo è offline. Se viene aggiunto, eliminato o modificato un certificato mentre un’istanza del ruolo è online, Azure porta normalmente l’istanza offline per aggiornare il certificato. Azure lo riporta online al termine della modifica.
Gestione delle modifiche di configurazione con gli eventi di runtime del servizio
La libreria di runtime di Azure include lo spazio dei nomi Microsoft.WindowsAzure.ServiceRuntime , che fornisce classi per interagire con l'ambiente di Azure da un ruolo. La classe RoleEnvironment definisce gli eventi seguenti generati prima e dopo una modifica della configurazione:
-
Modifica dell'evento
Si verifica prima che la modifica di configurazione venga applicata a un'istanza specificata di un ruolo, offrendo la possibilità di interrompere il funzionamento delle istanze del ruolo, se necessario. -
Evento Cambiato
Si verifica dopo che la modifica della configurazione è stata applicata a un'istanza specificata di un ruolo.
Annotazioni
Poiché le modifiche ai certificati richiedono sempre che le istanze di un ruolo siano portate offline, non generano eventi RoleEnvironment.Changing o RoleEnvironment.Changed.
ServicePackage.cspkg
Annotazioni
La dimensione massima del pacchetto che può essere distribuita è 600 MB
Per distribuire un'applicazione come servizio cloud in Azure, è necessario prima creare un pacchetto dell'applicazione nel formato appropriato. È possibile usare lo strumento da riga di comando CSPack (installato con Azure SDK) per creare il file del pacchetto come alternativa a Visual Studio.
CSPack usa il contenuto del file di definizione del servizio e del file di configurazione del servizio per definire il contenuto del pacchetto.
CSPack genera un file di pacchetto dell'applicazione (con estensione cspkg) che è possibile caricare in Azure usando il portale di Azure. Per impostazione predefinita, il pacchetto è denominato [ServiceDefinitionFileName].cspkg
, ma è possibile specificare un nome diverso usando l'opzione /out
CSPack.
CSPack si trova all'indirizzo
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Annotazioni
CSPack.exe (su Windows) è disponibile eseguendo il collegamento al prompt dei comandi di Microsoft Azure installato con l'SDK.
Eseguire il programma CSPack.exe da solo per visualizzare la documentazione su tutti i comandi e le opzioni possibili.
Suggerimento
Eseguire il servizio cloud in locale nell'emulatore di calcolo di Microsoft Azure, usare l'opzione /copyonly . Questa opzione consente di copiare i file binari per l'applicazione in una struttura di directory da cui possono essere eseguiti nell'emulatore di calcolo.
Comando di esempio per creare un pacchetto di un servizio cloud
L'esempio seguente crea un pacchetto dell'applicazione che contiene le informazioni per un ruolo Web. Nel comando vengono specificati il file di definizione del servizio da utilizzare, la directory in cui trovare i file binari e il nome del file del pacchetto.
cspack [DirectoryName]\[ServiceDefinition]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/out:[OutputFileName]
Se l'applicazione contiene sia un ruolo Web che un ruolo di lavoro, viene usato il comando seguente:
cspack [DirectoryName]\[ServiceDefinition]
/out:[OutputFileName]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]
Dove le variabili vengono definite come segue:
Variabile | Valore |
---|---|
[DirectoryName] | Sottodirectory della directory radice del progetto contenente il file csdef del progetto Azure. |
[Definizione del Servizio] | Nome del file di definizione del servizio. Per impostazione predefinita, il file è denominato ServiceDefinition.csdef. |
[OutputFileName] | Nome del file del pacchetto generato. In genere, questa variabile viene impostata sul nome dell'applicazione. Se non viene specificato alcun nome file, il pacchetto dell'applicazione viene creato con il nome [ApplicationName].cspkg. |
[RoleName] | Nome del ruolo definito nel file di definizione del servizio. |
[RoleBinariesDirectory] | Percorso dei file binari del ruolo. |
[VirtualPath] | Le directory fisiche per ogni percorso virtuale definito nella sezione "Sites" della definizione del servizio. |
[PhysicalPath] | Le directory fisiche dei contenuti per ogni percorso virtuale definito nel nodo del sito della definizione del servizio. |
[RoleAssemblyName] | Nome del file binario del ruolo. |
Passaggi successivi
Sto creando un pacchetto di servizi cloud e voglio...
- Configurare il desktop remoto per un'istanza del servizio cloud
- Distribuire un progetto di servizio cloud
Sto usando Visual Studio e voglio...