Come posso distribuire un cloud OpenStack con Juju?


15

Mi piacerebbe avere un cloud di prova attivo e funzionante in preparazione per una possibile distribuzione di 12.04. Ho rovinato un po 'l'UEC, ma ho avuto molte più difficoltà a trovare qualcosa di utile come primer per il nuovo stack. Esiste una documentazione generica su Diablo, ma è probabile che ci siano molti pezzi già utili in Ubuntu con cui una guida specifica potrebbe far risparmiare tempo.

Inoltre, per quanto mi piacerebbe, il mio budget non include $ 4-6k per far funzionare un piccolo cluster con il supporto canonico.

Risposte:


17

Installazione di OpenStack

Se vuoi alzarti e correre velocemente vai qui invece:

Questa risposta è uno sguardo più dettagliato su come usare Juju con OpenStack.

Scopo

La piattaforma OpenStack è potente e utilizza diversi. Questa sezione della documentazione riguarda principalmente l'implementazione di un sistema OpenStack "standard" in esecuzione utilizzando, ma non solo, componenti Canonical come MAAS, Juju e Ubuntu. Se del caso, saranno menzionati altri metodi e software.

ipotesi

  1. Uso di MAAS : seguire prima queste istruzioni.
  2. L'uso di Juju
  3. Configurazione della rete locale - Questo documento presuppone che si disponga di una configurazione di rete locale adeguata, comprese interfacce separate per l'accesso al cloud OpenStack. Le reti ideali sono definite nella [MAAS] [documentazione MAAS per OpenStack].

Pianificazione di un'installazione

Prima di distribuire qualsiasi servizio, è molto utile fare il punto sulle risorse disponibili e su come devono essere utilizzate. OpenStack comprende una serie di servizi correlati (Nova, Swift, ecc.) Che hanno esigenze diverse in termini di host. Ad esempio, il servizio Swift, che fornisce l'archiviazione di oggetti, ha un requisito diverso rispetto al servizio Nova, che fornisce risorse di calcolo.

I requisiti minimi per ciascun servizio e raccomandazioni sono stabiliti nel funzionario Guida operativa OpenStack

La composizione consigliata di nodi per la distribuzione di OpenStack con MAAS e Juju è che tutti i nodi nel sistema dovrebbero essere in grado di eseguire QUALSIASI servizio. Questa è la migliore pratica per la solidità del sistema, poiché poiché qualsiasi nodo fisico dovrebbe fallire, un altro può essere riproposto per prendere il suo posto. Ciò ovviamente si estende a qualsiasi requisito hardware come interfacce di rete extra.

Se per motivi di economia o in altro modo si sceglie di utilizzare diverse configurazioni di hardware, è necessario notare che la capacità di superare i guasti hardware verrà ridotta. Sarà inoltre necessario indirizzare le distribuzioni a nodi specifici - consultare la sezione nella documentazione MAAS sui tag .

Crea il file di configurazione OpenStack

Useremo gli incantesimi Juju per distribuire le parti componenti di OpenStack. Ogni incantesimo racchiude tutto ciò che è necessario per creare un servizio particolare. Tuttavia, i singoli servizi hanno molte opzioni di configurazione, alcune delle quali vorremmo cambiare.

Per rendere questo compito più semplice e riproducibile, creeremo un file di configurazione separato con le opzioni pertinenti per tutti i servizi. Questo è scritto in un formato YAML standard ( vedi www.yaml.org se non ti è familiare ).

Ecco un esempio di openstack-config.yaml:

keystone:
  admin-password: openstack
  debug: 'true'
  log-level: DEBUG
nova-cloud-controller:
  network-manager: 'Neutron'
  quantum-security-groups: 'yes'
  neutron-external-network: Public_Network
nova-compute:
  enable-live-migration: 'True'
  migration-auth-type: "none"
  virt-type: kvm
  #virt-type: lxc
  enable-resize: 'True'
quantum-gateway:
  ext-port: 'eth1'
  plugin: ovs
glance:
  ceph-osd-replication-count: 3
cinder:
  block-device: None
  ceph-osd-replication-count: 3
  overwrite: "true"
  glance-api-version: 2
ceph:
  fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
  monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
  osd-devices: /dev/sdb
  osd-reformat: 'True'

Per tutti i servizi, possiamo configurare il openstack-originpuntare a una fonte di installazione. In questo caso, faremo affidamento sul valore predefinito, che punterà alle fonti rilevanti per la versione di Ubuntu 14.04 LTS Trusty. Ulteriore configurazione per ciascun servizio è spiegata in questo documento .

Altre configurazioni

Altre impostazioni e opzioni di configurazione sono possibili per la distribuzione dei servizi OpenStack. Questi sono dettagliati nella documentazione dei singoli ciondoli usati da Juju e possono essere ispezionati visitando il Juju Charm Store online e cercando il fascino usando la casella di ricerca nella parte in alto a sinistra della pagina. le impostazioni di configurazione sono quindi dettagliate in "Configurazione" nella pagina principale, come mostrato:

inserisci qui la descrizione dell'immagine

Distribuire OpenStack con Juju

Ora che la configurazione è definita, possiamo usare Juju per distribuire e mettere in relazione i servizi.

Inizializzazione di Juju

Juju richiede un minimo di installazione. Qui supponiamo che sia già stato configurato per funzionare con il cluster MAAS (consultare la [Guida all'installazione di Juju] [juju_install] per ulteriori informazioni al riguardo.

Innanzitutto, dobbiamo recuperare immagini e strumenti che Juju utilizzerà:

juju sync-tools --debug

Quindi possiamo creare l'istanza bootstrap:

juju bootstrap --upload-tools --debug

Usiamo l'opzione upload-tools per usare le versioni locali degli strumenti che abbiamo appena recuperato. L'opzione debug fornirà un output dettagliato che può essere utile. Questo processo potrebbe richiedere alcuni minuti, poiché Juju sta creando un'istanza e installando gli strumenti. Al termine, è possibile verificare lo stato del sistema con il comando:

juju status

Questo dovrebbe restituire qualcosa del tipo:

environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.1.1
    dns-name: localhost
    instance-id: localhost
    series: trusty

Distribuire gli accessi OpenStack

Ora che il nodo bootstrap Juju è attivo e funzionante, possiamo distribuire i servizi necessari per effettuare la nostra installazione OpenStack. Per configurare correttamente questi servizi mentre vengono distribuiti, faremo uso del file di configurazione che abbiamo definito in precedenza, passandolo insieme allo --configswitch con ogni comando deploy. Sostituire il nome e il percorso del file di configurazione, se diverso.

È utile ma non essenziale distribuire i servizi nell'ordine seguente. Si consiglia inoltre vivamente di aprire una finestra terminale aggiuntiva ed eseguire il comando juju debug-log. Ciò genererà i registri di tutti i servizi durante l'esecuzione e può essere utile per la risoluzione dei problemi.

Si consiglia inoltre di eseguire juju statusperiodicamente un comando, per verificare che ciascun servizio sia stato installato e funzioni correttamente. Juju cercherà automaticamente di ottenere la migliore versione possibile del fascino dal Charm Store online. Se si esegue l'installazione da una rete ristretta o chiusa, è possibile pre-recuperare gli accessi richiesti. Vedi [la documentazione per gli accessi offline] [charms-offline].

juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3 
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw

Aggiungi relazioni tra i servizi OpenStack

Sebbene i servizi siano ora distribuiti, non sono ancora connessi insieme. Ogni servizio esiste attualmente in isolamento. Noi usiamo iljuju add-relation comando per renderli consapevoli gli uni degli altri e impostare eventuali connessioni e protocolli pertinenti. Questa configurazione extra è curata dai singoli ciondoli stessi.

Dovremmo iniziare ad aggiungere relazioni tra gli accessi impostando il servizio di autorizzazione Keystone e il suo database, poiché ciò sarà necessario per molte altre connessioni:

juju add-relation keystone mysql

Attendiamo che venga stabilita la relazione. Al termine, verificalo con lo stato juju:

juju status mysql
juju status keystone

Potrebbero essere necessari alcuni minuti prima che questo servizio si risolva. Sebbene sia certamente possibile continuare ad aggiungere relazioni (Juju gestisce una coda per azioni in sospeso), può essere controproducente in termini di tempo complessivo impiegato, poiché molte relazioni si riferiscono agli stessi servizi.

È inoltre necessario stabilire le seguenti relazioni:

juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone

Infine, l'output dello stato juju dovrebbe mostrare tutte le relazioni come complete. Il cloud OpenStack è ora in esecuzione, ma deve essere popolato con alcuni componenti aggiuntivi prima che sia pronto per l'uso.




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.