Instancje (wirtualne maszyny) ================================ Tworzenie instancji ---------------------- **Instrukcja wideo dostępna na [dole strony](#instrukcja-wideo)** **KROK 1** Z ekranu **Project -> Compute- > Instances** należy kliknąć **LAUNCH INSTANCE**. ![pic1](images/Instancje_8_3.png) **KROK 2** W zakładce **Details** należy podać nazwę instancji, a także określić ile sztuk takich instancji ma zostać wykreowanych. Dodatkowo można ograniczyć występowanie/działanie instancji do konkretnej strefy dostępności, tzw. **Availability Zone** (więcej: patrz praktyczne uwagi). ![pic2](images/Instancje_9_1.png) ![pic3](images/Instancje_9_2.png) **KROK 3** W zakładce **Source** należy wybrać źródło bootowania. Wybór wartości Image pozwala na szybkie uruchomienie maszyny w jednym etapie używając tylko omawianego tu kreatora. Wybór wartości **Volume** jest bardziej uniwersalnym sposobem, wymaga on jednak uprzedniego utworzenia wolumenu. Patrz również poniżej w rozdziale **„Praktyczne uwagi”**. Warto również zaznaczyć opcję **NO** przy **„Delete Volume …”**, dzięki temu po usunięciu instancji wolumen będzie można ponownie wykorzystać. W przypadku wybrania **Image** jako źródła bootowania, w sekcji **Available** należy wybrać obraz systemu poprzez kliknięcie przycisku ze strzałką skierowaną w górę. ![pic4](images/Instancje_9_3.png) ![pic5](images/instancje-wirtualne-maszyny-tworzenie_5.png) ![pic6](images/Instancje_10_1_1.png) **KROK 4** W zakładce **Flavors** należy wybrać (poprzez kliknięcie przycisku z symbolem strzałki w górę) **flavor** – czyli kombinację liczby vCPU (rdzeni) oraz ilości pamięci operacyjnej RAM. ![pic7](images/Instancje_10_2.png) **KROK 5** W zakładce **Networks** można przypisać (poprzez kliknięcie przycisku z symbolem strzałki w górę) sieć. ![pic8](images/Instancje_11_1.png) **KROK 6** W zakładce **Network Ports** można przypisać port (poprzez kliknięcie przycisku z symbolem strzałki w górę). Aby pomyślnie zakończyć tworzenie instancji, jedna z zakładek sieciowych musi zostać uzupełniona: **Networks** lub **Network Ports**. ![pic9](images/Instancje_11_2.png) **KROK 7** W zakładce **Security Groups** należy wybrać pożądaną grupę zabezpieczeń. Domyślny stan zakładki: ![pic10](images/Instancje_12_1.png) Używając przycisków z symbolami strzałek należy przypisać pożądaną grupę zabezpieczeń: ![pic11](images/Instancje_12_2.png) ![pic12](images/Instancje_13_1.png) **KROK 8** W zakładce **Key Pair** można ustawić klucze **SSH**, jeśli życzeniem użytkownika jest logowanie do instancji w ten sposób. Należy wybrać wcześniej stworzony klucz lub utworzyć go uruchamiając **+ CREATE KEY PAIR** lub też importując swój własny klucz (**IMPORT KEY PAIR**). ![pic13](images/Instancje_13_2.png) **KROK 9** Zakładka **Configuration** daje możliwość customizacji skryptem. Jedno z praktycznych zastosować polega na ustawieniu hasła dla domyślnego użytkownika (patrz: praktyczne uwagi). ![pic14](images/Instancje_14_1.png) **KROK 10** Zakładki **Server Groups, Scheduler Hints** oraz **Metadata** niniejszy przewodnik zostawia do samodzielnej eksploracji bardzo zaawansowanym użytkownikom. Można je pominąć podczas tworzenia instancji. Instancja zostaje wykreowana po kliknięciu na przycisk **Launch Instance** i pojawia się na liście ekranu **Instances**. ![pic15](images/Instancje_14_2.png) Usuwanie instancji ---------------------- Instancję można usunąć uruchamiając akcję **DELETE INSTANCE** na wybranej instancji na liście ekranu **Project -> Compute -> Instances**. Większą liczbę instancji można usunąć zaznaczając instancje przeznaczone do usunięcia na liście a następnie kliknięcie przycisku **DELETE INSTANCES**. ![pic16](images/Instancje_14_3.png) Odtworzenie (recreate) maszyny wirtualnej ----------------------------------------- Aby odtworzyć maszynę wirtualną konieczne jest usunięcie instancji (bez usuwania wolumenu), a następnie utworzenie nowej instancji z użyciem tego samego wolumenu. **1. Usuwanie instancji** Wyświetlamy listę instancji (wybierając z menu pozycję **Compute/Instances**), klikamy na strzałkę w rozwijanym menu przy wybranej instancji i klikamy na pozycję **Terminate Instance**. **2. Ponowne utworzenie instancji** Przy wybranym wolumenie, klikamy na strzałkę w rozwijanym menu przy wybranym wolumenie i klikamy na pozycję **Launch as Instance**. W wyświetlonym oknie określamy nowe parametry maszyny wirtualnej. Zmiana parametrów RAM i vCPU ------------------------------- Parametry można zmienić poprzez zmianę **flavor’a**. Na ekranie **Project -> Compute -> Instances** należy wybrać akcję **RESIZE INSTANCE**. W kreatorze należy wybrać **nowy flavor** i zatwierdzić przyciskiem **RESIZE**. Na liście instancji w polu **TASK** pojawi się pasek stanu z informacją o zadaniu. Po wykonaniu należy kliknąć **CONFIRM RESIZE/MIGRATE**. ![pic17](images/Instancje_15_0.png) ![pic18](images/Instancje_15_1.png) ![pic19](images/Instancje_15_1_2.png) ![pic20](images/Instancje_15_2.png) Uruchomienie instancji z własnego obrazu ISO ---------------------------------------------- Do wykonania poniższych kroków wymagany jest plik openrc zawierający dane uwierzytelniające do interfejsów API usługi Atman Cloud. W przypadku uwierzytelniania SSO (poprzez portal **auth.atman.pl**) należy skonfigurować **[konto API](/SSO.md#konta-api)** oraz uzupełnić odpowiednie dane w pliku **openrc**. Aby zainstalować system z obrazu ISO, należy najpierw przesłać go do rejestru obrazów usługi Atman Cloud. Taką czynność można wykonać poprzez użycie klienta CLI openstack: ``openstack image create --private --disk-format iso --container-format bare --file /path/to/iso ImageName`` Kiedy obraz się utworzy kopiujemy jego ID: | Property | Value | |:---|:---| | **checksum** | e0a43cbb8b991735c1b38e7041019658 | | **container_format** | bare | | **created_at** | 2019-03-28T09:27:04Z | | **disk_format** | iso | | **id** | 3ecfe11c-309d-474d-b16c-1f98afb79d98 | | **min_disk** | 0 | | **min_ram** | 0 | | **name** | ImageName | | **owner** | 1f5c0xx | | **protected** | False | | **size** | 306184192 | | **status** | active | | **tags** | [] | | **updated_at** | 2019-03-28T09:27:18Z | | **virtual_size** | Not available | | **visibility** | private | Następnie tworzymy tymczasową instancję wskazując na ID obrazu: ``` nova boot \ --block-device source=image,id=3ecfe11c-309d-474d-b16c-1f98afb79d98,dest=volume,shutdown=preserve,size=1,bootindex=0,bus=ide,type=cdrom \ --block-device source=blank,dest=volume,size=10,shutdown=preserve,bootindex=1,type=disk,bus=vitrio \ --nic none \ --flavor m4.c2 \ InstanceName ``` Po uruchomieniu instancji możemy zainstalować system z ISO wykorzystując zakładkę **Console** w panelu Atman Cloud. Podczas instalacji jako dysk systemowy wybieramy wolumen **/dev/vda**. Kiedy instalacja zakończy się, usuwamy tymczasową instancję i uruchamiamy nową instancję z wolumenu, na którym zainstalowaliśmy wcześniej system. ![pic21](images/Uruchominie_instancji_z_wlasnego_obrazu_ISO.png) Utworzenie instancji z wolumenu na danym zasobie dyskowym ------------------------------------------------------------- Sposobem na tworzenie instancji na danym typie zasobu dyskowego jest utworzenie wolumenu z obrazu na danym typie storage i utworzenie instancji z wolumenu. Instancje z zasobami dyskowymi **8000 IOPS/15000 IOPS** mogą być utworzone na przykład według poniższego sposobu. Przechodzimy do zakładki **Project -> Compute -> Images**. Następnie w opcjach obrazu którego chcemy użyć do utworzenia instancji wybieramy **Create Volume**. ![pic22](images/instancje-wirtualne-maszyny-tworzenie_21.png) W okienku które się nam otworzy zmieniamy typ na **8000 IOPS** i klikamy **Create Volume**. ![pic23](images/instancje-wirtualne-maszyny-tworzenie_22.png) W kolejnym kroku przechodzimy do zakładki **Project -> Volumes -> Volumes**. Tam odnajdujemy nasz wolumen i w opcjach wybieramy **LAUNCH AS INSTANCE**. ![pic24](images/instancje-wirtualne-maszyny-tworzenie_23.png) Otworzy nam się okienko konfiguracji instancji. Dalsza konfiguracja instancji jest identyczna jak w przypadku zasobów dyskowych **2000 IOPS** z jednym wyjątkiem. W zakładce **Source** zmieniamy opcje **Select Boot Source** na **Volume**. ![pic25](images/instancje-wirtualne-maszyny-tworzenie_24.png) Następnie z listy wybieramy nasz wolumen. ![pic26](images/instancje-wirtualne-maszyny-tworzenie_25.png) Następnie wypełniamy wymagane pola w pozostałych zakładkach i klikamy w ikonę **LAUNCH INSTANCE** w celu uruchomienia instancji. Opis stanów instancji ----------------------- Na liście instancji po prawej stronie ekranu **Project -> Compute -> Instances** użytkownik ma możliwość wykonania szeregu akcji dotyczących ich stanu. Poniższy opis przedstawia znaczenie stanów. | AKCJA | OPIS | | :------| :------| | **PAUSE INSTANCE** | Stan maszyny zapisywany jest w pamięci RAM. Instancja staje się nieaktywna | | **SUSPEND INSTANCE** | Wejście w stan podobny do hibernacji – stan instancji wraz z pamięcią zapisywany jest na dysku, RAM i rdzenie zostają zwolnione – można zaalokować do innych instancji. Instancja zostaje wyłączona | | **RESUME INSTANCE** | Powrót do stanu sprzed akcji SUSPEND lub PAUSE. Instancja zostaje wyłączona, zasoby zwolnione. Stan instancji nie jest zapisywany | | **UNSHELVE INSTANCE** | Tworzy i bootuje instancję od nowa | | **LOCK INSTANCE** | Instancja jest zabezpieczona przed usunięciem | | **UNLOCK INSTANCE** | Instancja jest podatna na usunięcie | | **SOFT** | HARD REBOOT Ponowne uruchomienie instancji | | **SHUT OFF INSTANCE** | Wyłączenie instancji | | **START INSTANCE** | Włączenie instancji | Więcej informacji o stanach maszyn wirtualnych można znaleźć w dokumentacji OpenStack po kliknięciu na link: https://docs.openstack.org/nova/latest/reference/vm-states.html Stany instancji w rozliczeniu w modelu PAYG (Pay-As-You-Go) ------------------------------------------------------------- W modelu rozliczenia PAYG koszty związane konsumpcją zasobów w postaci **vCPU** i **RAM** generowane są za każdą rozpoczętą godzinę pracy maszyny wirtualnej w poniższych stanach: - active, - stopped, - paused, - resized, - suspended, - migrating. Niezależnie od stanu maszyny wirtualnej koszty przestrzeni storage na dyskach blokowych jest naliczany w całym czasie istnienia maszyny wirtualnej. Aby uniknąć kosztów związanych z wykorzystaniem vCPU i RAM kiedy maszyna wirtualna nie będzie używana należy przełączyć maszynę wirtualną w stan **SHELVED**. ![pic27](images/Shelve_VM_PAYG.png) Praktyczne uwagi -------------------- **UWAGA 1.** Autogenerowanie hasła root. Hasło administratora generowane jest automatycznie. Aby hasło zostało nadane i było widoczne w logach instancji należy pamiętać, że w przypadku używania siecie wewnętrznej, musi być włączone **DHCP** – patrz również rozdział „Sieci wewnętrzne”. **UWAGA 2.** Strefy dostępności. Platforma chmurowa w zakresie węzłów obliczeniowych podzielona jest na trzy strefy (**AZ – Availability Zones**). Każda strefa stanowi osobną grupę szaf węzłów (fizycznych serwerów). Ograniczając instancję do danej strefy użytkownik ma pewność, że instancja (wirtualna maszyna) nie znajdzie się w innej strefie. Taka funkcjonalność umożliwia użytkownikowi – jeśli jest to potrzebne – dodatkową separację od siebie grup instancji. **UWAGA 3.** Źródło bootowania. Wybór wartości **Image** w źródle bootowania domyślnie stosuje typ przestrzeni dyskowej **2000 IOPS**. Jeśli użytkownik potrzebuje uruchomić instancję z dyskiem systemowym o typie **8000 IOPS**, powinien uprzednio utworzyć wolumen. Wybór wartości **Volume** jest bardziej uniwersalnym sposobem – na etapie tworzenia wolumenu można jawnie określić typ: **2000 IOPS** lub **8000 IOPS** (lub **15000 IOPS** jeśli ten typ jest dostępny w środowisku użytkownika). **UWAGA 4.** Customization Script. Dla systemów operacyjnych Linux można w łatwy sposób wygenerować przy tworzeniu maszyny samodzielnie określone hasło dla domyślnego użytkownika. W przypadku systemu **Linux Ubuntu** domyślnym użytkownikiem jest **ubuntu**, dla systemu **Linux CentOS** – użytkownik **centos**. W polu **Customization Script** należy wpisać: ``` #cloud-config password: mysecret chpasswd: { expire: False } ssh_pwauth: True ``` W przypadku systemu Linux Debian należy takiego użytkownika stworzyć – tu: debian. W polu **Customization Script** należy wpisać: ``` #cloud-config password: mysecret ssh_pwauth: True chpasswd: { expire: False } system_info: default_user:     name: debian     lock_passwd: true     sudo: ["ALL=(ALL) NOPASSWD:ALL"]     shell: /bin/bash ``` Instrukcja wideo ------------------- [![Watch the video](https://img.youtube.com/vi/9i5VUSfif0w/maxresdefault.jpg)](https://youtu.be/9i5VUSfif0w) ### [Otwórz ten film na YouTube](https://youtu.be/9i5VUSfif0w)