2015-09-23 17 views
10

Sono nuovo sia per Docker che per Consul e sto cercando di capire come le app containerizzate possano utilizzare Consul per il registro di servizio sia sia per la configurazione di coppia KV ("configurazione").Docker, Registrator e Consul dall'esempio

mio capire era che potevo:

  • creare un'immagine che in esecuzione il server console, in modo da qualcosa come this; quindi
  • Filare tre di questi contenitori Docker-Console (formando un cluster/quorum) su myvm01.example.com (una macchina virtuale Ubuntu); quindi
  • Rif. La mia app utilizza Consul e crea un'immagine Docker che esegue la mia app e l'agente Consul, con l'agente configurato per partecipare al quorum a 3 nodi all'avvio. All'avvio, la mia app utilizza l'agente Consul locale per estrarre tutte le sue configurazioni, memorizzate come coppie KV. Ottiene inoltre servizi registrati/sani e utilizza uno strumento di bilanciamento del carico locale per bilanciare i servizi con cui si integra.
  • Esegui i contenitori della mia app, ad esempio, myvm02.example.com (un'altra macchina virtuale Ubuntu).

Quindi, per cominciare, se qualcuno di questi sembra che io stia fraintendendo l'uso normale/corretto di Docker e Console (sans Registrator), per favore inizia correggendomi!

Supponendo che sia più o meno corretto, di recente mi sono imbattuto in Registrator e ora sono ancora più confuso. Il registratore sembra essere un intermediario tra i contenitori dell'app e il tuo console (o qualsiasi altro registro che usi).

Dopo aver letto il tutorial di avvio rapido, si suona come quello che si dovrebbe fare è:

  • distribuire l'grappolo Console/contenitori quorum myvm01.example.com come prima
  • Invece di "Dockerizing" il mio app per usare direttamente Consul, lo integro semplicemente con Registrator
  • Quindi distribuisco da qualche parte un contenitore Registrator e lo configuro per integrarlo con Consul
  • Quindi distribuisco la mia app co ntainers. Si integrano con il Registratore e il Registratore a sua volta si integra con Consul.

Le mie preoccupazioni:

  • è la mia comprensione qui corretto o fuori strada? Se é cosi, come?
  • Cosa viene effettivamente ottenuto dall'aggiunta di Registrator. Non sembra (almeno per l'occhio non allenato) qualcosa di più di uno strato di riferimento indiretto tra l'app e il registro del servizio.
  • Potrò ancora utilizzare il servizio di configurazione KV di Consul tramite Registrator?

risposta

9

La mia comprensione è corretta o di base? Se é cosi, come?

Mi sembra, che non è una buona soluzione, avere tutti i membri del cluster/quorum in esecuzione all'interno della stessa VM.Non è così male se lo si utilizza per lo sviluppo o il tetsing o qualcosa del genere, in cui non ci si preoccupa molto dell'affidabilità, ma non della produzione.

Una volta che la tua macchina virtuale muore, perderai tutti i vantaggi che hai creando un cluster. E ancora di più, puoi perdere tutti i dati che hai nell'archivio K/V, perché stai utilizzando i server Consul all'interno di container docker, che dovrebbero essere ulteriormente configurati per condividere la configurazione tra le esecuzioni.

Come per il resto, lo vedo come te.

Cosa si ottiene effettivamente con l'aggiunta di Registrator.

Dal mio punto di vista, la cosa principale è che non è necessario fornire un'istanza di Consul Agent in ogni contenitore che si esegue. E il contenitore con l'immagine che esegui è responsabile solo delle sue funzioni principali, non della registrazione da qualche parte. Puoi semplicemente estrarre un'immagine e avviare semplicemente un contenitore con esso, per renderlo disponibile, senza ulteriori interventi.

Potrò ancora utilizzare il servizio di configurazione KV di Consul tramite Registrator?

Purtroppo, no. Almeno, non abbiamo trovato una soluzione per utilizzarla in questo modo, quando stavamo cercando qualcosa per rendere la scoperta dei servizi e la gestione della configurazione. Siamo giunti alla conclusione che il registratore non è un proxy per l'archivio K/V e viene utilizzato solo per automatizzare l'individuazione dei servizi. Quindi devi usare qualche altra logica per accedere all'archivio K/V del console.

Aggiornamento: Inoltre, qui è di 2 articoli: "Automatic Docker Service Announcement with Registrator" e "Automatic container registration with Consul and Registrator", ho trovato utile per comprendere il ruolo Registrator nel processo di scoperta di servizio.