2015-07-06 30 views
5

Come parte di un'orchestrazione di installazione della piattaforma, stiamo utilizzando il nostro pacchetto python per installare vari pacchetti software su un cluster di macchine nel cloud.come possiamo collegare software basati su cluster usando lo chef?

Abbiamo il seguente scenario:

  1. di molti software, uno dei nostri software è Ambari (aiuta a gestire la piattaforma Hadoop).
  2. funziona come segue: numero "n" di macchine cluster che fanno riferimento a 1 server ambari.
  3. per ogni macchina cluster per fare report, dobbiamo installare ambari-agent su ciascuna macchina del cluster e modificare il suo file delle proprietà con il server ambari che è supposto per segnalare e avviare ambari-agent.

quello che siamo in grado di fare-- siamo riusciti a installare il server Ambari e agenti Ambari separatamente nelle nostre macchine a grappolo, con l'aiuto di libri di cucina Chef separati.

cosa non siamo in grado di fare-- come possiamo modificare il file delle proprietà ambari-agent di ciascuna macchina in modo che punti al nostro IP server ambari. in generale, quale è un modo elegante per cablare software basati su cluster come parte dell'orchestrazione dello chef?

NB :. ambari-server viene creato on-fly e quindi il suo IP viene ottenuto durante il tempo di esecuzione.

È possibile? ci sono alternative al problema di cui sopra?

Grazie

risposta

1

Questo è uno scenario per Chef-server e search.

Dovrai modificare la ricetta che installa l'agente ambari per ottenere l'IP del server ambari in modo dinamico.

Prima di eseguire ricette che configurano il server ambari. Quando Chef è stato eseguito correttamente, inserisce alcune informazioni sul nodo in Chef-server, incluse le ricette e i ruoli applicati a quel particolare nodo. Puoi andare su chef-server e controllare gli attributi del nodo, in particolare l'attributo "ricette".

Ora cambia la ricetta dell'agente ambari. Non so come sia esattamente il file di configurazione dell'agente, ma siamo interessati solo a una riga, dove è impostato l'IP del server principale.

Creare un modello del file di configurazione e aggiungerlo al ricettario. Sostituire il valore IP maestro harcoded con <%= @master_ip %>

modificare la ricetta agente Ambari in modo da impostare il valore corretto di:

# search for the server node. I expect server node was configured with 
# ambari::server recipe. If not, change it to the appropriate value and 
# don't fortget to escape colons. 
ambari_server_node = search(:node, 'recipes:ambari\:\:server') 

# now create the configuration file on ambari agent node from 
# the previously created template and pass the value for the @master_ip 
# variable 
template '/right/path/on/target/node/config.file' do 
    [...] 
    variables(:master_ip => ambari_server_node['ipaddress']) 
end 
+0

risposta sembra molto pertinente e affronta il caso di utilizzo. – phoenix

2

Se si dispone di un server di cuoco, si può fare una ricerca per il nodo che gestisce la ricetta Ambari-server. Quindi si utilizza l'IP di quella macchina. In alternativa, è possibile utilizzare un nome DNS per il server ambari e quindi aggiornare la voce DNS in modo che punti al nuovo server quando è disponibile.

Altre opzioni includono l'uso di confd con etcd o l'uso di console. Ognuno ti consentirebbe di aggiornare il tuo post-chef di configurazione con l'ip del server.

2

Questo sembra un caso d'uso perfetto per Consul.

Memoria chiave/valore flessibile per configurazione dinamica, flagging delle funzioni, coordinamento , elezione dei leader e altro. Sondaggio lungo per la notifica quasi istantanea delle modifiche alla configurazione.

Abbiamo iniziato a usarlo per risolvere un problema che sembra molto simile al tuo. Storicamente ogni tipo di configurazione è stata gestita da una grande base di codice Python con tonnellate di Chef gettate dentro. Abbiamo lavorato per sostituirne alcune parti con Consul.

La cosa che mi ha davvero impressionato è stata vedere quanto velocemente le informazioni inviate attraverso il cluster diventano visibili. Riesco a vedere le macchine in dotazione e ad accedere in linea molto prima che il pannello di controllo del servizio cloud funzioni grazie ai controlli sanitari di Consuls.

Fa molto di più che agire come un negozio di chiavi/valori. Può inoltre gestire l'individuazione dei servizi ed eseguire qualsiasi tipo di controllo periodico che potrebbe essere attualmente monitorato tramite qualcosa come Sensu.

Consiglio vivamente di verificarlo.

Speriamo che sia utile. Buona fortuna con le implementazioni!