Af Ghulam Qadir, Alibaba Cloud Tech Share Forfatter. Tech Share er Alibaba Clouds incitamentsprogram for at tilskynde til deling af teknisk viden og bedste praksis inden for cloud-fællesskabet.

OpenStack er en gratis og open source-softwareplatform, der leverer IaaS (infrastructure-as-a-service) til offentlige og private skyer.

OpenStack-platformen består af flere indbyrdes relaterede projekter, der styrer hardware, lagring, netværksressourcer i et datacenter, som f.eks: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration og Database.

Men selvom OpenStacks kernefunktion er at levere en IaaS-platform, bruges den som DBaaS (database-as-a-service), opbygning af Hadoop-klynger, Container-orkestrering og meget mere. Administrationen af disse komponenter kan administreres via den webbaserede grænseflade eller ved hjælp af OpenStack-kommandolinjen.

Denne tutorial vil vise dig, hvordan du kan implementere din egen private cloud-infrastruktur med OpenStack installeret på en enkelt knude ved hjælp af rdo repositories, selvom implementeringen kan opnås på flere knudepunkter. Vi vil implementere denne tjeneste på Alibaba Cloud Elastic Compute Service (ECS)-instanser (Alibaba Cloud Elastic Compute Service) med CentOS 7.

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

Forudsætninger

  1. Du skal have aktiveret Alibaba Cloud Elastic Compute Service (ECS) og verificeret din gyldige betalingsmetode. Hvis du er en ny bruger, kan du få en gratis konto på din Alibaba Cloud-konto. Hvis du ikke ved, hvordan du konfigurerer din ECS-instans, kan du se denne vejledning eller quick-start-guide.
  2. Du skal opsætte din servers værtsnavn.
  3. Access til VNC-konsollen i din Alibaba Cloud eller SSH-klient installeret på din pc.

Når du har udfyldt forudsætningerne, skal du logge ind som root-bruger med dit root-brugernavn & adgangskode via SSH-klient (f.eks. Putty) eller VNC-konsol, der er tilgængelig i din Alibaba Cloud-konto dashboard.

Sørg for, at dit system har mindst 16 GB RAM og en processor med VT-understøttelse. Kontroller VT-understøttelsen ved hjælp af nedenstående kommando.

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

Output: (bør ikke være nul)

 2

Initiale systemkonfigurationer

  1. Hvor du begynder at forberede knuden med henblik på at implementere din egen virtuelle cloud-infrastruktur, skal du først logge ind med root-kontoen og sikre dig, at systemet er ajourført.

    Sørg for, at din maskine har den nyeste version af CentOS 7 på maskinen.

     yum -y update
  2. Næst skal du sende kommandoen ss -tulpn for at få en liste over alle kørende tjenester.
     Ss -tulpn

1

Identificer nu unødvendige tjenester, stop, deaktiver og fjern dem. Primært Postfix, NetworkManager og Firewalld. Herefter bør den eneste tjeneste, der skulle køre på din Linux-maskine, kun være sshd.

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

Desaktiver permanent Selinux-politikken på din Linux-maskine ved at udføre følgende kommandoer. Rediger også filen /etc/selinux/config og ændr SELINUX fra enforcing til disabled som vist i billedet nedenfor.

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

2

I det næste trin skal du bruge kommandoen hostnamectl til at indstille dit Linuxsystems værtsnavn. Udskift FQDN-variablen i overensstemmelse hermed.

 # hostnamectl set-hostname cloud.centos.lan

3

Sidst skal du installere ntpdate for at synkronisere tiden med en NTP-server.

 # yum install ntpdate

Installer OpenStack i CentOS og RHEL

OpenStack vil blive implementeret på din node ved hjælp af PackStack-pakken, som leveres af rdo-repositoriet (RPM-distribution af OpenStack).

For at aktivere rdo repositories på RHEL 7 skal du køre nedenstående kommando.

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

På CentOS 7 indeholder Extras-repositoriet RPM’en, der aktiverer OpenStack-repositoriet. Extras er allerede aktiveret, så du kan nemt installere RPM’en for at konfigurere OpenStack-repositoriet:

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

Lad os installere Packstat-pakken på din Linux-maskine ved hjælp af følgende kommando:

 # yum install openstack-packstack

I det næste trin genereres en svarfil til Packstack med standardkonfigurationer, som senere vil blive redigeret med de nødvendige parametre for at distribuere en standalone-installation af Openstack (enkelt node).

Filen vil blive navngivet efter den aktuelle dags tidsstempel, når den genereres (dag, måned og år).

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

4

Redigér nu svarfilen med din foretrukne teksteditor.

 vi 26.07.18.conf

og erstat følgende parametre, så de passer til nedenstående værdier. For at være sikker erstatter du felterne for adgangskoder i overensstemmelse hermed.

 CONFIG_NTP_SERVERS=0.ro.pool.ntp.org

5

 CONFIG_PROVISION_DEMO=n

6

 CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user

7

Access OpenStack dashboard via HTTP med SSL aktiveret.

 CONFIG_HORIZON_SSL=y

8

Rodadgangskoden til MySQL-serveren.

 CONFIG_MARIADB_PW=mypassword1234

9

Når du er færdig med at redigere, gem og luk filen. Åbn også SSH-serverkonfigurationsfilen, og fjern kommentaren PermitRootLogin-linjen ved at fjerne det forreste hashtag som illustreret på nedenstående skærmbillede.

 # vi /etc/ssh/sshd_config

10

Derpå genstartes SSH-tjenesten for at afspejle ændringerne.

 # systemctl restart sshd 

Start Openstack-installation ved hjælp af Packstack-svarfil

Start endelig Openstack-installationsprocessen via svarfilen, der er redigeret ovenfor, ved at køre nedenstående kommandosyntaks:

 # packstack --answer-file 13.04.16.conf

11

Når installationen af OpenStack-komponenterne er gennemført med succes, vil installationsprogrammet vise et par linjer med de lokale dashboard-links til OpenStack og Nagios og de krævede legitimationsoplysninger, der allerede er konfigureret ovenfor for at logge ind på begge paneler.

12

Krediteringsoplysningerne gemmes også under din hjemmemappe i filen keystonerc_admin.

Hvis installationsprocessen af en eller anden grund ender med en fejl vedrørende httpd-tjenesten, skal du åbne /etc/httpd/conf.d/ssl.conf-filen, og sørg for at kommentere følgende linje som illustreret nedenfor.

 #Listen 443 https

13

Genstart derefter Apache-dæmonen for at anvende ændringerne.

 # systemctl restart httpd.service

Bemærk: Hvis du stadig ikke kan gennemse Openstack-webpanelet på port 443, skal du genstarte installationsprocessen fra begyndelsen med den samme kommando, der blev udstedt til den første implementering.

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

Fjernadgang til OpenStack Dashboard

For at få adgang til OpenStack-webpanelet fra en fjernvært i dit LAN skal du navigere til din maskines IP-adresse eller FQDN/dashboard via HTTPS-protokollen.

Da du bruger et selvsigneret certifikat udstedt af en certifikatmyndighed, der ikke er tillid til, skal der vises en fejl i din browser.

Accepter fejlen, og log ind på dashboardet med brugeren admin og den adgangskode, der er angivet på CONFIG_KEYSTONE_ADMIN_PW-parameteren fra svarfilen, der er angivet ovenfor.

 https://192.168.1.40/dashboard

14

15

Alternativt, hvis du har valgt at installere Nagios-komponenten til OpenStack, kan du gennemse Nagios-webpanelet på følgende URI og logge ind med de legitimationsoplysninger, der er indstillet i svarfilen.

 https://192.168.1.40/nagios

16

17

Konfiguration

OpenStack er en samling af open source-projektkomponenter, der gør det muligt at opsætte cloud-tjenester. Hver komponent anvender lignende konfigurationsteknikker og en fælles ramme for INI-filindstillinger.

Denne vejledning samler flere referencer og konfigurationsmuligheder for følgende OpenStack-komponenter:

  1. Bare Metal-tjeneste
  2. Blocklagringstjeneste
  3. Beregningstjeneste
  4. Dashboard
  5. Databasetjeneste
  6. Databehandlingstjeneste
  7. Identitetstjeneste
  8. Billedtjeneste
  9. Beskedstjeneste
  10. Message service
  11. Netværkstjeneste
  12. Objektlagringstjeneste
  13. Orkestrationstjeneste
  14. Shared File Systems-tjeneste
  15. Telemetri-tjeneste

OpenStack bruger INI-filformatet til konfigurationsfiler. En INI-fil er en simpel tekstfil, der angiver indstillinger som nøgle=værdi-par, grupperet i sektioner. Afsnittet DEFAULT indeholder de fleste konfigurationsindstillinger. Linjer, der starter med et hash-tegn (#), er kommentarlinjer. For eksempel:

 # 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

Optioner kan have forskellige typer for værdier. Kommentarerne i prøvekonfigurationsfilerne nævner altid disse, og tabellerne nævner Opt-værdien som første element som f.eks. (BoolOpt) Toggle…. Følgende typer anvendes af OpenStack:

boolsk værdi (BoolOpt)

Aktiverer eller deaktiverer en indstilling. De tilladte værdier er true og false.

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

floating point value (FloatOpt)

Et floating point-tal som 0,25 eller 1000.

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

integerværdi (IntOpt)

Et heltal er et tal uden brøkdele, som f.eks. 0 eller 42.

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

IP-adresse (IPOpt)

En IPv4- eller IPv6-adresse.

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

Nøgle-værdipar (DictOpt)

Et nøgle-værdipar, også kendt som en dictonary. Nøgle-værdiparrene er adskilt af kommaer, og der bruges et kolon til at adskille nøgle og værdi. Eksempel: 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

Listeværdi (ListOpt)

Repræsenterer værdier af andre typer, der er adskilt af kommaer. Som eksempel indstiller følgende tilladte_rpc_exception_moduler til en liste, der indeholder de fire elementer oslo.messaging.exceptions, nova.exception, cinder.exception og 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 valued (MultiStrOpt)

En multi-valued option er en strengværdi og kan angives mere end én gang, alle værdier vil blive brugt.

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

portværdi (PortOpt)

Et TCP/IP-portnummer. Porte kan være fra 1 til 65535.

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

strengeværdi (StrOpt)

Strenge kan valgfrit omsluttes med enkelte eller dobbelte anførselstegn.

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

Sektioner

Konfigurationsindstillingerne er grupperet efter sektion. De fleste konfigurationsfiler understøtter mindst følgende afsnit:

Indeholder de fleste konfigurationsindstillinger. Hvis dokumentationen for en konfigurationsindstilling ikke angiver afsnittet, antages det, at den vises i dette afsnit.

Konfigurationsindstillinger for den database, der gemmer OpenStack-tjenestens tilstand.

Substitution

Konfigurationsfilen understøtter substitution af variabler. Når du har angivet en konfigurationsindstilling, kan der henvises til den i senere konfigurationsværdier, når du sætter en $ foran den, som $OPTION.

Det følgende eksempel bruger værdierne for rabbit_host og rabbit_port til at definere værdien af indstillingen rabbit_hosts, i dette tilfælde som 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

For at undgå substitution skal du bruge

$$$, det erstattes af en enkelt $. Hvis din LDAP DNS-adgangskode for LDAP f.eks. er $xkj432, skal du angive den som følger:

 ldap_dns_password = $$xkj432

Koden bruger Python-strengen. Template.safe_substitute()-metoden til at implementere variabel substitution. Du kan få flere oplysninger om, hvordan variabel substitution løses.

Whitespace

For at inkludere whitespace i en konfigurationsværdi skal du bruge en anførselstegn-streng. F.eks.:

 ldap_dns_passsword='a password with spaces'

Definer en alternativ placering for en konfigurationsfil

De fleste tjenester og kommandolinjeklienterne -manage indlæser konfigurationsfilen. Hvis du vil definere en alternativ placering for konfigurationsfilen, skal du angive parameteren –config-file CONFIG_FILE, når du starter en tjeneste eller kalder en -manage-kommando.

Slutning

Vi demonstrerede OpenStack-installation på Red Hat, CentOS og Fedora Linux. Nu kan du nemt opsætte dit eget private cloud-miljø på Alibaba Cloud Elastic Compute Service (ECS) med OpenStack.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.