Console - Lavorare con Microservices
In questo capitolo capiremo come funzionano i microservizi con Consul. Impareremo anche come i seguenti componenti influenzano Console.
- Utilizzando docker
- Registratore di edifici per l'individuazione dei servizi
- Utilizzando rkt e Nomad
Discutiamo ora ciascuno di questi in dettaglio.
Utilizzando Docker
Prima di cominciare, please do not use this setup in productionin quanto viene utilizzato solo a scopo dimostrativo. Docker è un servizio basato su container tramite il quale possiamo distribuire facilmente le nostre applicazioni. Per utilizzare Consul, utilizzeremo l'immagine al seguente link –0
https://hub.docker.com/r/progrium/consul/.
Si presume che il tuo sistema abbia Docker installato e configurato correttamente. Proviamo a estrarre l'immagine dall'hub Docker, eseguendo il seguente comando:
$ docker pull progrium/consul
L'output sarebbe come mostrato nello screenshot seguente.

Pubblicheremo alcune interfacce con le loro porte (usando l'opzione -p su Docker) nel modo seguente.
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
Inoltre, come per il pull fatto, imposteremo il nome del nome host come node1Puoi cambiarlo in qualsiasi cosa tu voglia usando il -h flag con un tuo nome host come mostrato di seguito.
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
L'output sarebbe come mostrato nello screenshot seguente.

Puoi anche abilitare la modalità UI per il Console usando:
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
È possibile controllare l'output basato sull'interfaccia utente su http://localhost:8500. Lo screenshot seguente offre un'idea migliore dell'output basato sull'interfaccia utente.

Per utilizzare console su vari contenitori Docker su nodi diversi, possiamo eseguire i seguenti comandi su nodi diversi:
Su Node1
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
Dove, -bootstrap-expect 3 significa che il server console attenderà fino a quando non ci saranno 3 peer connessi prima di eseguire il bootstrap automatico e diventare un cluster funzionante.
Prima di andare oltre, dobbiamo ottenere l'IP interno del contenitore ispezionando il contenitore. Per il nostro utilizzo, scopo del caso, dichiareremo il file$ JOIN_IP.
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
Su Node2
Quindi, iniziamo Node2 e diciamogli di unirsi a Node1 usando la variabile dichiarata nel programma sopra.
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
Su Node3
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
Registratore di edifici per l'individuazione dei servizi
Registrator registra e annulla automaticamente la registrazione dei servizi per qualsiasi container Docker ispezionando i container non appena sono online. Il registratore che stiamo per utilizzare attualmente supporta i registri dei servizi collegabili, che attualmente includonoConsul, Etcd e SkyDNS2. L'utilizzo di Registrator è altamente raccomandato quando si interagisce con diversi servizi sulla rete.
$ docker pull gliderlabs/registrator:latest
L'output sarebbe come mostrato nello screenshot seguente.

$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
L'output sarebbe come mostrato nello screenshot seguente.

L'output che hai ricevuto è l'ID del Docker Container che hai appena avviato. È possibile verificare se il contenitore è in esecuzione o meno utilizzando il comando -
$ docker ps -a
L'output sarebbe come mostrato nello screenshot seguente.

È inoltre possibile visualizzare i log di Registrator utilizzando il seguente comando.
$ docker logs registrator
Utilizzando rkt e Nomad
Rkt è un altro servizio basato su container, che puoi utilizzare nel tuo ambiente. È costruito daCoreOS. Il motivo principale per costruire rkt era migliorare la sicurezza che era uno dei problemi di crisi per Docker quando era ancora in fase di sviluppo nel 2013-14.
Per quanto riguarda Console, possiamo utilizzare Rkt Registrator per lavorare sulla scoperta del servizio con Console. Questo particolare progetto Registrator, coperto da rkt, è in fase di sviluppo ed ènot recommended for production level use.
Puoi verificare se rkt è installato o meno, andando sul suo percorso ed eseguendo il seguente comando.
$ ./rkt
È possibile controllare l'output per verificare se è installato correttamente o meno come mostrato nello screenshot seguente.

Per provare rkt e Consul, controlla - https://github.com/r3boot/rkt-registrator.
Strumento nomade
Una delle opzioni più comunemente utilizzate e preferite è lo strumento Nomad. Nomad è uno strumento per la gestione di un cluster di macchine e l'esecuzione di applicazioni su di esse. È simile aMesos o Kubernetes. Per impostazione predefinita, Nomad copre il Docker e il driver rkt al suo interno. Quindi, se stai cercando una distribuzione su larga scala di container con Consul. Nomad potrebbe essere una buona soluzione. Check out -https://www.nomadproject.io/docs/drivers/rkt.html per ulteriori informazioni su Nomad.