av Ghulam Qadir, Alibaba Cloud Tech Share Författare. Tech Share är Alibaba Clouds incitamentsprogram för att uppmuntra till delning av teknisk kunskap och bästa praxis inom molngemenskapen.
OpenStack är en fri och öppen källkodsmjukvaruplattform som tillhandahåller IaaS (infrastructure-as-a-service) för offentliga och privata moln.
OpenStack-plattformen består av flera inbördes relaterade projekt som kontrollerar hårdvara, lagring, nätverksresurser i ett datacenter, som t.ex: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration och Database.
OpenStacks kärnfunktion är att tillhandahålla en IaaS-plattform, men den används också som DBaaS (database-as-a-service), för att bygga Hadoop-kluster, orkestrering av containrar och mycket mer. Administrationen av dessa komponenter kan hanteras via det webbaserade gränssnittet eller med hjälp av OpenStacks kommandorad.
Denna handledning kommer att visa hur du kan distribuera din egen privata molninfrastruktur med OpenStack installerad på en enda nod med hjälp av rdo repositories, även om distributionen kan uppnås på flera noder. Vi kommer att distribuera den här tjänsten på Alibaba Cloud Elastic Compute Service (ECS) instanser med CentOS 7.
- Hostname = openstack.example.com
- IP-adress = 192.168.1.40
- nätmask = 255.255.255.255.0
- Gateway = 192.168.1.1
- DNS = 192.168.1.254
Förutsättningar
- Du måste ha aktiverat Alibaba Cloud Elastic Compute Service (ECS) och verifierat din giltiga betalningsmetod. Om du är en ny användare kan du få ett gratis konto i ditt Alibaba Cloud-konto. Om du inte vet hur du konfigurerar din ECS-instans kan du läsa den här handledningen eller snabbstartsguiden.
- Du bör ställa in serverns värdnamn.
- Access till VNC-konsolen i ditt Alibaba Cloud eller SSH-klient installerad på din dator.
När du har slutfört förutsättningarna loggar du in som root-användare med ditt root-användarnamn &-lösenord via SSH-klient (t.ex. Putty) eller VNC-konsolen som finns tillgänglig i din instrumentpanel för Alibaba Cloud-kontot.
Säkerställ att ditt system har minst 16 GB RAM och en processor med VT-stöd. Kontrollera VT-stödet med hjälp av kommandot nedan.
egrep --color 'vmx|svm' /proc/cpuinfo | wc –l
Output: (bör inte vara noll)
2
Initial System Configurations
- Innan du börjar förbereda noden för att distribuera din egen virtuella molninfrastruktur ska du först logga in med root-kontot och se till att systemet är uppdaterat.
Säkerställ att din maskin har den senaste versionen av CentOS 7 på maskinen.
yum -y update
- Nästan, kör kommandot ss -tulpn för att lista alla tjänster som körs.
Ss -tulpn
Indika nu onödiga tjänster, stoppa, inaktivera och ta bort dem. Främst Postfix, NetworkManager och Firewalld. Därefter bör den enda tjänsten som skulle köras på din Linux-maskin endast vara sshd.
# systemctl stop postfix firewalld NetworkManager # systemctl disable postfix firewalld NetworkManager # systemctl mask NetworkManager # yum remove postfix NetworkManager NetworkManager-libnm
Det är viktigt att permanent inaktivera Selinux-policyn på din Linux-maskin genom att utföra följande kommandon. Redigera också filen /etc/selinux/config och ändra SELINUX från ”enforcing” till ”disabled” enligt bilden nedan.
# setenforce 0 # getenforce # vi /etc/selinux/config
I nästa steg använder du kommandot hostnamectl för att ställa in Linuxsystemets värdnamn. Ersätt FQDN-variabeln i enlighet med detta.
# hostnamectl set-hostname cloud.centos.lan
Slutningsvis installerar du ntpdate för att synkronisera tiden med en NTP-server.
# yum install ntpdate
Installera OpenStack i CentOS och RHEL
OpenStack kommer att distribueras på din nod med hjälp av PackStack-paketet som tillhandahålls av rdo-repository (RPM Distribution of OpenStack).
För att aktivera rdo repositories på RHEL 7 kör du nedanstående kommando.
# yum install https://www.rdoproject.org/repos/rdo-release.rpm
På CentOS 7 innehåller Extras-repositoriet det RPM som aktiverar OpenStack-repositoriet. Extras är redan aktiverat, så du kan enkelt installera RPM:
# yum install -y centos-release-openstack-mitaka # yum update –y
Låt oss installera Packstat-paketet på din Linux-maskin med följande kommando:
# yum install openstack-packstack
I nästa steg genereras en svarsfil för Packstack med standardkonfigurationer som senare kommer att redigeras med de parametrar som krävs för att distribuera en fristående installation av Openstack (en enda nod).
Filen kommer att namnges efter den aktuella dagens tidsstämpel när den genereras (dag, månad och år).
# packstack --gen-answer-file='date +"%d.%m.%y"'.conf # ls
Redigera nu svarsfilen med din favorittextredigerare.
vi 26.07.18.conf
och byt ut följande parametrar så att de matchar nedanstående värden. För att vara säker ersätt lösenordsfälten i enlighet med detta.
CONFIG_NTP_SERVERS=0.ro.pool.ntp.org
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user
Access OpenStack dashboard via HTTP med SSL aktiverat.
CONFIG_HORIZON_SSL=y
Rotlösenordet för MySQL-servern.
CONFIG_MARIADB_PW=mypassword1234
När du är klar med redigeringen sparar och stänger filen. Öppna också konfigurationsfilen för SSH-servern och ta bort PermitRootLogin-linjen genom att ta bort den främre hashtaggen som illustreras i skärmbilden nedan.
# vi /etc/ssh/sshd_config
Starta sedan om SSH-tjänsten för att återspegla ändringarna.
# systemctl restart sshd
Starta Openstack-installationen med hjälp av Packstack-svarsfilen
Starta slutligen Openstack-installationsprocessen via svarsfilen som redigerats ovan genom att köra nedanstående kommandosyntax:
# packstack --answer-file 13.04.16.conf
När installationen av OpenStack-komponenterna är slutförd kommer installationsprogrammet att visa några rader med länkar till lokala instrumentpaneler för OpenStack och Nagios och de nödvändiga autentiseringsuppgifter som redan konfigurerats ovan för att logga in på båda panelerna.
Autentiseringsuppgifterna lagras också under din hemkatalog i filen keystonerc_admin.
Om installationsprocessen av någon anledning slutar med ett fel angående httpd-tjänsten, öppna /etc/httpd/conf.d/ssl.conf-filen och se till att du kommenterar följande rad enligt bilden nedan.
#Listen 443 https
Starta sedan om Apache daemon för att tillämpa ändringarna.
# systemctl restart httpd.service
Notera: Om du fortfarande inte kan bläddra i Openstack-webbpanelen på port 443 startar du om installationsprocessen från början med samma kommando som utfärdades för den första installationen.
# packstack --answer-file /root/26.07.18.conf
Fjärrååtkomst till OpenStack Dashboard
För att få åtkomst till OpenStack-webbpanelen från en fjärrvärd i ditt LAN navigerar du till din maskins IP-adress eller FQDN/dashboard via HTTPS-protokollet.
På grund av det faktum att du använder ett självsignerat certifikat som utfärdats av en icke betrodd certifikatutfärdare bör ett fel visas i din webbläsare.
Acceptera felet och logga in på instrumentpanelen med användaren admin och det lösenord som anges i parametern CONFIG_KEYSTONE_ADMIN_PW från svarsfilen ovan.
https://192.168.1.40/dashboard
Alternativt, om du valde att installera Nagios-komponenten för OpenStack, kan du surfa in på Nagios webbpanel på följande URI och logga in med de autentiseringsuppgifter som anges i svarsfilen.
https://192.168.1.40/nagios
Konfiguration
OpenStack är en samling projektkomponenter med öppen källkod som gör det möjligt att konfigurera molntjänster. Varje komponent använder liknande konfigurationstekniker och en gemensam ram för INI-filalternativ.
Denna guide samlar flera referenser och konfigurationsalternativ för följande OpenStack-komponenter:
- Bare Metal-tjänst
- Blocklagringstjänst
- Räkningstjänst
- Dashboard
- Databastjänst
- Databastjänst
- Databehandlingstjänst
- Identitetstjänst
- Bildtjänst
- Message. service
- Nätverkstjänst
- Objektlagringstjänst
- Orkestrationstjänst
- Tjänst för delade filsystem
- Telemetritjänst
OpenStack använder INI-filformatet för konfigurationsfiler. En INI-fil är en enkel textfil som anger alternativ som nyckel- och värdepar, grupperade i sektioner. Avsnittet DEFAULT innehåller de flesta konfigurationsalternativen. Rader som börjar med ett hashtecken (#) är kommentarsrader. Till exempel:
# 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 ha olika typer av värden. Kommentarerna i exempelkonfigurationsfilerna nämner alltid dessa och tabellerna nämner Opt-värdet som första post som (BoolOpt) Toggle…. Följande typer används av OpenStack:
boolskt värde (BoolOpt)
Aktiverar eller inaktiverar ett alternativ. De tillåtna värdena är true och false.
# Enable the experimental use of database reconnect on # connection lost (boolean value) use_db_reconnect = false
floating point value (FloatOpt)
Ett 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ärde (IntOpt)
Ett heltal är ett tal utan bråkdelar, som 0 eller 42.
# The port which the OpenStack Compute service listens on. # (integer value) compute_port = 8774
IP-adress (IPOpt)
En IPv4- eller IPv6-adress.
# Address to bind the server. Useful when selecting a particular network # interface. (ip address value) bind_host = 0.0.0.0
Nyckelvärdespar (DictOpt)
Ett nyckelvärdespar, även känt som en diktonär. Nyckel-värdeparen separeras med kommatecken och ett kolon används för att skilja nyckel och värde åt. Exempel: nyckel1:värde1,nyckel2:värde2.
# 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
Listvärde (ListOpt)
Innehåller värden av andra typer, separerade med kommatecken. Följande exempel anger allowed_rpc_exception_modules till en lista som innehåller de fyra elementen oslo.messaging.exceptions, nova.exception, cinder.exception, och 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)
Ett alternativ med flera värden är ett strängvärde och kan anges mer än en gång, alla värden kommer att användas.
# 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)
Ett TCP/IP-portnummer. Portar kan vara mellan 1 och 65535.
# Port to which the UDP socket is bound. (port value) # Minimum value: 1 # Maximum value: 65535 udp_port = 4952
strängvärde (StrOpt)
Strängar kan valfritt omslutas av enkla eller dubbla citationstecken.
# 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 = " "
Sections
Konfigurationsalternativen är grupperade efter avsnitt. De flesta konfigurationsfiler har stöd för åtminstone följande sektioner:
Innehåller de flesta konfigurationsalternativen. Om dokumentationen för ett konfigurationsalternativ inte anger sektionen antar du att det finns i den här sektionen.
Konfigurationsalternativ för databasen som lagrar tillståndet för OpenStack-tjänsten.
Substitution
Konfigurationsfilen har stöd för variabelsubstitution. När du har ställt in ett konfigurationsalternativ kan det refereras i senare konfigurationsvärden när du föregår det med en $, som $OPTION.
Följande exempel använder värdena för rabbit_host och rabbit_port för att definiera värdet för alternativet rabbit_hosts, i det här fallet 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
För att undvika substitution använder du
$$$, det ersätts med en enda $. Om ditt LDAP DNS-lösenord till exempel är $xkj432 anger du det enligt följande:
ldap_dns_password = $$xkj432
Koden använder Pythonsträngen. Template.safe_substitute() metoden för att implementera variabelersättning. För mer information om hur variabelsubstitution löses.
Whitespace
Om du vill inkludera whitespace i ett konfigurationsvärde använder du en citerad sträng. Till exempel:
ldap_dns_passsword='a password with spaces'
Definiera en alternativ plats för en konfigurationsfil
De flesta tjänster och kommandoradsklienterna -manage laddar konfigurationsfilen. Om du vill definiera en alternativ plats för konfigurationsfilen skickar du parametern –config-file CONFIG_FILE när du startar en tjänst eller anropar ett -manage-kommando.
Slutsats
Vi demonstrerade OpenStack-installationen på Red Hat, CentOS och Fedora Linux. Nu kan du enkelt konfigurera din egen privata molnmiljö på Alibaba Cloud Elastic Compute Service (ECS) med OpenStack.