Jak wdrożyć chmurę OpenStack za pomocą Juju?

15

Chciałbym uruchomić chmurę testową i przygotować się do ewentualnego wdrożenia 12.04. Trochę pomieszałem z UEC, ale znacznie trudniej było mi znaleźć coś pomocnego jako podkład dla nowego stosu. Istnieje ogólna dokumentacja na temat Diablo, ale w Ubuntu prawdopodobnie będzie już wiele przydatnych elementów, z którymi konkretny przewodnik może zaoszczędzić czas.

Ponadto, o ile bym tego chciał, mój budżet nie obejmuje 4-6 000 $ na uruchomienie małego klastra z obsługą Canonical.

Bryan Agee
źródło

Odpowiedzi:

17

Instalowanie OpenStack

Jeśli chcesz szybko rozpocząć pracę, przejdź tutaj:

Ta odpowiedź to bardziej szczegółowe spojrzenie na korzystanie z Juju z OpenStack.

Zakres

Platforma OpenStack jest potężna, a jej zastosowania różnorodne. Ta sekcja dokumentacji dotyczy przede wszystkim wdrażania „standardowego” systemu OpenStack z wykorzystaniem, między innymi, komponentów Canonical, takich jak MAAS, Juju i Ubuntu. W stosownych przypadkach zostaną wymienione inne metody i oprogramowanie.

Założenia

  1. Korzystanie z MAAS - najpierw postępuj zgodnie z tymi instrukcjami.
  2. Korzystanie z Juju
  3. Konfiguracja sieci lokalnej - w tym dokumencie założono, że masz odpowiednią konfigurację sieci lokalnej, w tym oddzielne interfejsy umożliwiające dostęp do chmury OpenStack. Idealne sieci są określone w [MAAS] [dokumentacji MAAS dla OpenStack].

Planowanie instalacji

Przed wdrożeniem jakichkolwiek usług bardzo przydatne jest dokonanie bilansu dostępnych zasobów i sposobu ich wykorzystania. OpenStack składa się z szeregu powiązanych ze sobą usług (Nova, Swift itp.), Z których każda ma różne wymagania dotyczące hostów. Na przykład usługa Swift, która zapewnia przechowywanie obiektów, ma inne wymagania niż usługa Nova, która zapewnia zasoby obliczeniowe.

Minimalne wymagania dla każdej usługi i zaleceń są określone w oficjalnym przewodniku operacyjnym OpenStack

Zalecana kompozycja węzłów do wdrażania OpenStack z MAAS i Juju polega na tym, że wszystkie węzły w systemie powinny być w stanie obsługiwać DOWOLNE usługi. Jest to najlepsza praktyka w zakresie niezawodności systemu, ponieważ ponieważ jeden fizyczny węzeł powinien ulec awarii, inny może zostać zmieniony, aby zajął jego miejsce. Dotyczy to oczywiście wszelkich wymagań sprzętowych, takich jak dodatkowe interfejsy sieciowe.

Jeśli ze względów ekonomicznych lub w inny sposób zdecydujesz się na użycie różnych konfiguracji sprzętu, powinieneś pamiętać, że Twoja zdolność do przezwyciężenia awarii sprzętu zostanie zmniejszona. Konieczne będzie również ukierunkowanie wdrożeń na określone węzły - patrz sekcja dokumentacji MAAS na temat znaczników .

Utwórz plik konfiguracyjny OpenStack

Będziemy używać uroków Juju do wdrażania części składowych OpenStack. Każdy urok zawiera wszystko, co jest potrzebne do skonfigurowania określonej usługi. Jednak poszczególne usługi mają wiele opcji konfiguracji, z których niektóre będziemy chcieli zmienić.

Aby to zadanie było łatwiejsze i bardziej powtarzalne, utworzymy osobny plik konfiguracyjny z odpowiednimi opcjami dla wszystkich usług. Jest to napisane w standardowym formacie YAML ( patrz www.yaml.org, jeśli nie jest ci to znane ).

Oto przykład openstack-config.yaml:

keystone:
  admin-password: openstack
  debug: 'true'
  log-level: DEBUG
nova-cloud-controller:
  network-manager: 'Neutron'
  quantum-security-groups: 'yes'
  neutron-external-network: Public_Network
nova-compute:
  enable-live-migration: 'True'
  migration-auth-type: "none"
  virt-type: kvm
  #virt-type: lxc
  enable-resize: 'True'
quantum-gateway:
  ext-port: 'eth1'
  plugin: ovs
glance:
  ceph-osd-replication-count: 3
cinder:
  block-device: None
  ceph-osd-replication-count: 3
  overwrite: "true"
  glance-api-version: 2
ceph:
  fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
  monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
  osd-devices: /dev/sdb
  osd-reformat: 'True'

W przypadku wszystkich usług możemy skonfigurować opcję openstack-originwskazywania źródła instalacji. W takim przypadku będziemy polegać na ustawieniach domyślnych, które wskażą odpowiednie źródła dla wersji Ubuntu 14.04 LTS Trusty. Dalsza konfiguracja każdej usługi jest wyjaśniona w tym dokumencie .

Inne konfiguracje

Możliwe są inne ustawienia i opcje konfiguracji dla wdrażania usług OpenStack. Są one szczegółowo opisane w dokumentacji poszczególnych uroków używanych przez Juju, i można je sprawdzić, odwiedzając internetowy sklep z urokami Juju i szukając uroków za pomocą pola wyszukiwania w lewym górnym rogu strony. ustawienia konfiguracji są następnie wyszczególnione w sekcji „Konfiguracja” na stronie głównej, jak pokazano:

wprowadź opis zdjęcia tutaj

Wdrażanie OpenStack z Juju

Teraz, gdy konfiguracja jest zdefiniowana, możemy użyć Juju do wdrożenia i powiązania usług.

Inicjalizacja Juju

Juju wymaga minimalnej ilości konfiguracji. Tutaj zakładamy, że został on już skonfigurowany do pracy z klastrem MAAS (więcej informacji na ten temat można znaleźć w [Przewodniku instalacji Juju] [juju_install].

Po pierwsze, musimy pobrać obrazy i narzędzia, których użyje Juju:

juju sync-tools --debug

Następnie możemy utworzyć instancję bootstrap:

juju bootstrap --upload-tools --debug

Używamy przełącznika narzędzi do przesyłania, aby korzystać z lokalnych wersji narzędzi, które właśnie pobraliśmy. Przełącznik debugowania da pełne wyjście, które może być przydatne. Proces ten może potrwać kilka minut, ponieważ Juju tworzy instancję i instaluje narzędzia. Po zakończeniu możesz sprawdzić status systemu za pomocą polecenia:

juju status

Powinno to zwrócić coś takiego:

environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.1.1
    dns-name: localhost
    instance-id: localhost
    series: trusty

Wdróż Charms OpenStack

Teraz, gdy węzeł ładowania Juju jest już uruchomiony i możemy uruchomić usługi wymagane do przeprowadzenia instalacji OpenStack. Aby poprawnie skonfigurować te usługi podczas ich wdrażania, wykorzystamy zdefiniowany wcześniej plik konfiguracyjny, przekazując go wraz z --configprzełącznikiem przy każdej komendzie wdrażania. Podaj nazwę i ścieżkę pliku konfiguracyjnego, jeśli jest inny.

Wdrażanie usług w poniższej kolejności jest przydatne, ale nie jest konieczne. Zalecane jest również otwarcie dodatkowego okna terminala i uruchomienie polecenia juju debug-log. Spowoduje to wyświetlenie dzienników wszystkich uruchomionych usług i może być przydatne do rozwiązywania problemów.

Zaleca się także juju statusokresowe uruchamianie polecenia, aby sprawdzić, czy każda usługa została zainstalowana i działa poprawnie. Juju automatycznie spróbuje pobrać najlepszą możliwą wersję uroku z internetowego sklepu z urokami. Jeśli instalujesz z sieci ograniczonej lub zamkniętej, możliwe jest wstępne pobranie wymaganych uroków. Zobacz [dokumentację uroków offline] [charms-offline].

juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3 
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw

Dodaj relacje między usługami OpenStack

Chociaż usługi są teraz wdrażane, nie są jeszcze połączone ze sobą. Każda usługa istnieje obecnie w izolacji. Używamy tego juju add-relation polecenia, aby uświadomić sobie nawzajem i skonfigurować odpowiednie połączenia i protokoły. O tę dodatkową konfigurację dbają same uroki.

Powinniśmy zacząć dodawać relacje między talizmanami, konfigurując usługę autoryzacji Keystone i jej bazę danych, ponieważ będą one potrzebne wielu innym połączeniom:

juju add-relation keystone mysql

Czekamy, aż relacja zostanie ustawiona. Po zakończeniu sprawdź go ze statusem juju:

juju status mysql
juju status keystone

Uregulowanie tej usługi może zająć kilka chwil. Chociaż z pewnością można nadal dodawać relacje (Juju zarządza kolejką oczekujących działań), może to przynieść efekt przeciwny do zamierzonego pod względem całkowitego czasu, ponieważ wiele relacji odnosi się do tych samych usług.

Konieczne są również następujące relacje:

juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone

Na koniec wynik statusu juju powinien pokazywać wszystkie relacje jako zakończone. Chmura OpenStack działa teraz, ale zanim będzie gotowa do użycia, należy ją wypełnić dodatkowymi składnikami.

Jorge Castro
źródło
Dzięki. URL insights.ubuntu.com/wp-content/uploads/UCD-latest.pdf wydaje się nie działać
Breno Leitão