Condividi tramite


Service Fabric e contenitori

Introduzione

Azure Service Fabric è una piattaforma di sistemi distribuiti che semplifica la creazione di pacchetti, la distribuzione e la gestione di microservizi e contenitori scalabili e affidabili.

Service Fabric è l'agente di orchestrazione contenitori di Microsoft per la distribuzione di microservizi in un cluster di computer. Service Fabric trae vantaggio dalle lezioni apprese durante i suoi anni di esecuzione dei servizi microsoft su larga scala.

I microservizi possono essere sviluppati in molti modi dall'uso dei modelli di programmazione di Service Fabric, ASP.NET Core, alla distribuzione di qualsiasi codice preferito. In alternativa, se si vuole solo distribuire e gestire i contenitori, Service Fabric è anche una scelta ottimale.

Per impostazione predefinita, Service Fabric distribuisce e attiva questi servizi come processi. I processi offrono l'attivazione più rapida e l'utilizzo più elevato delle risorse in un cluster. Service Fabric può anche distribuire i servizi nelle immagini container. È anche possibile combinare i servizi nei processi e i servizi nei contenitori nella stessa applicazione.

Per iniziare subito a usare e provare i contenitori in Service Fabric, provare una guida introduttiva, un'esercitazione o un esempio:

Guida introduttiva: Distribuire un'applicazione contenitore Linux in Service Fabric
Guida introduttiva: Distribuire un'applicazione contenitore Windows in Service Fabric
Containerizzare un'app .NET esistente
Esempi di contenitori di Service Fabric

Che cosa sono i contenitori

I contenitori risolvono il problema dell'esecuzione di applicazioni in modo affidabile in ambienti di elaborazione diversi fornendo un ambiente non modificabile per l'esecuzione dell'applicazione. I contenitori eseguono il wrapping di un'applicazione e di tutte le relative dipendenze, ad esempio librerie e file di configurazione, nella propria "casella" isolata che contiene tutti gli elementi necessari per eseguire il software all'interno del contenitore. Ovunque venga eseguito il contenitore, l'applicazione all'interno ha sempre tutto ciò che deve essere eseguito, ad esempio le versioni corrette delle librerie dipendenti, i file di configurazione e qualsiasi altro elemento necessario per l'esecuzione.

I contenitori vengono eseguiti direttamente sul kernel e hanno una visualizzazione isolata del file system e di altre risorse. Un'applicazione in un contenitore non conosce altre applicazioni o processi all'esterno del contenitore. Ogni applicazione e il relativo runtime, dipendenze e librerie di sistema vengono eseguiti all'interno di un contenitore con accesso privato completo alla visualizzazione isolata del contenitore del sistema operativo. Oltre a semplificare l'esecuzione di tutte le dipendenze dell'applicazione in ambienti di calcolo diversi, la sicurezza e l'isolamento delle risorse sono vantaggi importanti dell'uso di contenitori con Service Fabric, che altrimenti esegue i servizi in un processo.

Rispetto alle macchine virtuali, i contenitori presentano i vantaggi seguenti:

  • Small: I container usano un unico spazio di archiviazione e versioni e aggiornamenti a strati per aumentare l'efficienza.
  • Veloce: i contenitori non devono avviare un intero sistema operativo, quindi possono iniziare molto più velocemente, in genere in pochi secondi.
  • Portabilità: è possibile convertire un'immagine dell'applicazione in contenitori per l'esecuzione nel cloud, in locale, all'interno di macchine virtuali o direttamente in computer fisici.
  • Governance delle risorse: un contenitore può limitare le risorse fisiche che può usare nell'host.

Supporto di Service Fabric per contenitori

Service Fabric supporta la distribuzione di contenitori Docker su Linux e contenitori Windows Server su Windows Server 2016 e versioni successive, insieme al supporto per la modalità di isolamento Hyper-V.

Runtime di contenitori compatibili con Service Fabric:

  • Linux: Docker
  • Windows:
    • Windows Server 2022: Mirantis Container Runtime
    • Windows Server 2019/2016: DockerEE

Contenitori Docker su Linux

Docker fornisce API per creare e gestire contenitori basati sui contenitori del kernel Linux. Docker Hub offre un repository centrale per archiviare e recuperare le immagini del contenitore. Per un'esercitazione basata su Linux, vedere Creare la prima applicazione contenitore di Service Fabric in Linux.

Contenitori di Windows Server

Windows Server 2016 e versioni successive forniscono due diversi tipi di contenitori che differiscono per livello di isolamento. I contenitori di Windows Server e i contenitori Docker sono simili perché hanno entrambi l'isolamento dello spazio dei nomi e del file system, condividendo il kernel con l'host in cui sono in esecuzione. In Linux, questo isolamento è stato tradizionalmente fornito da cgroups e namespaces, e i contenitori di Windows Server si comportano in modo analogo.

I contenitori di Windows con Hyper-V supporto offrono maggiore isolamento e sicurezza perché nessun contenitore condivide il kernel del sistema operativo con qualsiasi altro contenitore o con l'host. Con questo livello superiore di isolamento della sicurezza, i contenitori abilitati da Hyper-V sono destinati a scenari potenzialmente ostili e multi-inquilino. Per un'esercitazione basata su Windows, vedere Creare la prima applicazione contenitore di Service Fabric in Windows.

La figura seguente illustra i diversi tipi di livelli di virtualizzazione e isolamento disponibili. Piattaforma Service Fabric

Scenari per l'uso di contenitori

Di seguito sono riportati esempi tipici in cui un contenitore è una scelta ottimale:

  • Implementazione diretta di IIS: è possibile inserire un'applicazione MVC ASP.NET esistente in un contenitore invece di eseguirne la migrazione verso ASP.NET Core. Queste app ASP.NET MVC dipendono da Internet Information Services (IIS). È possibile creare un pacchetto di queste applicazioni in immagini contenitore dall'immagine IIS precreata e distribuirle con Service Fabric. Per informazioni sui contenitori di Windows, vedere Immagini del contenitore in Windows Server .

  • Combinare contenitori e microservizi di Service Fabric: usare un'immagine del contenitore esistente per parte dell'applicazione. Ad esempio, è possibile usare il contenitore NGINX per il front-end Web dell'applicazione e i servizi con stato per il calcolo back-end più intensivo.

  • Ridurre l'impatto dei servizi "vicini rumorosi": è possibile usare la capacità di governance delle risorse dei contenitori per limitare le risorse usate da un servizio in un host. Se i servizi potrebbero usare molte risorse e influire sulle prestazioni di altri utenti, ad esempio un'operazione di query a esecuzione prolungata, valutare la possibilità di inserire questi servizi in contenitori con governance delle risorse.

Annotazioni

Per progettazione, un cluster di Service Fabric è un tenant singolo e le applicazioni ospitate vengono considerate attendibili. Se si sta valutando di ospitare applicazioni non attendibili, vedere Hosting di applicazioni non attendibili in un cluster di Service Fabric.

Service Fabric fornisce un modello di applicazione in cui un contenitore rappresenta un host dell'applicazione in cui vengono inserite più repliche del servizio. Service Fabric supporta anche uno scenario eseguibile guest in cui non si usano i modelli di programmazione predefiniti di Service Fabric, ma crea invece un pacchetto di un'applicazione esistente, scritta usando qualsiasi linguaggio o framework, all'interno di un contenitore. Questo scenario è il caso d'uso comune per i contenitori.

È anche possibile eseguire servizi di Service Fabric all'interno di un contenitore. Il supporto per l'esecuzione di servizi di Service Fabric all'interno di contenitori è attualmente limitato.

Service Fabric offre diverse funzionalità di contenitore che consentono di creare applicazioni composte da microservizi in contenitori, ad esempio:

  • Distribuzione e attivazione dell'immagine del container.
  • Governance delle risorse, inclusa l'impostazione predefinita dei valori delle risorse nei cluster di Azure.
  • Autenticazione del repository.
  • Mappatura della porta del contenitore alla porta dell'host.
  • Individuazione e comunicazione da contenitore a contenitore.
  • Possibilità di configurare e impostare le variabili di ambiente.
  • Possibilità di impostare le credenziali di sicurezza nel contenitore.
  • Scelta di diverse modalità di rete per i contenitori.

Per una panoramica completa del supporto dei contenitori in Azure, ad esempio come creare un cluster Kubernetes con il servizio Azure Kubernetes, come creare un registro Docker privato in Registro Azure Container e altro ancora, vedere Azure per contenitori.

Passaggi successivi

In questo articolo hai appreso del supporto che Service Fabric offre per l'esecuzione di contenitori. Successivamente, verranno illustrati esempi di ognuna delle funzionalità per illustrare come usarle.

Creare la prima applicazione contenitore di Service Fabric in Linux
Creare la prima applicazione contenitore di Service Fabric in Windows
Altre informazioni sui contenitori di Windows