Distribuisci Apache Kafka con Docker Compose

Distribuisci Apache Kafka Con Docker Compose



Docker è un software di containerizzazione gratuito e open source che ha completamente cambiato il panorama del modo in cui gli sviluppatori impacchettano e distribuiscono le applicazioni. Docker ci consente di impacchettare un'applicazione e tutte le dipendenze richieste in un'unica entità. Ciò significa che possiamo distribuire il pacchetto e l'ambiente può essere replicato in quasi tutte le macchine senza conflitti o pacchetti mancanti.

In questo tutorial impareremo come distribuire un cluster Apache Kafka utilizzando la finestra mobile. Ciò ci consente di utilizzare l'immagine docker fornita per avviare rapidamente un cluster Kafka in quasi tutti gli ambienti.

Cominciamo con le basi e discutiamo di cosa sia Kafka.







Cos'è Apache Kafka?

Apache Kafka è un sistema di messaggistica di pubblicazione-sottoscrizione gratuito, open source, altamente scalabile, distribuito e tollerante ai guasti. È progettato per gestire un volume elevato, un throughput elevato e un flusso di dati in tempo reale, rendendolo adatto a molti casi d'uso, tra cui aggregazione di log, analisi in tempo reale e architetture guidate da eventi.



Kafka si basa su un'architettura distribuita che gli consente di gestire grandi quantità di dati su più server. Utilizza un modello di pubblicazione-sottoscrizione in cui i produttori inviano messaggi agli argomenti e i consumatori si iscrivono a loro per riceverli. Ciò consente una comunicazione disaccoppiata tra produttori e consumatori, fornendo elevata scalabilità e flessibilità.



Cos'è Docker Compose

Docker compose si riferisce a un plug-in o strumento docker per la definizione e l'esecuzione di applicazioni multi-contenitore. Docker ci compone per definire la configurazione del contenitore in un file YAML. Il file di configurazione include le specifiche del contenitore come servizi, reti e volumi richiesti da un'applicazione.





Utilizzando il comando docker-compose, possiamo creare e avviare più contenitori con un singolo comando.

Installazione di Docker e Docker Compose

Il primo passaggio consiste nell'assicurarsi di aver installato la finestra mobile sul computer locale. Puoi controllare le seguenti risorse per saperne di più:



  • https://linuxhint.com/install_configure_docker_ubuntu/
  • https://linuxhint.com/install-docker-debian/
  • https://linuxhint.com/install_docker_debian_10/
  • https://linuxhint.com/install-docker-ubuntu-22-04/
  • https://linuxhint.com/install-docker-on-pop_os/
  • https://linuxhint.com/how-to-install-docker-desktop-windows/
  • https://linuxhint.com/install-use-docker-centos-8/
  • https://linuxhint.com/install_docker_on_raspbian_os/

Al momento della stesura di questo tutorial, l'installazione della composizione docker richiede l'installazione del desktop Docker sul computer di destinazione. Pertanto, l'installazione di docker compose come unità autonoma è deprecata.

Una volta installato il Docker, possiamo configurare il file YAML. Questo file contiene tutti i dettagli di cui abbiamo bisogno per avviare un cluster Kafka utilizzando un contenitore docker.

Configurazione di Docker-Compose.YAML

Crea docker-compose.yaml e modifica con il tuo editor di testo preferito:

$ toccare docker-compose.yaml
$ vim docker-compose.yaml

Successivamente, aggiungi il file di configurazione docker come mostrato di seguito:

versione : '3'
Servizi :
guardiano dello zoo :
Immagine : bitnami / guardiano dello zoo : 3.8
porti :
- '2181:2181'
volumi :
- 'zookeeper_data:/bitnami'
ambiente :
- ALLOW_ANONYMOUS_LOGIN =
kafka :
Immagine : docker. Questo / bitnami / kafka : 3.3
porti :
- '9092:9092'
volumi :
- 'kafka_data:/bitnami'
ambiente :
- KAFKA_CFG_ZOOKEEPER_CONNECT = guardiano dello zoo : 2181
- ALLOW_PLAINTEXT_LISTENER =
dipende da :
- guardiano dello zoo
volumi :
zookeeper_data :
autista : Locale
kafka_data :
autista : Locale

Il file docker di esempio configura uno Zookeeper e un cluster Kafka in cui il cluster Kafka è connesso al servizio Zookeeper per il coordinamento. Il file configura anche le porte e le variabili di ambiente per ciascun servizio per consentire la comunicazione e l'accesso ai servizi.

Abbiamo anche impostato i volumi nominati per mantenere i dati dei servizi anche se i contenitori vengono riavviati o ricreati.

Analizziamo il file precedente in semplici sezioni:

Iniziamo con il servizio Zookeeper utilizzando l'immagine bitnami/zookeeper:3.8. Questa immagine mappa quindi la porta 2181 sul computer host alla porta 2181 sul contenitore. Impostiamo anche la variabile di ambiente ALLOW_ANONYMOUS_LOGIN su 'yes'. Infine, impostiamo il volume su cui il servizio archivia i dati come volume zookeeper_data.

Il secondo blocco definisce i dettagli per impostare il servizio Kafka. In questo caso, utilizziamo l'immagine docker.io/bitnami/kafka:3.3 che mappa la porta host 9092 alla porta container 9092. Allo stesso modo, definiamo anche la variabile di ambiente KAFKA_CFG_ZOOKEEPER_CONNECT e impostiamo il suo valore sull'indirizzo di Zookeeper come mappato a porta 2181. La seconda variabile di ambiente definita in questa sezione è la variabile di ambiente ALLOW_PLAINTEXT_LISTENER. L'impostazione del valore di questa variabile di ambiente su 'yes' consente il traffico non protetto verso il cluster Kafka.

Infine, forniamo il volume in cui il servizio Kafka memorizza i suoi dati.

Per garantire che la finestra mobile configuri i volumi per Zookeeper e Kafka, dobbiamo definirli come mostrato nella sezione dei volumi. Questo imposta i volumi zookeeper_data e kafka_data. Entrambi i volumi utilizzano il driver locale, il che significa che i dati sono archiviati nella macchina host.

Ecco qua! Un semplice file di configurazione che ti consente di avviare un contenitore Kafka utilizzando la finestra mobile in semplici passaggi.

Esecuzione del contenitore

Per assicurarci che la finestra mobile sia in esecuzione, possiamo eseguire il contenitore dal file YAML con il seguente comando:

$ sudo docker comporre

Il comando dovrebbe individuare il file di configurazione YAML ed eseguire il contenitore con i valori specificati:

Conclusione

Ora hai imparato come configurare ed eseguire Apache Kafka da una finestra mobile per comporre il file di configurazione YAML.