By Ghulam Qadir, Alibaba Cloud Tech Share Author. Tech Share to program motywacyjny Alibaba Cloud zachęcający do dzielenia się wiedzą techniczną i najlepszymi praktykami w społeczności chmurowej.

OpenStack to darmowa platforma oprogramowania open-source, która zapewnia IaaS (infrastructure-as-a-service) dla chmur publicznych i prywatnych.

Platforma OpenStack składa się z kilku powiązanych ze sobą projektów, które kontrolują sprzęt, pamięć masową, zasoby sieciowe centrum danych, takie jak: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration i Database.

Chociaż podstawową funkcją OpenStack jest dostarczanie platformy IaaS, jest ona wykorzystywana jako DBaaS (database-as-a-service), budowanie klastrów Hadoop, orkiestracja Containerów i wiele innych. Administracja tymi komponentami może być zarządzana poprzez interfejs webowy lub za pomocą wiersza poleceń OpenStack.

Tutorial ten pokaże jak można wdrożyć własną infrastrukturę chmury prywatnej z OpenStack zainstalowaną na pojedynczym węźle za pomocą repozytoriów rdo, chociaż wdrożenie może być osiągnięte na wielu węzłach. Będziemy wdrażać tę usługę na instancjach Alibaba Cloud Elastic Compute Service (ECS) z systemem CentOS 7.

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

Wymagania wstępne

  1. Musisz mieć aktywowaną usługę Alibaba Cloud Elastic Compute Service (ECS) i zweryfikowaną ważną metodę płatności. Jeśli jesteś nowym użytkownikiem, możesz uzyskać darmowe konto na swoim koncie Alibaba Cloud. Jeśli nie wiesz, jak skonfigurować instancję ECS, możesz skorzystać z tego samouczka lub przewodnika szybkiego startu.
  2. Powinieneś skonfigurować nazwę hosta swojego serwera.
  3. Dostęp do konsoli VNC w Alibaba Cloud lub klienta SSH zainstalowanego na Twoim komputerze.

Po spełnieniu warunków wstępnych, zaloguj się jako użytkownik root z nazwą użytkownika root & hasłem za pomocą klienta SSH (np. Putty) lub konsoli VNC dostępnej w pulpicie nawigacyjnym Twojego konta Alibaba Cloud.

Upewnij się, że Twój system ma co najmniej 16GB pamięci RAM i procesor z obsługą VT. Sprawdź obsługę VT za pomocą poniższego polecenia.

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

Output: (nie powinno być zero)

 2

Initial System Configurations

  1. Zanim zaczniesz przygotowywać węzeł w celu wdrożenia własnej infrastruktury chmury wirtualnej, najpierw zaloguj się na konto root i upewnij się, że system jest aktualny.

    Upewnij się, że na maszynie znajduje się najnowsza wersja systemu CentOS 7.

     yum -y update
  2. Następnie wydaj polecenie ss -tulpn, aby wyświetlić listę wszystkich działających usług.
     Ss -tulpn

1

Teraz zidentyfikuj niepotrzebne usługi, zatrzymaj je, wyłącz i usuń. Przede wszystkim Postfix, NetworkManager i Firewalld. Po tym, jedyną usługą, która będzie działać na twojej maszynie linuxowej powinien być tylko sshd.

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

Trwale wyłącz politykę Selinux na twojej maszynie linuxowej wykonując następujące polecenia. Edytuj również plik /etc/selinux/config i zmodyfikuj SELINUX z wymuszającej na wyłączoną jak pokazano na poniższym obrazku.

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

2

W kolejnym kroku użyj polecenia hostnamectl aby ustawić nazwę hosta systemu Linux. Zastąp odpowiednio zmienną FQDN.

 # hostnamectl set-hostname cloud.centos.lan

3

Na koniec zainstaluj ntpdate, aby zsynchronizować czas z serwerem NTP.

 # yum install ntpdate

Instalacja OpenStack w CentOS i RHEL

OpenStack zostanie wdrożony na węźle za pomocą pakietu PackStack dostarczonego przez repozytorium rdo (RPM Distribution of OpenStack).

Aby włączyć repozytoria rdo na RHEL 7 wykonaj poniższe polecenie.

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

Na CentOS 7, repozytorium Extras zawiera RPM, który aktywuje repozytorium OpenStack. Extras jest już włączone, więc można łatwo zainstalować RPM, aby skonfigurować repozytorium OpenStack:

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

Zainstalujmy pakiet Packstat na maszynie linuxowej za pomocą następującego polecenia:

 # yum install openstack-packstack

Następnym krokiem jest wygenerowanie pliku odpowiedzi dla Packstack z domyślnymi konfiguracjami, które będą później edytowane z wymaganymi parametrami w celu wdrożenia samodzielnej instalacji Openstack (pojedynczy węzeł).

Plik zostanie nazwany zgodnie z bieżącym znacznikiem czasu podczas generowania (dzień, miesiąc i rok).

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

4

Teraz edytuj plik odpowiedzi za pomocą swojego ulubionego edytora tekstu.

 vi 26.07.18.conf

i zastąp następujące parametry, aby dopasować je do poniższych wartości. W celu zachowania bezpieczeństwa zastąp odpowiednio pola haseł.

 CONFIG_NTP_SERVERS=0.ro.pool.ntp.org

5

 CONFIG_PROVISION_DEMO=n

6

 CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user

7

Dostęp do pulpitu OpenStack przez HTTP z włączonym SSL.

 CONFIG_HORIZON_SSL=y

8

Hasło root dla serwera MySQL.

 CONFIG_MARIADB_PW=mypassword1234

9

Po zakończeniu edycji zapisz i zamknij plik. Otwórz również plik konfiguracyjny serwera SSH i odkomentuj linię PermitRootLogin, usuwając przedni hashtag, jak pokazano na poniższym zrzucie ekranu.

 # vi /etc/ssh/sshd_config

10

Następnie uruchom ponownie usługę SSH, aby zmiany zostały uwzględnione.

 # systemctl restart sshd 

Start Openstack Installation Using Packstack Answer File

Na koniec uruchom proces instalacji Openstack poprzez plik odpowiedzi edytowany powyżej, wykonując poniższą składnię poleceń:

 # packstack --answer-file 13.04.16.conf

11

Po pomyślnym zakończeniu instalacji komponentów OpenStack, instalator wyświetli kilka linii z linkami do lokalnych pulpitów nawigacyjnych dla OpenStack i Nagios oraz wymagane poświadczenia skonfigurowane już powyżej w celu zalogowania się na obu panelach.

12

Poświadczenia te są również przechowywane pod twoim katalogiem domowym w pliku keystonerc_admin.

Jeśli z jakichś powodów proces instalacji kończy się błędem dotyczącym usługi httpd, otwórz plik /etc/httpd/conf.d/ssl.conf i upewnij się, że zakomentowałeś następującą linię, jak pokazano poniżej.

 #Listen 443 https

13

Następnie zrestartuj demona Apache, aby zastosować zmiany.

 # systemctl restart httpd.service

Uwaga: W przypadku, gdy nadal nie możesz przeglądać panelu Openstack na porcie 443 uruchom ponownie proces instalacji od początku tym samym poleceniem, które zostało wydane przy pierwszym wdrożeniu.

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

Zdalny dostęp do OpenStack Dashboard

Aby uzyskać dostęp do panelu OpenStack ze zdalnego hosta w sieci LAN, przejdź do adresu IP maszyny lub FQDN/dashboard poprzez protokół HTTPS.

Ponieważ używasz certyfikatu samopodpisanego przez niezaufany urząd certyfikacji, w przeglądarce powinien zostać wyświetlony błąd.

Zaakceptuj błąd i zaloguj się do dashboardu używając użytkownika admin i hasła ustawionego na parametrze CONFIG_KEYSTONE_ADMIN_PW z pliku odpowiedzi ustawionego powyżej.

 https://192.168.1.40/dashboard

14

15

Alternatywnie, jeśli zdecydowałeś się na instalację komponentu Nagios dla OpenStack, możesz wejść na stronę panelu Nagios pod następującym adresem URI i zalogować się używając poświadczeń ustawionych w pliku odpowiedzi.

 https://192.168.1.40/nagios

16

17

Konfiguracja

OpenStack jest zbiorem komponentów projektu open source, które umożliwiają konfigurowanie usług w chmurze. Każdy komponent używa podobnych technik konfiguracji i wspólnego szkieletu dla opcji pliku INI.

W tym przewodniku zebrano wiele referencji i opcji konfiguracyjnych dla następujących komponentów OpenStack:

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

OpenStack używa formatu pliku INI dla plików konfiguracyjnych. Plik INI jest prostym plikiem tekstowym, który określa opcje jako pary klucz=wartość, pogrupowane w sekcje. Sekcja DEFAULT zawiera większość opcji konfiguracyjnych. Linie rozpoczynające się od znaku hash (#) są liniami komentarza. Na przykład:

 # 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

Opcje mogą mieć różne typy wartości. Komentarze w przykładowych plikach konfiguracyjnych zawsze o tym wspominają a tabele wymieniają wartość Opt jako pierwszy element jak (BoolOpt) Toggle…. Następujące typy są używane przez OpenStack:

wartość boolowska (BoolOpt)

Włącza lub wyłącza opcję. Dozwolone wartości to true i false.

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

wartość zmiennoprzecinkowa (FloatOpt)

Liczba zmiennoprzecinkowa, taka jak 0,25 lub 1000.

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

wartość całkowita (IntOpt)

Liczba całkowita to liczba bez składników ułamkowych, taka jak 0 lub 42.

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

Adres IP (IPOpt)

Adres IPv4 lub IPv6.

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

Pary klucz-wartość (DictOpt)

Pary klucz-wartość, znane również jako dyktafon. Pary klucz-wartość są oddzielone przecinkami, a dwukropek jest używany do oddzielenia klucza i wartości. Przykład: klucz1:wartość1,klucz2:wartość2.

 # 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

lista wartości (ListOpt)

Przedstawia wartości innych typów, oddzielone przecinkami. Przykładowo, poniższy tekst ustawia allowed_rpc_exception_modules na listę zawierającą cztery elementy oslo.messaging.exceptions, nova.exception, cinder.exception, oraz 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)

Opcja multi-valued jest wartością łańcuchową i może być podana więcej niż raz, wszystkie wartości zostaną użyte.

 # 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)

Numer portu TCP/IP. Porty mogą mieć zakres od 1 do 65535.

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

wartość łańcuchowa (StrOpt)

Stresy mogą być opcjonalnie ujęte w pojedyncze lub podwójne cudzysłowy.

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

Sekcje

Opcje konfiguracyjne są pogrupowane według sekcji. Większość plików konfiguracyjnych obsługuje co najmniej następujące sekcje:

Zawierają większość opcji konfiguracyjnych. Jeśli dokumentacja dla opcji konfiguracyjnej nie określa jej sekcji, przyjmij, że pojawia się ona w tej sekcji.

Opcje konfiguracyjne dla bazy danych, która przechowuje stan usługi OpenStack.

Zastępowanie

Plik konfiguracyjny obsługuje zastępowanie zmiennych. Po ustawieniu opcji konfiguracyjnej można się do niej odwoływać w późniejszych wartościach konfiguracyjnych, jeśli poprzedzimy ją znakiem $, jak $OPTION.

Następujący przykład używa wartości rabbit_host i rabbit_port do zdefiniowania wartości opcji rabbit_hosts, w tym przypadku jako 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

Aby uniknąć podstawiania, użyj

$$, jest ono zastępowane pojedynczym $. Na przykład, jeśli twoje hasło DNS LDAP to $xkj432, określ je w następujący sposób:

 ldap_dns_password = $$xkj432

Kod używa łańcucha Pythona. Template.safe_substitute() do implementacji zastępowania zmiennych. Aby uzyskać więcej szczegółów na temat sposobu rozwiązywania problemu zastępowania zmiennych.

Whitespace

Aby zawrzeć whitespace w wartości konfiguracyjnej, użyj cytowanego łańcucha. Na przykład:

 ldap_dns_passsword='a password with spaces'

Definiowanie alternatywnej lokalizacji dla pliku konfiguracyjnego

Większość usług i klientów wiersza poleceń -manage ładuje plik konfiguracyjny. Aby zdefiniować alternatywną lokalizację dla pliku konfiguracyjnego, należy przekazać parametr –config-file CONFIG_FILE podczas uruchamiania usługi lub wywoływania polecenia -manage.

Podsumowanie

Zademonstrowaliśmy instalację OpenStack w systemach Red Hat, CentOS i Fedora Linux. Teraz możesz łatwo skonfigurować swoje własne środowisko chmury prywatnej na Alibaba Cloud Elastic Compute Service (ECS) za pomocą OpenStack.

.

Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.