Door Ghulam Qadir, Alibaba Cloud Tech Share-auteur. Tech Share is Alibaba Cloud’s stimuleringsprogramma om het delen van technische kennis en best practices binnen de cloud community aan te moedigen.

OpenStack is een gratis en open-source software platform dat IaaS (infrastructure-as-a-service) biedt voor publieke en private clouds.

OpenStack platform bestaat uit verschillende onderling gerelateerde projecten die hardware, storage, networking resources van een datacenter aansturen, zoals: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration en Database.

Hoewel de kernfunctie van OpenStack het bieden van een IaaS platform is, wordt het ook gebruikt als DBaaS (database-as-a-service), het bouwen van Hadoop clusters, Container orchestration en nog veel meer. De administratie van deze componenten kan worden beheerd via de web-gebaseerde interface of met behulp van OpenStack command line.

Deze tutorial laat zien hoe u uw eigen private cloud-infrastructuur kunt implementeren met OpenStack geïnstalleerd op een enkele node met behulp van rdo repositories, hoewel de implementatie kan worden bereikt op meerdere nodes. We zullen deze dienst implementeren op Alibaba Cloud Elastic Compute Service (ECS) instances met CentOS 7.

  1. Hostname = openstack.example.com
  2. IP-adres = 192.168.1.40
  3. netmask = 255.255.255.255.0
  4. Gateway = 192.168.1.1
  5. DNS = 192.168.1.254

Voorwaarden

  1. U moet Alibaba Cloud Elastic Compute Service (ECS) geactiveerd hebben en uw geldige betalingsmethode geverifieerd hebben. Als u een nieuwe gebruiker bent, kunt u een gratis account krijgen in uw Alibaba Cloud-account. Als u niet weet hoe u uw ECS-instance moet instellen, kunt u deze zelfstudie of snelstartgids raadplegen.
  2. U moet de hostnaam van uw server instellen.
  3. Toegang tot VNC-console in uw Alibaba Cloud of SSH-client geïnstalleerd op uw pc.

Nadat u aan de vereisten hebt voldaan, logt u in als root-gebruiker met uw root-gebruikersnaam & wachtwoord via SSH-client (bijv. Putty) of VNC-console die beschikbaar is in het dashboard van uw Alibaba Cloud-account.

Zorg ervoor dat uw systeem ten minste 16 GB RAM heeft en een processor met VT-ondersteuning. Controleer de VT-ondersteuning met het onderstaande commando.

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

Output: (mag niet nul zijn)

 2

Initiële systeemconfiguraties

  1. Voordat u begint met het voorbereiden van de node om uw eigen virtuele cloud infrastructuur te implementeren, logt u eerst in met root account en verzekert u zich ervan dat het systeem up-to-date is.

    Zorg ervoor dat de laatste versie van CentOS 7 op de machine staat.

     yum -y update
  2. Naar aanleiding hiervan voert u het commando ss -tulpn uit om een lijst te maken van alle draaiende services.
     Ss -tulpn

1

Nu overbodige services identificeren, stoppen, uitschakelen en verwijderen. Voornamelijk Postfix, NetworkManager en Firewalld. Daarna zou alleen nog sshd op uw Linux-machine moeten draaien.

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

Schakel Selinux policy op uw Linux-machine permanent uit door de volgende commando’s uit te voeren. Bewerk ook het bestand /etc/selinux/config en verander SELINUX van enforcing in disabled, zoals in de onderstaande afbeelding te zien is.

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

2

Gebruik bij de volgende stap het hostnamectl commando om de hostnaam van uw Linux systeem in te stellen. Vervang de FQDN variabele dienovereenkomstig.

 # hostnamectl set-hostname cloud.centos.lan

3

Installeer tot slot ntpdate om de tijd met een NTP-server te synchroniseren.

 # yum install ntpdate

Installeer OpenStack in CentOS en RHEL

OpenStack zal op uw Node worden geïmplementeerd met behulp van het PackStack-pakket dat door de rdo-repository (RPM-distributie van OpenStack) wordt geleverd.

Om de rdo repositories op RHEL 7 in te schakelen, voert u het onderstaande commando uit.

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

Op CentOS 7, bevat de Extras repository de RPM die de OpenStack repository activeert. Extras is al ingeschakeld, dus u kunt eenvoudig de RPM installeren om de OpenStack repository in te stellen:

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

Let op: Installeer Packstat pakket op uw Linux machine met het volgende commando:

 # yum install openstack-packstack

In de volgende stap genereert u een antwoordbestand voor Packstack met de standaard configuraties die later zullen worden bewerkt met de vereiste parameters om een standalone installatie van Openstack (single node) te implementeren.

Het bestand krijgt de naam van de huidige tijdstempel wanneer het wordt gegenereerd (dag, maand en jaar).

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

4

Bewerk nu het antwoordbestand met uw favoriete teksteditor.

 vi 26.07.18.conf

en vervang de volgende parameters zodat ze overeenkomen met de onderstaande waarden. Vervang voor de zekerheid de velden met wachtwoorden dienovereenkomstig.

 CONFIG_NTP_SERVERS=0.ro.pool.ntp.org

5

 CONFIG_PROVISION_DEMO=n

6

 CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user

7

Toegang tot OpenStack dashboard via HTTP met SSL ingeschakeld.

 CONFIG_HORIZON_SSL=y

8

Het root-wachtwoord voor de MySQL-server.

 CONFIG_MARIADB_PW=mypassword1234

9

Nadat u klaar bent met bewerken, slaat u het bestand op en sluit u het. Open ook het configuratiebestand van de SSH-server en maak het commentaar op de regel PermitRootLogin ongedaan door de hashtag aan de voorkant te verwijderen, zoals te zien is in onderstaande schermafbeelding.

 # vi /etc/ssh/sshd_config

10

Start vervolgens de SSH-service opnieuw om de wijzigingen weer te geven.

 # systemctl restart sshd 

Start Openstack-installatie met behulp van Packstack-antwoordbestand

Tot slot start u het Openstack-installatieproces via het hierboven bewerkte antwoordbestand door de onderstaande opdrachtsyntax uit te voeren:

 # packstack --answer-file 13.04.16.conf

11

Als de installatie van OpenStack-componenten met succes is voltooid, zal het installatieprogramma een paar regels weergeven met de lokale dashboardkoppelingen voor OpenStack en Nagios en de vereiste referenties die hierboven al zijn geconfigureerd om in te loggen op beide panelen.

12

De inloggegevens worden ook opgeslagen in uw homedirectory in het bestand keystonerc_admin.

Als het installatieproces om een of andere reden eindigt met een fout met betrekking tot de httpd-service, opent u het bestand /etc/httpd/conf.d/ssl.conf bestand en zorg ervoor dat u de volgende regel van commentaar voorziet, zoals hieronder geïllustreerd.

 #Listen 443 https

13

Start vervolgens de Apache daemon opnieuw om de wijzigingen toe te passen.

 # systemctl restart httpd.service

Note: In het geval dat u nog steeds niet kunt browsen op het Openstack web paneel op poort 443 start het installatieproces opnieuw vanaf het begin met hetzelfde commando als bij de eerste installatie.

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

Remotely Access OpenStack Dashboard

Om OpenStack web panel te benaderen vanaf een remote host in uw LAN navigeert u naar uw machine IP Adres of FQDN/dashboard via het HTTPS protocol.

Door het feit dat u gebruik maakt van een Self-Signed Certificate uitgegeven door een untrusted Certificate Authority zou er een fout moeten worden weergegeven op uw browser.

Accepteer de foutmelding en log in op het dashboard met de gebruiker admin en het wachtwoord dat is ingesteld op de parameter CONFIG_KEYSTONE_ADMIN_PW uit het hierboven ingestelde antwoordbestand.

 https://192.168.1.40/dashboard

14

15

Aternatief, als u ervoor hebt gekozen de Nagios-component voor OpenStack te installeren, kunt u naar het Nagios-webpaneel surfen op de volgende URI en inloggen met de referenties die in het antwoordbestand zijn ingesteld.

 https://192.168.1.40/nagios

16

17

Configuratie

OpenStack is een verzameling componenten van open-sourceprojecten waarmee clouddiensten kunnen worden opgezet. Elke component maakt gebruik van vergelijkbare configuratietechnieken en een gemeenschappelijk raamwerk voor INI-bestandsopties.

Deze gids bevat meerdere referenties en configuratieopties voor de volgende OpenStack-componenten:

  1. Bare Metal-service
  2. Block Storage-service
  3. Compute-service
  4. Dashboard
  5. Databaseservice
  6. Data Processing-service
  7. Identity-service
  8. Imageservice
  9. Message service
  10. Networking service
  11. Object Storage service
  12. Orchestration service
  13. Shared File Systems service
  14. Telemetry service

OpenStack gebruikt het INI-bestandsformaat voor configuratiebestanden. Een INI bestand is een eenvoudig tekstbestand dat opties specificeert als sleutel=waarde paren, gegroepeerd in secties. De DEFAULT sectie bevat de meeste configuratie-opties. Regels die beginnen met een hash-teken (#) zijn commentaarregels. Bijvoorbeeld:

 # 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

Opties kunnen verschillende types voor waarden hebben. Het commentaar in de voorbeeld configuratiebestanden vermeldt deze altijd en de tabellen vermelden de Opt waarde als eerste item zoals (BoolOpt) Toggle…. De volgende types worden door OpenStack gebruikt:

boolean waarde (BoolOpt)

Het in- of uitschakelen van een optie. De toegestane waarden zijn true en false.

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

floating point value (FloatOpt)

Een floating point getal zoals 0,25 of 1000.

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

integer value (IntOpt)

Een integer getal is een getal zonder fractionele componenten, zoals 0 of 42.

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

IP-adres (IPOpt)

Een IPv4- of IPv6-adres.

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

sleutel-waardeparen (DictOpt)

Een sleutel-waardepaar, ook wel bekend als een dictee. De sleutel-waardeparen worden gescheiden door komma’s en een dubbele punt wordt gebruikt om sleutel en waarde van elkaar te scheiden. Voorbeeld: 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

list value (ListOpt)

Voorwaarden van andere typen, gescheiden door komma’s. Als voorbeeld stelt het volgende allowed_rpc_exception_modules in op een lijst die de vier elementen oslo.messaging.exceptions, nova.exception, cinder.exception, en 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

multi value (MultiStrOpt)

Een multi-valued optie is een string-waarde en kan meer dan eens worden opgegeven, alle waarden zullen worden gebruikt.

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

port value (PortOpt)

Een TCP/IP poortnummer. Poorten kunnen variëren van 1 tot 65535.

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

string waarde (StrOpt)

Teksten kunnen optioneel worden ingesloten door enkele of dubbele aanhalingstekens.

 # 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 = " "

Secties

Configuratie-opties worden per sectie gegroepeerd. De meeste configuratiebestanden ondersteunen ten minste de volgende secties:

Bevat de meeste configuratie-opties. Als de documentatie voor een configuratieoptie de sectie ervan niet specificeert, gaat u ervan uit dat deze in deze sectie voorkomt.

Configuratieopties voor de database die de status van de OpenStack-service opslaat.

Substitutie

Het configuratiebestand ondersteunt variabele substitutie. Nadat u een configuratieoptie hebt ingesteld, kan ernaar worden verwezen in latere configuratiewaarden wanneer u deze vooraf laat gaan door een $, zoals $OPTION.

Het volgende voorbeeld gebruikt de waarden van rabbit_host en rabbit_port om de waarde van de optie rabbit_hosts te definiëren, in dit geval als 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

Om substitutie te vermijden, gebruikt u

$$, deze wordt vervangen door een enkele $. Als uw LDAP DNS-wachtwoord bijvoorbeeld $xkj432 is, specificeert u het als volgt:

 ldap_dns_password = $$xkj432

De code gebruikt de Python-string. Template.safe_substitute() methode om variabele substitutie te implementeren. Voor meer details over hoe variabele substitutie wordt opgelost.

Whitespace

Om whitespace in een configuratiewaarde op te nemen, gebruikt u een geciteerde string. Bijvoorbeeld:

 ldap_dns_passsword='a password with spaces'

Een alternatieve lokatie definiëren voor een Config bestand

De meeste services en de -manage command-line clients laden het configuratie bestand. Om een alternatieve locatie voor het configuratiebestand te definiëren, geeft u de parameter –config-file CONFIG_FILE door wanneer u een service start of een -manage commando aanroept.

Conclusie

We hebben OpenStack installatie op Red Hat, CentOS en Fedora Linux gedemonstreerd. Nu kunt u uw eigen private cloud-omgeving op Alibaba Cloud Elastic Compute Service (ECS) eenvoudig opzetten met OpenStack.

Articles

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.