OpenStack è una piattaforma di cloud computing open source, fornisce una soluzione per l'infrastruttura come servizio. OpenStack è costituito da più componenti messi insieme per fornire IaaS, i componenti sono elencati di seguito con il suo utilizzo.
Componenti:
Componente | Nome | Usa |
---|---|---|
Calcola | (Nova) | Gestisce le macchine virtuali |
Archiviazione oggetti | (Veloce) | Gestisce lo spazio di archiviazione nel cloud |
Blocca archiviazione | (cenere) | Gestisce lo spazio di archiviazione per calcolare l'istanza |
Rete | (Neutron) | Gestisce la rete e gli indirizzi IP |
Dashboard | (Orizzonte) | Fornire un'interfaccia web grafica per gestire le risorse |
Servizio di identità | (chiave di volta) | Gestisce il sistema di autenticazione nel cloud |
Servizio immagini | (Sguardo) | Fornisce immagini del disco e del server (modello) |
Telemetria | (Ceilometro) | Sistema di fatturazione |
Orchestratura | (Calore) | Fornisce la funzione di orchestrazione |
Progettazione delle infrastrutture:
Per quanto riguarda l'infrastruttura, utilizzeremo la rete OpenStack (neutroni), qui verranno utilizzate un totale di tre istanze Ubuntu, fungeranno da controller, rete e nodo di calcolo.
OpenStack consiglia di seguito le configurazioni minime per ciascun nodo, con sistema operativo host a 64 bit.
• Nodo controller:1 processore, 2 GB di memoria e 5 GB di spazio di archiviazione
• Nodo di elaborazione:1 processore, 2 GB di memoria e 10 GB di spazio di archiviazione
Quella che segue è la configurazione di rete di ciascun nodo.
Ruolo | Carta NO 1 | Carta NW 2 |
---|---|---|
Nodo controller HostName =controller.itzgeek.local (controller) | 192.168.12.21 / 24, GW=192.168.12.2 (Rete di gestione) | 192.168.0.21 / 24 GW=192.168.0.1 (Rete pubblica – DHCP abilitato) |
Nodo di calcolo HostName =compute.itzgeek.local (calcolo) | 192.168.12.22 / 24 GW=192.168.12.2 (Rete di gestione) | 192.168.0.22 / 24 GW=192.168.0.1 (Rete pubblica – DHCP abilitato) |
*Gestione su 192.168.12.0/24 con gateway 192.168.12.1
Questa rete richiede un gateway per fornire l'accesso a Internet a tutti i nodi per scopi amministrativi come installazione di pacchetti, aggiornamenti di sicurezza, DNS e NTP.
* Pubblico su 192.168.0.0/24 con gateway 192.168.0.1
Questa rete richiede un gateway per fornire l'accesso a Internet alle istanze nel tuo ambiente OpenStack.
Aggiungi una voce host, in modo che i nodi possano utilizzare il nome host per comunicare invece dell'indirizzo IP. Posizionalo su tutti i nodi.
# nano /etc/hosts # controller 192.168.12.21 controller.itzgeek.local controller # compute 192.168.12.22 compute.itzgeek.local compute
Una volta terminata la configurazione dell'indirizzo IP, eseguire il ping tra i nodi per verificare la connettività.
Server NTP:
Installa e configura chrony (NTP) su Controller Node in modo che tutti gli altri nodi possano sincronizzare il tempo con il controller node.
# apt-get install ntp # service ntp restart
Configurazione NTP client
Installa il pacchetto NTP sui nodi Compute e su tutti i nodi che aggiungi in futuro.
# apt-get install ntp
Modifica il file di configurazione seguente.
# nano /etc/ntp.conf
Rimuovere altri server ntp da questo file o semplicemente commentare le righe che iniziano con la parola "server". Aggiungi la voce di seguito per sincronizzare i nostri nodi con il nodo controller.
server controller
Riavvia il servizio NTP.
# service ntp restart
Pacchetti OpenStack:
Installa il portachiavi e il repository dell'archivio Ubuntu Cloud.
# apt-get install software-properties-common # add-apt-repository cloud-archive:liberty
Aggiorna il tuo sistema.
# apt-get update && apt-get dist-upgrade
Installa il client Python OpenStack.
# apt-get install python-openstackclient
Esegui i due passaggi precedenti su tutti i nodi.
Installa il database MySQL:
I componenti OpenStack utilizzano il database MySQL per archiviare le informazioni, quindi installa MySQL sul Controller Node.
# apt-get install mariadb-server python-pymysql
Il programma di installazione richiama una riga di comando tui per impostare la password di root di MySQL.
Crea e modifica /etc/mysql/conf.d/mysqld_openstack.cnf file
# nano /etc/mysql/conf.d/mysqld_openstack.cnf
Aggiungi i seguenti valori e assicurati che il valore dell'indirizzo di collegamento sia impostato sull'indirizzo IP di gestione del nodo controller per consentire ad altri nodi di accedere all'istanza MySQL.
[mysqld] ## Set to Management IP bind-address = 192.168.12.21 default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8
Riavvia MySQL.
# service mysql restart
Installa database NoSQL (per servizio di telemetria):
Il servizio di telemetria usa un database NoSQL per archiviare le informazioni. Il database viene in genere eseguito sul nodo del controller. Qui useremo MongoDB.
L'installazione del server database NoSQL è necessaria solo durante l'installazione del servizio di telemetria. Altrimenti puoi saltare questo.
Installa MongoDB e il pacchetto.
# apt-get install mongodb-server mongodb-clients python-pymongo
Modifica /etc/mongodb.conf file.
# vi /etc/mongodb.conf
Aggiungi i seguenti valori e assicurati che il valore bind_ip sia impostato sull'indirizzo IP di gestione del nodo controller per consentire ad altri nodi di accedere all'istanza MySQL. Inoltre, imposta smallfiles =true .
# Management interface IP address of the controller node bind_ip = 192.168.12.21 smallfiles = true
Arresta e avvia il servizio MongoDB.
# service mongodb stop # rm -rf /var/lib/mongodb/journal/prealloc.* # service mongodb start
Installa RabbitMQ:
RabbitMQ viene utilizzato da OpenStack per coordinare le operazioni e le informazioni sullo stato tra i servizi. Installalo sul nodo controller.
# apt-get install rabbitmq-server
Aggiungi utente openstack.
# rabbitmqctl add_user openstack password
* Sostituisci la password con la tua password.
Consenti all'utente openstack di leggere, scrivere e accedere alla configurazione.
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Il prossimo passo è configurare il servizio KeyStone (identità OpenStack) .