Di Ghulam Qadir, Alibaba Cloud Tech Share Author. Tech Share è il programma di incentivi di Alibaba Cloud per incoraggiare la condivisione delle conoscenze tecniche e delle migliori pratiche all’interno della comunità cloud.

OpenStack è una piattaforma software libera e open-source che fornisce IaaS (infrastructure-as-a-service) per cloud pubblici e privati.

La piattaforma OpenStack è composta da diversi progetti correlati che controllano l’hardware, lo storage, le risorse di rete di un datacenter, come: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetria, Orchestrazione e Database.

Anche se la funzione principale di OpenStack è quella di fornire una piattaforma IaaS, viene utilizzato come DBaaS (database-as-a-service), costruendo cluster Hadoop, orchestrazione Container e molto altro. L’amministrazione di questi componenti può essere gestita attraverso l’interfaccia web-based o con l’aiuto della linea di comando OpenStack.

Questo tutorial vi mostrerà come è possibile implementare la vostra infrastruttura cloud privata con OpenStack installato su un singolo nodo utilizzando i repository rdo, anche se il deployment può essere realizzato su più nodi. Implementeremo questo servizio su istanze Alibaba Cloud Elastic Compute Service (ECS) con CentOS 7.

  1. Hostname = openstack.example.com
  2. indirizzo IP = 192.168.1.40
  3. netmask = 255.255.255.0
  4. Gateway = 192.168.1.1
  5. DNS = 192.168.1.254

Prequisiti

  1. Devi avere Alibaba Cloud Elastic Compute Service (ECS) attivato e verificato il tuo metodo di pagamento valido. Se sei un nuovo utente, puoi ottenere un account gratuito nel tuo account Alibaba Cloud. Se non sai come impostare la tua istanza ECS, puoi fare riferimento a questo tutorial o alla guida rapida.
  2. Devi impostare l’hostname del tuo server.
  3. Accedi alla console VNC nel tuo Alibaba Cloud o al client SSH installato nel tuo PC.

Dopo aver completato i prerequisiti, effettua il login come utente root con il tuo nome utente root & password tramite client SSH (ad esempio Putty) o console VNC disponibile nella dashboard del tuo account Alibaba Cloud.

Assicurati che il tuo sistema abbia almeno 16GB di RAM e un processore con supporto VT. Controlla il supporto VT usando il seguente comando.

 egrep --color 'vmx|svm' /proc/cpuinfo | wc –l

Output: (non dovrebbe essere zero)

 2

Configurazioni iniziali del sistema

  1. Prima di iniziare a preparare il nodo al fine di distribuire la propria infrastruttura cloud virtuale, per prima cosa accedi con l’account di root e assicurati che il sistema sia aggiornato.

    Assicurati che la tua macchina abbia l’ultima versione di CentOS 7.

     yum -y update
  2. Poi, emetti il comando ss -tulpn per elencare tutti i servizi in esecuzione.
     Ss -tulpn

1

Ora identifica i servizi non necessari, fermali, disabilitali e rimuovili. Principalmente Postfix, NetworkManager e Firewalld. Dopo di che, l’unico servizio che dovrebbe essere in esecuzione sulla vostra macchina linux dovrebbe essere solo sshd.

 # systemctl stop postfix firewalld NetworkManager # systemctl disable postfix firewalld NetworkManager # systemctl mask NetworkManager # yum remove postfix NetworkManager NetworkManager-libnm

Disabilitate definitivamente la politica Selinux sulla vostra macchina linux eseguendo i seguenti comandi. Modificate anche il file /etc/selinux/config e modificate SELINUX da enforcing a disabled come mostrato nell’immagine qui sotto.

 # setenforce 0 # getenforce # vi /etc/selinux/config

2

Al prossimo passo usate il comando hostnamectl per impostare il vostro hostname di sistema Linux. Sostituite la variabile FQDN di conseguenza.

 # hostnamectl set-hostname cloud.centos.lan

3

Infine, installate ntpdate per sincronizzare il tempo con un server NTP.

 # yum install ntpdate

Installate OpenStack in CentOS e RHEL

OpenStack sarà distribuito sul vostro nodo con l’aiuto del pacchetto PackStack fornito dal repository rdo (distribuzione RPM di OpenStack).

Per abilitare i repository rdo su RHEL 7 eseguire il seguente comando.

 # yum install https://www.rdoproject.org/repos/rdo-release.rpm

Su CentOS 7, il repository Extras include l’RPM che attiva il repository OpenStack. Extras è già abilitato, quindi si può facilmente installare l’RPM per configurare il repository OpenStack:

 # yum install -y centos-release-openstack-mitaka # yum update –y

Installiamo il pacchetto Packstat sulla vostra macchina linux utilizzando il seguente comando:

 # yum install openstack-packstack

Al prossimo passo generare un file di risposta per Packstack con le configurazioni di default che sarà successivamente modificato con i parametri richiesti al fine di distribuire un’installazione standalone di Openstack (singolo nodo).

Il file avrà il nome del timestamp del giorno corrente quando viene generato (giorno, mese e anno).

 # packstack --gen-answer-file='date +"%d.%m.%y"'.conf # ls

4

Ora modifica il file di risposta con il tuo editor di testo preferito.

 vi 26.07.18.conf

e sostituisci i seguenti parametri per farli corrispondere ai valori seguenti. Al fine di essere sicuri, sostituire i campi password di conseguenza.

 CONFIG_NTP_SERVERS=0.ro.pool.ntp.org

5

 CONFIG_PROVISION_DEMO=n

6

 CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user

7

Accedere alla dashboard OpenStack via HTTP con SSL abilitato.

 CONFIG_HORIZON_SSL=y

8

La password di root per il server MySQL.

 CONFIG_MARIADB_PW=mypassword1234

9

Dopo aver finito di modificare salvare e chiudere il file. Inoltre, aprire il file di configurazione del server SSH e decommentare la linea PermitRootLogin rimuovendo l’hashtag anteriore come illustrato nello screenshot sottostante.

 # vi /etc/ssh/sshd_config

10

Quindi riavviare il servizio SSH per riflettere le modifiche.

 # systemctl restart sshd 

Avviare l’installazione Openstack utilizzando il file di risposta Packstack

Finalmente avviare il processo di installazione Openstack tramite il file di risposta modificato sopra eseguendo la sintassi del comando sottostante:

 # packstack --answer-file 13.04.16.conf

11

Una volta che l’installazione dei componenti di OpenStack è stata completata con successo, il programma di installazione mostrerà alcune righe con i link delle dashboard locali per OpenStack e Nagios e le credenziali richieste già configurate in precedenza al fine di effettuare il login su entrambi i pannelli.

12

Le credenziali sono anche memorizzate sotto la vostra home directory nel file keystonerc_admin.

Se per qualche motivo il processo di installazione termina con un errore riguardante il servizio httpd, aprite /etc/httpd/conf.d/ssl.conf e assicuratevi di commentare la seguente linea come illustrato di seguito.

 #Listen 443 https

13

Poi riavviate il demone Apache per applicare le modifiche.

 # systemctl restart httpd.service

Nota: Nel caso in cui non sia ancora possibile navigare nel pannello web Openstack sulla porta 443 riavviare il processo di installazione dall’inizio con lo stesso comando emesso per la distribuzione iniziale.

 # packstack --answer-file /root/26.07.18.conf

Accedere da remoto a OpenStack Dashboard

Per accedere al pannello web di OpenStack da un host remoto nella vostra LAN navigate verso l’indirizzo IP della vostra macchina o FQDN/dashboard tramite protocollo HTTPS.

A causa del fatto che state usando un certificato autofirmato rilasciato da un’autorità di certificazione non attendibile un errore dovrebbe essere visualizzato sul vostro browser.

Accetta l’errore e accedi alla dashboard con l’utente admin e la password impostata sul parametro CONFIG_KEYSTONE_ADMIN_PW dal file di risposta impostato sopra.

 https://192.168.1.40/dashboard

14

15

In alternativa, se si è scelto di installare il componente Nagios per OpenStack, è possibile navigare nel pannello web di Nagios al seguente URI e accedere con le credenziali impostate nel file di risposta.

 https://192.168.1.40/nagios

16

17

Configurazione

OpenStack è una collezione di componenti del progetto open source che permettono di impostare i servizi cloud. Ogni componente utilizza tecniche di configurazione simili e un quadro comune per le opzioni dei file INI.

Questa guida raccoglie più riferimenti e opzioni di configurazione per i seguenti componenti OpenStack:

  1. Servizio Bare Metal
  2. Servizio di archiviazione a blocchi
  3. Servizio di calcolo
  4. Dashboard
  5. Servizio database
  6. Servizio elaborazione dati
  7. Servizio identità
  8. Servizio immagini
  9. Messaggio service
  10. Networking service
  11. Object Storage service
  12. Orchestration service
  13. Shared File Systems service
  14. Telemetry service

OpenStack usa il formato INI per i file di configurazione. Un file INI è un semplice file di testo che specifica le opzioni come coppie chiave=valore, raggruppate in sezioni. La sezione DEFAULT contiene la maggior parte delle opzioni di configurazione. Le linee che iniziano con un segno di hash (#) sono linee di commento. Per esempio:

 # Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) debug = true # The SQLAlchemy connection string used to connect to the # database (string value) connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

Le opzioni possono avere diversi tipi di valori. I commenti nei file di configurazione di esempio menzionano sempre questi e le tabelle menzionano il valore Opt come primo elemento come (BoolOpt) Toggle…. I seguenti tipi sono usati da OpenStack:

valore booleano (BoolOpt)

Abilita o disabilita un’opzione. I valori ammessi sono true e false.

 # Enable the experimental use of database reconnect on # connection lost (boolean value) use_db_reconnect = false

valore in virgola mobile (FloatOpt)

Un numero in virgola mobile come 0,25 o 1000.

 # Sleep time in seconds for polling an ongoing async task # (floating point value) task_poll_interval = 0.5

valore intero (IntOpt)

Un numero intero è un numero senza componenti frazionarie, come 0 o 42.

 # The port which the OpenStack Compute service listens on. # (integer value) compute_port = 8774

Indirizzo IP (IPOpt)

Un indirizzo IPv4 o IPv6.

 # Address to bind the server. Useful when selecting a particular network # interface. (ip address value) bind_host = 0.0.0.0

coppie chiave-valore (DictOpt)

Una coppia chiave-valore, conosciuta anche come un dettato. Le coppie chiave-valore sono separate da virgole e un due punti è usato per separare chiave e valore. Esempio: key1:value1,key2:value2.

 # Parameter for l2_l3 workflow setup. (dict value) l2_l3_setup_params = data_ip_address:192.168.200.99, \ data_ip_mask:255.255.255.0,data_port:1,gateway:192.168.200.1,ha_port:2

valore della lista (ListOpt)

Rappresenta valori di altri tipi, separati da virgole. Come esempio, il seguente imposta allowed_rpc_exception_modules ad una lista contenente i quattro elementi oslo.messaging.exceptions, nova.exception, cinder.exception, e exceptions:

 # Modules of exceptions that are permitted to be recreated # upon receiving exception data from an rpc call. (list value) allowed_rpc_exception_modules = oslo.messaging.exceptions,nova.exception

multivalutato (MultiStrOpt)

Un’opzione multi-valutato è un valore stringa e può essere data più di una volta, tutti i valori saranno usati.

 # Driver or drivers to handle sending notifications. (multi valued) notification_driver = nova.openstack.common.notifier.rpc_notifier notification_driver = ceilometer.compute.nova_notifier

valore della porta (PortOpt)

Un numero di porta TCP/IP. Le porte possono variare da 1 a 65535.

 # Port to which the UDP socket is bound. (port value) # Minimum value: 1 # Maximum value: 65535 udp_port = 4952

valore della stringa (StrOpt)

Le stringhe possono essere opzionalmente racchiuse da apici singoli o doppi.

 # Enables or disables publication of error events. (boolean value) publish_errors = false # The format for an instance that is passed with the log message. # (string value) instance_format = " "

Sezioni

Le opzioni di configurazione sono raggruppate per sezione. La maggior parte dei file di configurazione supporta almeno le seguenti sezioni:

Contiene la maggior parte delle opzioni di configurazione. Se la documentazione per un’opzione di configurazione non specifica la sua sezione, si assume che appaia in questa sezione.

Opzioni di configurazione per il database che memorizza lo stato del servizio OpenStack.

Sostituzione

Il file di configurazione supporta la sostituzione delle variabili. Dopo aver impostato un’opzione di configurazione, essa può essere referenziata in valori di configurazione successivi quando la si fa precedere da un $, come $OPTION.

L’esempio seguente usa i valori di rabbit_host e rabbit_port per definire il valore dell’opzione rabbit_hosts, in questo caso come controller:5672.

 # The RabbitMQ broker address where a single node is used. # (string value) rabbit_host = controller # The RabbitMQ broker port where a single node is used. # (integer value) rabbit_port = 5672 # RabbitMQ HA cluster host:port pairs. (list value) rabbit_hosts = $rabbit_host:$rabbit_port

Per evitare la sostituzione, usa

$$, esso viene sostituito da un singolo $. Per esempio, se la tua password DNS LDAP è $xkj432, specificala come segue:

 ldap_dns_password = $$xkj432

Il codice usa la stringa Python. Template.safe_substitute() per implementare la sostituzione delle variabili. Per maggiori dettagli su come viene risolta la sostituzione delle variabili.

Whitespace

Per includere spazi bianchi in un valore di configurazione, usa una stringa tra virgolette. Per esempio:

 ldap_dns_passsword='a password with spaces'

Definire una posizione alternativa per un file di configurazione

La maggior parte dei servizi e i client a riga di comando -manage caricano il file di configurazione. Per definire una posizione alternativa per il file di configurazione, passate il parametro –config-file CONFIG_FILE quando avviate un servizio o chiamate un comando -manage.

Conclusione

Abbiamo dimostrato l’installazione di OpenStack su Red Hat, CentOS e Fedora Linux. Ora è possibile impostare il proprio ambiente cloud privato su Alibaba Cloud Elastic Compute Service (ECS) facilmente con OpenStack.

Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.