Módosítások

Cloud for Education vazlat 2021 szerkesztes alatt

67 096 bájt hozzáadva, 2021. január 8., 15:01
Új oldal, tartalma: „===Mi a VPS, Cloud VPS és az OpenStack?=== ====Mi a VPS?==== Nagy teljesítményű fizikai szervergépeket több kisebb, önálló elkülönített erőforrásokkal r…”
===Mi a VPS, Cloud VPS és az OpenStack?===

====Mi a VPS?====

Nagy teljesítményű fizikai szervergépeket több kisebb, önálló elkülönített erőforrásokkal rendelkező
virtuális szerverre osztják fel.
A VPS szerverek rendelkeznek az önálló szerverek minden előnyével, azonban a fizikai szervereknél
sokkal költséghatékonyabbak, mivel azonos energia felvétel.


[[Fájl:VPS.jpg|250px|VPS ábra]]

====Mi a Cloud VPS?====

A szerverek nem egy dedikált gépen futnak önállóan hanem egy nagyobb számítási és tárhely
kapacitással rendelkező szervercsoportban.

====Mi az OpenStack?====

Az OpenStack egy felhőalapú alapú, infrastruktúra szolgáltatás projekt amelyet az Apache Licenc alatt bocsájtanak ki.


[[Fájl:Openstack OS.jpg|350px|OpenStack OS]]



[[Fájl:Openstack architecture.jpg|350px|Openstack architecture]]


== Elérhetőség ==

A szolgáltatás elérési helye https://c4e.niif.hu

== Karbantartások ==

A C4E szolgáltatást nyújtó gépekre az alábbi ütemezés szerint kerülnek telepítésre a frissítések:

Minden hónap '''második hétfőjén''' napközben (délelőtt 10 órától) megkezdődik a rendszer vezérlő gépeinek frissítése (adatbázis, vezérlő gépek, terheléselosztó, hálózati node-ok)
A művelet során néhányszor 2-3 percre '''elérhetetlen lehet a webfelület''', illetve a hálózati csomópontok újraindításának következtében néhányszor 1-2 percre a '''Smart''' hálózatok elérése akadozhat, amíg a tartalék irány működésbe nem lép.

Minden hónap '''második hétfőjén''' este egy második frissítési ciklus következik az alábbiak szerint:

* Páratlan hónapokban a '''Compute''' gépek kerülnek frissítésre, ami azzal jár, hogy futó virtuális gépeket migrálásra kerülnek a fizikai gépekről. A folyamat során néhányszor 1 percre a futó virtuális erőforrások elérhetetlenek lehetnek, illetve folyamatosan íródó memóriájú gépeknél előfordul, hogy csak a virtuális gép leállításával/elindításával lesz sikeres a migráció.

** A több zónás működésnek köszönhetően, egyidőben csak egy zónába tartozó virtuális gépeket érintenek a fent említett esetleges rövid kimaradások, mivel a zónákhoz tartozó erőforrások frissítése külön történik!

* Páros hónapokban a diszk alrendszert '''(CEPH)''' frissül. Ilyenkor a háttérben '''adatszinkronizáció zajlik''', ami '''lassíthat egyes IO kéréseket''', de a felhasználók felé ez a művelet eddigi tapasztalatok alapján többnyire transzparens.

==Ismertető==

===C4E OpenStack===

OpenStack verzió: ROCKY
OpenStack hivatalos oldala: https://www.openstack.org/

Videó:
22 perces ismertető, ami az NWS 2016-on hangzott el. http://videotorium.hu/hu/recordings/details/13396,Cloud4Education_-_Kezdo_lepese

===Régiók - Zónák===

'''Mit is jelent a régió?'''

Önálló adatközpont, együttes telephely. A régiók egymástól több kilométeres távolságban helyezkednek el.
Más régiókat érintő hiba esetén is működéképes.

'''RegioOne: Budapest - WDC'''

'''RegionTwo: Budapest - VH - Invitech'''

Mindkét fenti régióban elérhető 2-2 zóna: "Zone1" és "Zone2"

'''Fontos:'''

* belépés után minden esetben a kiválaszott Projekt RegioOne-ben található adatai jelennek meg,
* a kulcs vagy image csak abban a régióban érhető el ahová feltölöttük,
* RegioOne illetve RegionTwo esetén az API használathoz mind a kettő régióból szükséges letölteni a OpenStack RC file-t,
* beállított limitek (pl. RAM növelés) nem egyeznek meg a Régiókban. A módosítást mind a két régióban szükséges elvégezni,

==== Régió kiválasztása ====

A régiók közötti váltás a C4E Dashboard felületén:

A KIFÜ és C4E melletti található Projekt - Régió-ra kattintva van rá lehetőség.

[[Fájl:Region választása.jpg|400px|Region választása a dashboard felületen]]

===Zónás kialakítás - Availability zone (AZ)===

Az eszközök pl. azonos telephelyen találhatóak, épületen belül azonban fizikálisan elkülönítve vannak egymástól.

'''Availability zone kiválasztása - Instance létrehozás esetén'''

A Detailsrésznél tudjuk megtenni, hogy a korábban kiválasztott régióban a virtuális gépünk melyik Zónában kerüljön létrehozásra.


[[Fájl:Launch instance 1.jpg|655px]]

'''Availability zone kiválasztása - Volume esetén'''

Volumes -> Volumes -> Availability Zone


[[Fájl:Volume AZ.jpg|655px|]]

* Amennyiben nem látjuk valamelyik zónát akkor előfordulhat, hogy az adott régióban nem elérhető vagy nincs jogosultságunk

===Igényelhető virtuális erőforrás-csomagok (flavor)===

{| class="wikitable"
|-
! Flavor name !! VCPUs !! RAM !! Root Disk
|-
| std1.micro || 1 || 1 GB || 40 GB
|-
| std1.small || 1 || 2 GB || 40 GB
|-
| std1.medium || 2 || 4 GB || 40 GB
|-
| std1.large || 4 || 8 GB || 40 GB
|-
| std1.xlarge || 8 || 16 GB || 40 GB
|-
| mem1.medium || 1 || 4 GB || 40 GB
|-
| mem1.large || 2 || 8 GB || 40 GB
|-
| mem1.xlarge || 4 || 16 GB || 40 GB
|-
| mem1.2xlarge || 8 || 32 GB || 40 GB
|}
A táblázatban található '''root''' lemezek átméretezésére a virtuális gép létrehozásakor lehetőség van

===C4E felépítése, elérhető diszk típusok===

[[Fájl:C4E felépítése.jpg|650px|C4E felépítése, elérhető lemez típusok]]

==Felhasználói felület (Dashboard) ==

[[File:dashboard_overview.jpg|665px|Dashboard]]

Bejelentkezés után a projekthez tartozó kvóta használtsága látható, ezen kvóták szabályozása admin felhasználóval tehető meg. A használtság áttekintésén felül lehetőség van arra, hogy a felhasználó lekérdezze egy adott periódus alatt használt vCPU, Disk és RAM mennyiségét, valamint ezek az információk letölthetők excel táblázat formájában is. A bal oldali menüstruktúra több részből tevődik össze, amelyből a két legfontosabb a Project fül alatt talákható „Compute” és a „Network” opció. A „Compute” menüpont alatt találhatók azok a funkciók, amelyek ahhoz szükségesek, hogy virtuális gépeket tudjunk igénybe venni és az ehhez tartozó adminisztratív teendőinket is itt tudjuk elvégezni. A „Network” menüpont alatt kezelhetjük a virtuális gépeinkhez szükséges hálózatokat. Itt hozhatunk létre például virtuális routereket, hálózatokat, valamint adminisztrálhatjuk őket. A következőkben bemutatásra kerül, hogyan tud egy felhasználó néhány kattintás segítségével egy lemezképfájlt feltölteni, majd a képfájlból virtuális gépet létrehozni, valamint a rendelkezésre álló funkciókat igénybe venni.

===Új image feltöltés===

A virtuális gép létrehozásához szükség van lemezképfájlra, amelyet egy működő http url-ről könnyedén letölthetünk a „Compute” menüpont alatt található „Images” lehetőség használatával, vagy használhatjuk az előre feltöltött image-eket, amelyeket az admin jogosultságú felhasználók biztosítanak számunkra. Az „images” lehetőséget választva látható a rendelkezésre álló lemezképfájlok listája. A jobb felső sarokban a „Create Image” lehetőséget választva készíthetünk lemezképet. Az alábbi példa egy Ubuntu 18.04 (Bionic) verziójú lemezkép letöltését szemlélteti.

[[File: Upload_image.png |724px|Image készítés]]

A fenti ábrán látható módon, néhány szükséges információt meg kell adni, ilyenek például:
* Név
* Lemezképfájl helye: A feltölteni kívánt lemezképfájl internetes elérhetősége url-ről történő feltöltés esetén
* Format: például QCOW2 – QEMU Emulator

Fontos: Kizárólag a saját projektek alá van jogosultsága a felhasználóknak lemezképfájlokat feltölteni!

=====Mindenki számára elérhető Image-ek* (Forrás: https://docs.openstack.org/image-guide/obtain-images.html)=====
{| class="wikitable" border="1"
|-
| Operációs Rendszer
| Bejelentkezési név
| Minimum diszk méret
|-
| Ubuntu 14.04 Trusty Tahr
| ubuntu
| 5 GB
|-
| Ubuntu 16.04 Xenial
| ubuntu
| 5 GB
|-
| CentOS 6
| centos
| 8 GB
|-
| CentOS 7
| centos
| 8 GB
|-
| Debian 8.3
| debian
| 5 GB
|-
| CoreOS
| core
| 10GB
|-
| Fedora 23
| fedora
| 5 GB
|-
| Windows 7 Pro SP1
| setupuser/Qwer1234
| 17 GB

|-
|}

* Minden Linux alapú image-ből készített virtuális gépnél az alapértelmezett felhasználó jelszó nélkül sudo képes!

=== Kulcspár létrehozása/publikus kulcs feltöltése ===

A „Compute” menüpont alatt található "Key Pairs" lehetőséget választva hozzáadhatunk saját kulcspárokat, így a neutron szerverek által futtatott metadata szolgáltatás eljuttatja a publikus kulcsunkat a létrehozott virtuális gépre és a privát kulcsunkkal könnyedén tudunk autentikálni a létrehozott gépeken. Ehhez válasszuk a hozzáadás lehetőséget és adjuk meg a publikus kulcsunkat a következő ábrán látható módon.



'''Fontos''': Bizonyos cloud képfájlok esetében kulcs használata szükséges!

===Hálózati típusok===
Az általunk megépített rendszerben végül két fajta hálózat kapott helyet:
* Az egyik típus, amit Flat néven kereszteltünk el. Ennek lényege, hogy a létrehozott virtuális gépek egy előre meghatározott publikus IP tartományból DHCP segítségével felvesznek egy címet, majd a csomagok haladásának iránya közvetlenül a compute gépek felé történik, ezzel nem terhelve a network gépeket.
** <small>A '''Flat1''' névre keresztelt hálózathoz tartozó szabad IPv4 címek száma '''nagyon kevés''', ezért kérjük a felhasználóinkat, hogy lehetőség szerint, amennyiben FLAT típusú hálózatot szeretnének hozzáadni az újonnan létrehozott virtuális gépekhez, a '''Flat2 és Flat3''' nevű hálózatot válasszák. Megértésüket és együttműködésüket köszönjük!</small>
* A másik hálózati típus, amely az Smart nevet kapta. Ez a hálózati típus nagyban különbözik az előző megoldástól, mivel ennél a típusnál a felhasználóknak lehetőségük van egy, vagy akár több privát hálózat, valamint egy vagy több ezekhez tartozó virtuális router létrehozására. A virtuális router-hez lehetőség van hozzárendelni IP címeket a privát, valamint egy publikus hálózatból is és ennek következtében a virtuális gépek forgalmában egy úgynevezett hálózati címfordítás történik. Ennek előnye az előző megoldással szemben, hogy kevésbé IP cím pazarló a publikus címek tekintetében, valamint a neutron funkciójának köszönhetően képes több network gép között tartalékolt lenni.

Az Flat típusú hálózat felvételére kizárólag admin jogosultságú felhasználónak van lehetősége két féle módon. Az egyik lehetőség, hogy a létrehozott Flat hálózat shared típusú, vagyis megosztott hálózat, ami azt jelenti, hogy a hálózat minden projekt számára látható. A másik lehetőség, hogy a létrehozott hálózatot nem osztjuk meg másik projekttel, azonban hozzárendeljük egy bizonyos projekthez, ezzel garantálva, hogy egy IP cím tartományt csak egy projekt használ kizárólag.

Az Smart hálózat és egy hozzá tartozó virtuális router felvételét az alábbiakban mutatjuk be.

====External (L3) hálózat létrehozása====
Segédlet L3 (SMART) hálózat létrehozásához az alábbi oldalon tekinthető meg:

[[Cloud for Education/network l3|L3 hálózat létrehozása]]

====Router létrehozása és Interfészek hozzáadása====

A hálózat sikeres elkészítése után szükség van egy virtuális router létrehozására, amelyen keresztül fog a hálózati címfordítás történni. A router létrehozása a következő képeken látható

[[File:Create_router.png|727px|Router létrehozás]]



A Virtuális router létrehozásánál az „External Network”, azaz a külső hálózatok listájánál a rendelkezésre álló Smart hálózatok közül van lehetőség választani. Miután ez megtörtént, a router-hez szükség van egy másik interfész hozzáadására is, az előzőleg létrehozott belső hálózatból. Ennek hozzáadásához a „Routers” menüpontot választva, a forgalomirányítók listájából válasszuk ki az előbbiekben létrehozott „Internal-Router”-t, majd az „Interfaces” fülön az „Add Interface” lehetőséget választva, adjunk hozzá egy interfészt a következő ábrán látható módon.

[[File:Add_if.png|723px|Router létrehozás]]

====Security group-ok====

A virtuális gépek eléréséhez szükség van tűzfalszabályok definiálására, amelyre a „Security Groups” fülön van lehetőség. Alapértelmezetten egy „Default” security group jön létre, amelyben a következő forgalmak vannak alapértelmezetten engedélyezve:
* Bejövő forgalom esetén: Kizárólag az azonos Security Group-ban elhelyezett virtuális gépekről érkező forgalmak
* Kimenő forgalom esetén: Minden forgalom engedélyezve van

A lenti példa szemlélteti, hogy hogyan engedélyezhetjük az SSH és ICMP forgalmakat minden külső hálózatból:

[[File:Add_rule1.png|723px|Szabály létrehozása]]

[[File:Add_rule2.png|723px|Szabály létrehozása]]

[[File:Sec_grp.png|723px|Szabály létrehozása]]

Természetesen nem kötelező a Default security group-ot módosítani, létrehozható másik szabályrendszer is, és hozzárendelhető akár több csoport is egy virtuális géphez. A szabályok hozzáadásával lehetőség van a gép távoli elérésére a megadott protokollon keresztül.

==Load Balancer as a Service (LBaaS)==
A C4E az "OpenStack Octavia" alapú LoadBalancer-t kínálja a felhasználóknak, HAProxy backenddel.
Az esetleges titkosított kapcsolatok terminálásakor a "Barbican" tanúsítvány manager eszköz biztosítja a privát kulcsok biztonságos tárolását.

A terheléselosztó konfigurációs beállításai két fajta módon tehető meg:

1. Horizon grafikus felületen a NETWORK menüpont alatt,

2. CLI használatával, amelyhez a standard OpenStack CLI eszközön felül az alábbi csomagok telepítése is szükséges.

(Debian/Ubuntu rendszeren)
<pre>$ apt install python-barbicanclient python3-octaviaclient</pre>

[[Cloud for Education#C4E_.28Openstack.29_Publikus_API|Általános CLI használati információk]]

'''Rövid ismertető:'''

[[File: Octavia-component-overview.jpg |724px|Octavia component overview]]

Az Octavia LBaaS rendszer az alábbi főbb komponensekből áll:
* Amphorae: Különálló virtuális gépek, amik egy Ubuntu alapú Amphora image-ből példányosodnak, mikor a felhasználó új terheléselosztót hoz létre.
** A sablon image-ből létrehozott virtuális gépek nem számítanak bele a felhasználói kvótába, azok flavor-je specifikus, belépni rájuk a felhasználó nem tud.
* Octavia&Barbican API
* Controller Worker (az API kérések alapján vezérli a háttérkomponenseket)
* Health Manager (figyeli a már létrehozott "Amphorae" virtuális gépeket, és azok állapotát, hiba esetén failover műveleteket hajt végre)
* Housekeeping Manager (a hibás/törölt maradványok eltávolításáért felel)
* Driver Agent (információkat fogad az egyes amphora példányokon futó Haproxy drivertől)

A fentiek közül a felhasználónak csupán az API-val kell kommunikálnia, akár a Horizon felületén, akár a CLI-ből szeretné létrehozni és managelni a LoadBalancer-t.

'''Segédlet a létrehozáshoz példákkal illusztrálva:'''
* Példa [[#LoadBalancer beállítása |LoadBalancer beállítása GUI-n keresztül]]
* Példa [[Cloud for Education/LBaaS cli|CLI]] használatával

'''Működés/Hibatűrés:'''

A rendszer alapvető elosztottsága miatt nincs központi "leállás", minden egyes terheléselosztó pont annyira stabil, mint a C4E-ben futó többi virtuális gép. Alapvetően egy adott projekt egy adott terheléselosztójához tartozó amphora image hibája (virtuális gép leáll, lefagy) esetén a Health Managerre hagyatkozunk.

A gép újraindításán túl akár egy '''új amphorae virtuális gép'''et is létre tud hozni a háttérben, és a már '''meglévő konfiguráció'''t alkalmazni rá.
Arra azonban figyelni kell, hogy egy újraindítás, vagy egy új image létrehozása néhány perces kiesést jelenthet az adott projekthez tartozó terheléselosztó szolgáltatásban, de ilyenre alapvetően nem számítunk.

Fontos, hogy egy korábbi tervezett leállításkor (ahol kézzel többször leállítottuk a már meglévő terheléselosztókat) a Health Manager sajnálatos módon nem tudta a többszöri leállítást és újraindítást (egymásra futva) megfelelően kezelni.
Itt a karbantartás végén adminisztrátori beavatkozásra volt szükség, kézzel kellett failovert kérni minden terheléselosztóra.
Erre a forgatókönyvre se számítunk üzemszerű használat mellett (maximum egy esetleges tervezett leálláskor, nem várt komolyabb hiba javításakor) de erre minden esetben nagy figyelmet fordítanak a karbantartást/javítást végző kollégák.

'''Amennyiben beragadt/hibás terheléselosztót észlelnek, kérjük forduljanak ügyfélszolgálatunkhoz!'''

'''Terheléselosztó törlése:'''

Sajnálatos módon előfordulhat, hogy egy-egy terheléselosztó nem törölhető és hibaüzenet figyelmeztet erre. ('''CLI-n van rá force opció!''')

Ennek a megoldása, hogy "szét kell szedni" a terheléselosztót, amelyhez a következő lépésekre van szükség:
* törölni kell a pool-t, a listener-t, a monitort
* majd végül magát a terheléselosztót

==Firewall-as-a-Service (FWaaS)==

Az FWaaS funkció jelenleg nem elérhető.

==Lemez típusok==

{| class="wikitable" border="1"
|-
| Lemez típus
| Sebesség
| Méret
| Technológia
| Javasolt használat
|-
| SDS-Nearline
| +
| +++
| Skálázódó szoftveres tároló
| Tömeges adattárolás, alacsony kihasználtságú VM lemeze.
|-
| SDS-SAS
| ++
| ++
| Skálázódó szoftveres tároló
| Általános célú adattárolás, változó adatok, normál kihasználtságú VM lemeze.
|-
| SAN-Nearline
| +
| +++
| Klasszikus SAN storage
| Tömeges adattárolás, alacsony kihasználtságú VM lemeze.
|-
| SAN-SAS
| ++
| ++
| Klasszikus SAN storage
| Általános célú adattárolás, változó adatok, normál kihasználtságú VM lemeze.
|-
| SAN-SSD
| +++
| +
| Klasszikus SAN storage
| Gyakran változó adatok, magas kihasználtságú VM lemeze.
|-

|}


==Virtuális gépek kezelése==

===Snapshot létrehozása/indítás snapshotból===

További lehetőség a létrehozott virtuális géppel kapcsolatban, hogy bármikor készíthetünk róla egy úgynevezett pillanatképet, amelyből később létrehozhatunk egy másik virtuális gépet, folytatva ott a munkát, ahol a pillanatkép készült, a régi gépet pedig leállíthatjuk, vagy törölhetjük. Ehhez a már ismert „Compute” menüpont alatt válasszuk a „Volume” lehetőséget. A kilistázott Volume-ok között válasszuk ki a megfelelőt, majd az „Actions” szekcióban található legördülő menüből válasszuk a „Create Snapshot” lehetőséget. Az ábrán látható módon adjunk neki egy nevet, majd készítsük el a pillanatképet.

[[File:Create_snapshot1.png|723px|Snapshot létrehozás]]


Az elkészült pillanatképből készítsünk egy újabb virtuális gépet, a már ismert módon, azzal a különbséggel, hogy a gépet ezúttal ne image-ből, hanem snapshot-ból indítsuk.

[[File:Create_snapshot2.png|724px|Snapshot létrehozás]]

==="Extrém" diszkigény kielégítése===

Előfordul, hogy valamilyen projekthez nagyobb (TB-os nagyságrendű) területre van szükség, mint amit a kvóta megenged. Habár a kvóta növelésével könnyen orvosolhatnánk egyes felhasználók helyigényét, ezt sajnos <big>nem áll módunkban</big> megtenni, ugyanis azzal felborulna a kiosztott erőforrások közötti egyensúly (nem lenne terület, ahonnan bootoljanak az új gépek, a CPU/RAM pedig kihasználatlan maradna) valamint bizonyos szolgáltatások (jellemzően az adatbázis-szerverek) számára nem előnyös a CEPH alapú háttértár.

A fenti probléma megoldására lehetőséget teremtettünk a Storage szolgáltatásunkban résztvevő egyik Eternus tárolóeszköz integrálására a C4E alá. Ez azt jelenti, hogy a C4E rendszerében konfigurálásra került egy "iSCSI1" és "iSCSI2" nevű hálózat, melynek használatával közvetlen Layer2 kapcsolattal éri el az Eternus egységet a felhasználó virtuális számítógépe, szemben a többi tárolónkkal, amihez a publikus hálózaton keresztül (route-olva) lehet hozzáférni.

'''<big>FONTOS!''' Az "iSCSI1" és "iSCSI2" hálózat '''NEM nyújt publikus elérést''', azon keresztül '''csak az iSCSI targetek''' elérése lehetséges!</big>


'''<big>FONTOS! A fenti tároló nem önkiszolgáló! ''' A használathoz előbb '''[https://webform.niif.hu/content/storage-igenyles ''területigénylést kell benyújtani'']''', ahol be kell jelölni a ''' "A terület(ek)re a C4E szolgáltatás keretében használt virtuális gépe(i)mről kívánok csatlakozni!"''' opciót a második oldalon, majd a '''pozitív elbírálás után''' a megadott paraméterekkel lehet csatlakozni a tárolóhoz!</big>



==== Csatlakozás Linux alapú operációs rendszer alól ====


===== Óvintézkedés! =====

Sajnos az iSCSI jelenléte boot időben előfordul, hogy a virtuális gépet megállítja a boot során. Ez alapból nem lenne probléma, viszont a sablon image-ek alapértelmezetten egy read only konzolra küldik az emergency shell kimenetét, amin nem lehet módosításokat végezni.

<big>'''FONTOS!''' Az esetleges konfigurációs hibákból adódó hibás virtuális gépek javításában '''NEM tudunk''' segíteni, az esetleges adatvesztésért felelősséget nem vállalunk!</big>

A fentiekből kifolyólag célszerű átállítani az extlinux rendszerbetöltőt az iSCSI-t használó gépeken az alábbiak szerint:

* Az eredeti állomány:
<pre>
debian@iscsiteszt-5:~$ cat /extlinux.conf
default linux
timeout 1
label linux
kernel boot/vmlinuz-3.16.0-4-amd64
append initrd=boot/initrd.img-3.16.0-4-amd64 root=/dev/vda1 console=tty0 console=ttyS0,115200 ro quiet
</pre>

* Átírás után (az utolsó sor végén '''helyet cserél''' a két console paraméter, és a '''tty0-ból tty1 lesz'''):

<pre>
debian@iscsiteszt-5:~$ cat /extlinux.conf
default linux
timeout 1
label linux
kernel boot/vmlinuz-3.16.0-4-amd64
append initrd=boot/initrd.img-3.16.0-4-amd64 root=/dev/vda1 console=ttyS0,115200 console=tty1 ro quiet
</pre>

Ezen módosítás azonban több ismert hátránnyal jár:

* Nem lesz elérhető a boot során keletkező read-only konzolkimenet (bootidőben persze látszik a VNC konzolon)
* Firefox és Chrome újabb verziói alatt problémák lehetnek a VNC konzol elérésével/válaszidejével (ez sajnos egy fejlesztők által ismert, de még nem javított hiba)

===== Előkészületek =====
* Konfigurálni kell az interfészeket
Ez az Debian base image-nél alapból konfigurálva van az alábbi módon:
<pre>
root@iscsiteszt:/home/debian# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface auto lo iface lo inet loopback

# The normal eth0
auto eth0
iface eth0 inet dhcp

# Maybe the VM has 2 NICs?
allow-hotplug eth1
iface eth1 inet dhcp

# Maybe the VM has 3 NICs?
allow-hotplug eth2
iface eth2 inet dhcp
</pre>

Ennek hatására az eth1 és eth2 interfész címei:
<pre>
root@iscsiteszt:/home/debian# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:f0:84:6d brd ff:ff:ff:ff:ff:ff
inet 193.224.22.182/24 brd 193.224.22.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fef0:846d/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:17:05:1e brd ff:ff:ff:ff:ff:ff
inet 192.168.168.53/23 brd 192.168.169.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe17:51e/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:f1:ba:0a brd ff:ff:ff:ff:ff:ff
inet 192.168.170.51/23 brd 192.168.171.255 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fef1:ba0a/64 scope link
valid_lft forever preferred_lft forever
</pre>

'''<big>FONTOS!''' Ezen interfészek akár statikus címhasználatra is konfigurálhatók, de a C4E biztonsági megoldásai miatt kizárólag '''a C4E felületén megjelenő IP címek''' esetén lesz képes csomagot forgalmazni a virtuális gép a tároló felé! </big>

* Csomagtelepítés (Debian alapú rendszeren)
<pre>apt-get install open-iscsi multipath-tools</pre>

* Multipath konfigurálása (Debian alatt létre kell hozni a fájlt)
<pre>
root@iscsiteszt:/home/debian# cat /etc/multipath.conf
devices {
device {
vendor "FUJITSU"
product "ETERNUS_DXL"
prio alua
path_grouping_policy group_by_prio
no_path_retry queue
failback immediate
}
}
</pre>

* Multipath daemon újraindítása
<pre>root@iscsiteszt:/home/debian# service multipath-tools restart</pre>

* iSCSI Initiator name konfigurálása (ezt meg kellett adni az igényléskor... természetesen most lehet módosítani az állományt, később viszont fontos az ott olvasható figyelmeztetés)
<pre>
root@iscsiteszt:/home/debian# cat /etc/iscsi/initiatorname.iscsi
## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator. The InitiatorName must be unique
## for each iSCSI initiator. Do NOT duplicate iSCSI InitiatorNames.
InitiatorName=iqn.2017-03.hu.niif.test:c4e
</pre>

* iSCSI daemon újraindítása
<pre>root@iscsiteszt:/home/debian# service open-iscsi restart</pre>


===== Targetek konfigurálása =====

====== The easy way ======
Egy letölthető bash szkript, ami megcsinál mindent: '''[[:File:Iscsi-site-admin-c4e.sh|iscsi-site-admin-c4e.sh]]'''

====== The hard way ======

A következő lépés az iSCSI targetekhez történő csatlakozás. (A leírásban az username és password paraméterek a felhasználót (initiatort, azaz a virtuális gépet) azonosító egyedi paraméterek, míg az username_in és password_in a Mutual CHAP (bidirectional) azonosításhoz használható (target-et, azaz magát az Eternus tárolót azonosító) paraméterek. (Az username_in, azaz a <target CHAP felhasználó> tipikusan "eternus"...)

Az alábbi parancsköteg jelszavait kell megfelelően lecserélni, majd a konzolra bemásolva csatlakozni a tárolóhoz:

<big>--- Target 001 ---</big>
<pre>
iscsiadm -m node -p 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -o new
iscsiadm -m node -p 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -o update -n node.session.auth.username -v <initiator CHAP felhasználó>
iscsiadm -m node -P 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -o update -n node.session.auth.password -v <initiator CHAP jelszó>
iscsiadm -m node -p 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -o update -n node.session.auth.username_in -v <target CHAP felhasználó>
iscsiadm -m node -P 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -o update -n node.session.auth.password_in -v <target CHAP jelszó>
iscsiadm -m node -P 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 -l

iscsiadm -m node -P 192.168.168.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca0-host1 --op update -n node.startup -v automatic
</pre>

<big>--- Target 011 ---</big>
<pre>
iscsiadm -m node -p 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -o new
iscsiadm -m node -p 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -o update -n node.session.auth.username -v <initiator CHAP felhasználó>
iscsiadm -m node -P 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -o update -n node.session.auth.password -v <initiator CHAP jelszó>
iscsiadm -m node -p 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -o update -n node.session.auth.username_in -v <target CHAP felhasználó>
iscsiadm -m node -P 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -o update -n node.session.auth.password_in -v <target CHAP jelszó>
iscsiadm -m node -P 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 -l

iscsiadm -m node -P 192.168.170.1 -T iqn.2000-01.hu.niif.c4e:eternus7:cm0-ca1-host1 --op update -n node.startup -v automatic
</pre>

<big>--- Target 101 ---</big>
<pre>
iscsiadm -m node -p 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -o new
iscsiadm -m node -p 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -o update -n node.session.auth.username -v <initiator CHAP felhasználó>
iscsiadm -m node -P 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -o update -n node.session.auth.password -v <initiator CHAP jelszó>
iscsiadm -m node -p 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -o update -n node.session.auth.username_in -v <target CHAP felhasználó>
iscsiadm -m node -P 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -o update -n node.session.auth.password_in -v <target CHAP jelszó>
iscsiadm -m node -P 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 -l

iscsiadm -m node -P 192.168.168.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca0-host1 --op update -n node.startup -v automatic
</pre>

<big>--- Target 111 ---</big>
<pre>
iscsiadm -m node -p 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -o new
iscsiadm -m node -p 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -o update -n node.session.auth.username -v <initiator CHAP felhasználó>
iscsiadm -m node -P 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -o update -n node.session.auth.password -v <initiator CHAP jelszó>
iscsiadm -m node -p 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -o update -n node.session.auth.username_in -v <target CHAP felhasználó>
iscsiadm -m node -P 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -o update -n node.session.auth.password_in -v <target CHAP jelszó>
iscsiadm -m node -P 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -l

iscsiadm -m node -P 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 --op update -n node.startup -v automatic
</pre>

Az egyes csoportok beillesztése után (konkrétan a csoportok utolsó előtti parancsa miatt) minden targetre be kell jelentkezzen, és az alábbihoz hasonló üzeneteknek kell megjelenni:
<pre>
root@iscsiteszt-5:/home/debian# iscsiadm -m node -P 192.168.170.2 -T iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1 -l
Logging in to [iface: default, target: iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1, portal: 192.168.170.2,3260] (multiple)
Login to [iface: default, target: iqn.2000-01.hu.niif.c4e:eternus7:cm1-ca1-host1, portal: 192.168.170.2,3260] successful.
</pre>

Miután mind a négy targetre sikerült a bejelentkezés, már csak a multipath ellenőrzése van hátra, ahol a lentihez hasonló kimenetnek kell megjelenjen:
<pre>
root@iscsiteszt-5:/home/debian# multipath -ll
3600000e00d280000002825d2001a0000 dm-0 FUJITSU,ETERNUS_DXL
size=200G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 3:0:0:0 sdd 8:48 active ready running
| `- 5:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 2:0:0:0 sda 8:0 active ready running
`- 4:0:0:0 sdc 8:32 active ready running
</pre>

Itt jól látszik, hogy mind a négy útvonal ép, és az első kettő az aktív, a másik kettő pedig bármikor rendelkezésre áll. Amennyiben a path-ok nem jelennének meg, az alábbi parancs segítségével újratölthető a devmap:
multipath -r

===== Szépészeti beavatkozások =====

Az iSCSI un. WWID-ket használ (ami a <code>multipath -ll</code> kimenetében jól látszik) az egyes területek azonosítására, ami sajnos olvashatatlan, és körülményes tud lenni. Az egyszerűbb megnevezések érdekében lehetőség van a korábban szerkesztett <code>multipath.conf</code> állomány bővítésére az alábbi módon (a teljes állomány látható, a fent található Eternus releváns konfigurációval együtt):

<pre>
root@iscsiteszt-5:/home/debian# cat /etc/multipath.conf
devices {
device {
vendor "FUJITSU"
product "ETERNUS_DXL"
prio alua
path_grouping_policy group_by_prio
no_path_retry queue
failback immediate
}
}
multipaths {
multipath {
wwid 3600000e00d280000002825d2001a0000
alias terulet1
}
multipath {
wwid 3600000e00d280000002825d2001b0000
alias terulet2
}
}

</pre>

Ha kész az átnevezés (és persze nincsenek a területek csatolva sehol), újra kell olvastatni a devmapot (esetleg újra kell indítani a szervert):
multipath -r

<pre>
root@iscsiteszt-5:/home/debian# multipath -r
Mar 23 11:13:37 | 3600000e00d280000002825d2001a0000: rename 3600000e00d280000002825d2001a0000 to terulet1
rename: terulet1 (3600000e00d280000002825d2001a0000) undef FUJITSU,ETERNUS_DXL
size=200G features='1 queue_if_no_path' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=50 status=undef
| |- 3:0:0:0 sdd 8:48 active ready running
| `- 5:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=10 status=undef
|- 4:0:0:0 sdc 8:32 active ready running
`- 6:0:0:0 sda 8:0 active ready running
Mar 23 11:13:37 | 3600000e00d280000002825d2001b0000: rename 3600000e00d280000002825d2001b0000 to terulet2
rename: terulet2 (3600000e00d280000002825d2001b0000) undef FUJITSU,ETERNUS_DXL
size=200G features='1 queue_if_no_path' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=50 status=undef
| |- 4:0:0:1 sdg 8:96 active ready running
| `- 6:0:0:1 sdf 8:80 active ready running
`-+- policy='service-time 0' prio=10 status=undef
|- 3:0:0:1 sdh 8:112 active ready running
`- 5:0:0:1 sde 8:64 active ready running
</pre>

==== Csatlakozás Windows alapú operációs rendszer alól (hamarosan) ====

===== Előkészületek =====

A gépet természetesen hozzá kell adni a megfelelő "Eternus7 - iSCSI1" és "Eternus7 - iSCSI2" hálózatokhoz.

Sajnos a Windows Multipath rendszere nem képes korrektül kezelni az Eternus tárolókat, ezért első lépésként fel kell telepíteni a Fujitsu Eternus MultiPath Drivert (EMPD)
A cikk írásakor ez a V2.0L23-as (2016/12/21) verziója, amit az alábbi módon lehet letölteni:

# http://www.fujitsu.com/fts/support/
# táblázatban katt: Storage
# "Ask Fujitsu! We are here to help" ablakban a "Please select the product group"-nál "ETERNUS DX" kiválasztása
# "Please select the product family"-nél "ETERNUS DX200 S3" kiválasztása
# A megjelenő oldalon a megfelelő Windows verzió kiválasztása
# Driver fül alatt "Device Driver"-t nyissuk ki egy kattintással
# legfrissebb elérhető driver ("EMPD - Multipath Driver for Windows ...") letöltése "Direct download"-ra kattintással
#*("I have read and agree to the terms and conditions." checkbox bepipálásával elfogadva a felhasználási feltételeket)
# Az állomány egy exe, ami kicsomagol egy mappát, amiben lesz egy iso állomány.
# Az iso-t csatolva az English/setup.exe lesz az, amit fel kell telepíteni a többutas tároló megfelelő működéséhez.

===== Initiator konfigurálása =====

# A "Felügyeleti eszközök" közül az "iSCSI-kezdeményező" / "iSCSI-Initiator" -t kell választani
# Igennel kell válaszolni, hogy automatikusan elinduljon az iSCSI a továbbiakban
# A megnyitott ablakban a "Konfiguráció" fül alatt a "Kezdeményező neve:" részhez be kell állítani az IQN-t, amit a storage igénylésekor megadtunk (ehhez az alatta lévő módosítás gombra kell kattintani)


== Virtuális gép készíétse (Lépésről lépésre) ==

Fontos: Ha a felhasználói fiókunkhoz több project is hozzá van társítva és nem az a project van kiválasztva ahová szeretnénk létrehozni a „Instance”-t akkor váltsunk át.


Két lehetőség közül választhatunk:

a) A logo melletti projekt névre kattinva

b) Indentity -> Projects -> Actions -> Set as Active Project

===VM elenevezése===

Válasszuk ki a Compute -> Instances opciót majd kattintsunk a Launch Instance mezőre.
Esetenként néhány másodperces várakozás után az alábbi oldalt láthatjuk

[[Fájl:Instance.jpg|400px|Launch Instance]]

A Detials résznél meg kell adni az alábbi adatok megadása szükséges:

- Instance Name: a létrehozandó virtuális gépünk neve
- Count: hány darab virtuális gép kerüljön létrehozásra

Opcionális:
- Description: bővebb leírást adhatunk arról, hogy a létrehozandó gép mire szolgál, mi a célja
- Availabity zone: melyik zónába jöjjön létre

A Next gomb vagy a Source feliratra kattintva átléphetünk a lemezképfájlok kiválasztására.


===Image választás===

A következő ábrán látható módon válasszunk ki a rendelkezésre álló lemezképfájlok közül egyet, valamint állítsuk be a kívánt lemez méretet.
Amennyiben saját image-t szeretnék feltölteni akkor ide kattintva érhető el a kapcsolódó leírás….

[[Fájl:Li2.png||600px|]]


===Flavor választás===

Az aktuálisan elérhető Flavor lista:
[[Cloud_for_Education#Ig.C3.A9nyelhet.C5.91_virtu.C3.A1lis_er.C5.91forr.C3.A1s-csomagok_.28flavor.29 | Flavor lista]]

[[File:Li3.png|726px|VM Select flavor]]

Következő lépésként meg kell adni a használni kívánt hálózatot. Ez legyen a példában létrehozott „Internal” hálózat.

[[File:Li4.png|726px|VM Select network]]

===Security group társítása===
Az ábrán látható módon megadhatjuk, hogy mely Security Group(-ok) vonatkozzon a virtuális gépünkre.

[[File:Li5.png|726px|VM Select sec_grp]]

===Publikus kulcs társítása===
Az ábrán látható módon a VM létrehozásakor kiválaszthatjuk az előzőleg feltöltött publikus kulcsunkat, vagy feltölthetünk egy teljesen újat is a létrehozás közben.

[[File:Li6.png|726px|VM Select pub_key]]

A „Launch” lehetőséget választva elkezdhetjük a virtuális gép létrehozását. A folyamat elkészültekor az „Instances” fül alatt láthatjuk az eddig létrehozott virtuális gépeinket és azok állapotát.

[[File:Li7.png|726px|Létrehozott VM lista]]

A folyamat elvégzése után elkészült az első virtuális gép, amelynek elérése több féle módon történhet.
* A virtuális géphez hozzárendelünk egy publikus IP címet, majd a háttérben a neutron 1:1 NAT alkalmazásával ennek megfelelően konfigurálja a virtuális routert, és így távolról is bejelentkezhetünk rá, Linux disztribúció esetén például SSH, Windows esetén RDP szolgáltatás segítségével.

* A weboldalba ágyazott VNC konzol segítségével vezérelhetjük gépünket, azonban egyes előre gyártott lemezképfájlból készített virtuális gépek nem támogatják csak a kulcsos autentikációt, így sajnos ezeknél a gépeknél ez a módszer nem elérhető.

===Floating IP hozzárendelése===
Az előzőekben létrehozott Ubuntu operációs rendszerrel ellátott virtuális gépünk a második lehetőséget nem támogatja, így szükségünk van a gép eléréséhez egy publikus IP címre, amelynek allokálása és géphez rendelése a következőképpen történik.

Első lépésben válasszuk a „Project” alatt található „Network” lehetőséget, majd azon belül a „Floating IPs” menüpontot és kattintsunk a jobb felső sarokban lévő „Allocate IP To Project” gombra. A megjelenő ablakban ki kell választani a kívánt Smart hálózatot, amelyből a publikus IP címet szeretnénk használni (Ez nyilván az a hálózat, amelyiket a router átjárójának is választottunk), majd az „Allocate IP” lehetőséget kell választani.

[[File:Allocate_ip1.png|726px|Floating IP igénylése]]


A következő ábrán látható a Projekthez allokált IP címek listája, amelyek következő lépésként hozzárendelhetők 1-1 virtuális géphez. Ehhez válasszuk az ábrán látható IP cím mellett található „Associate” lehetőséget, majd válasszuk ki a listából azt a virtuális gépet, amelyiken az IP címet használni szeretnénk.

[[File:Allocate_ip2.png|726px|Rendelkezésre álló IP címek listája]]


[[File:Allocate_ip3.png|726px|Floating IP géphez rendelése]]

A sikeres hozzárendelés után a gépünk már rendelkezik publikus IP címmel, amelyen keresztül külső hálózatokból is elérhetjük a gépet, amennyiben ezt a Security Group-ban, vagy a Firewall alatt engedélyezzük.

===LoadBalancer beállítása===

A C4E az "OpenStack Octavia" alapú LoadBalancer-t kínálja a felhasználóknak, HAProxy backenddel. Az esetleges titkosított kapcsolatok terminálásakor a "Barbican" tanúsítvány manager eszköz biztosítja a privát kulcsok biztonságos tárolását.

A terheléselosztó konfigurációs beállításai két fajta módon tehető meg:

1. Horizon grafikus felületen a NETWORK menüpont alatt,

2. CLI használatával, amelyhez a standard OpenStack CLI eszközön felül az alábbi csomagok telepítése is szükséges.

(Debian/Ubuntu rendszeren)
Az alábbi példa Dashboard-on keresztüli beállítást mutatja be:

====non-SSL HTTP LoadBalancer====

'''Példa leírása:'''

* Adott egy publikus (esetünkben Smart1) hálózat, amelyből lebegő publikus IP címet allokálunk a loadbalancer-nek, valamint egy privát subnet (esetünkben Internal-subnet névvel).

* Adott két backend server 192.168.66.16 és 192.168.66.19 privát IP címekkel. A gépeken az apache2 hallgat a TCP 80-as porton.

* Szeretnénk egy alap loadbalancer-t, amely elérhető a külvilág felől és segítségével eloszthatók a webes kérések a backend szerverek között.



'''Példa megoldása:'''

A horizon felületén található Networks menüpont alatt válasszuk a "Load Balancers" lehetőséget, majd kattintsunk a jobb felső sarokhoz közel található "Create Load Balancer" gombra.

Első lépésként a felugró ablakban válasszuk ki a backend szerverekhez tartozó subnetet, valamint adjunk meg néhány információt amennyiben szeretnénk.

[[File: Lbaas-gui1.png |724px|subnet választás]]

A next gombra kattintás után adjunk meg néhány Listener releváns információt. Például protokoll és port.

[[File: Lbaas-gui2.png |724px|Listener details]]

Harmadik lépésben szükséges néhány pool releváns információt megadni, például: Algoritmus kiválasztása

[[File: Lbaas-gui3.png |724px|Pool details]]

A következő lépésben adjuk meg a pool-hoz hozzárendelni kívánt backend szervereket, ahogy az alábbi képernyőképen is látható.

[[File: Lbaas-gui4.png |724px|Pool Members]]

Végül adjunk meg néhány monitoringhez szükséges információt.

[[File: Lbaas-gui5.png |724px|Monitor details]]

Ezzel elkészült a tervezett terheléselosztó, amelyhez a következő lépésben egy publikus IP címet fogunk rendelni, amelyen keresztül a webszolgáltatás elérhető lesz.

[[File: Lbaas-gui7.png |724px|Associate FIPs]]


'''LoadBalancer azaz a terheléselosztó törlése:'''

Előfordulhat, hogy egy-egy terheléselosztó nem törölhető és hibaüzenet figyelmeztet erre. ('''CLI-n van rá force opció!''')

Ennek a megoldása, hogy "szét kell szedni" a terheléselosztót, amelyhez a következő lépésekre van szükség:
* törölni kell a pool-t, a listener-t, a monitort
* majd végül magát a terheléselosztót


== C4E (Openstack) Publikus API ==

<big> '''FONTOS!''' </big> Az API külvilági elérését csomagszűrő tűzfal védi, és kizárólag az általunk ismert magyarországi IP(v4/v6) címekről érhető el.
Akkor, ha timeout hiba merülne fel, a cloud@niif.hu címen kell jelezni az elérés igényét, és a kérdéses IP címet.
Amennyiben az IP valóban hazai cím, és még nem szerepel a tűzfalban, rövid távon permanensen az egész alhálózat számára elérhetővé tesszük az API-t.

<big> '''FONTOS!''' </big> Az itt leírt dokumentáció a C4E OpenStack jelenlegi (Rocky) verziójához készült!


=== Kezdő lépések: jelszó szerzése ===

Kialakításra került a C4E publikus API elérése. Ahhoz, hogy a felhasználók ezt igénybe tudják venni, az alábbiak szükségesek:

* Meg kell nyitni a: https://keystone.c4e.niif.hu/regsite/apipwgen oldalt.
* Új jelszó beállítását kérni.
* A kapott jelszót felírni.
* Ajánlott a kapott jelszót utólag a webfelületen (vagy CLI-ből) módosítani!

=== Kezdő lépések: környezet kialakítása (Debian/Ubuntu) ===

OpenStack leírás: https://docs.openstack.org/api-quick-start/api-quick-start.html#install-the-clients

Első körben hozzá kell adni a repository-t az apt konfigurációjához, frissíteni a csomaglistát, majd telepíteni a szükséges csomagokat:

'''Ubuntu 18.04''' ''(ajánlott)'':
<pre>
add-apt-repository cloud-archive:rocky
apt-get update
apt-get install python-openstackclient
</pre>

'''Debian Buster''':
<pre>
curl http://osbpo.debian.net/osbpo/dists/pubkey.gpg | sudo apt-key add -
echo "deb http://osbpo.debian.net/osbpo buster-rocky-backports main" >>/etc/apt/sources.list.d/openstack.list
echo "deb http://osbpo.debian.net/osbpo buster-rocky-backports-nochange main" >>/etc/apt/sources.list.d/openstack.list
apt-get update
apt-get install python-openstackclient
</pre>


'''Telepítés SNAP-ből''':
<pre>
sudo snap install openstackclients --classic
</pre>


'''Telepítés pip segítségével''' (https://pypi.org/project/python-openstackclient/):
<pre>
sudo pip install python-openstackclient
</pre>

'''Frissítés pip segítségével''' (https://pypi.org/project/python-openstackclient/):
<pre>
sudo pip install --upgrade python-openstackclient
</pre>


Második körben be kell szerezni a szükséges <big>'''openrc'''</big> file-t az api eléréséhez:
* Be kell jelentkezni a C4E-be (IdP-n keresztül természetesen)
* Ki kell választani az elérni kívánt projektet, ha több lenne (az rc file-ok projektfüggők!)
* Az <big>''' Access & Security -> API Access '''</big> oldalon a <big>''' Download OpenStack RC File v3 '''</big> opciót választani
* Az rc file-t a kezelő gépre juttatni (ha nem ott lenne)

A harmadik lépés, hogy betöltjük az rc file-t, majd a jelszó beírása után elérhetővé válik a C4E API

<pre>
debian@apitest:~$ source cloudadmin_v3.rc
Please enter your OpenStack Password:

debian@apitest:~$ openstack server list
+--------------------------------------+-----------------+--------+----------------------------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-----------------+--------+----------------------------------------------------------------------------------+
| 3ac59936-cdae-4822-9855-60fabeff135f | apitest | ACTIVE | Flat1=2001:738:0:519:f816:3eff:fedd:d5e8, 193.224.22.225 ||
+--------------------------------------+-----------------+--------+----------------------------------------------------------------------------------+
debian@apitest:~$
</pre>

=== API használata ===

Az API használatával kapcsolatban a mindenkori Openstack dokumentáció a mérvadó: https://developer.openstack.org/api-guide/quick-start/api-quick-start.html#

Ugyanezen oldalról egy (hálózat/ssh kulcs nélküli!) instance elindításának kezdő lépései: https://developer.openstack.org/api-guide/quick-start/api-quick-start.html#launch-an-instance

Az openstack parancs elérhető funkciói (ebből természetesen van, ami a felhasználó számára nem, illetve olyan is, ami nincs implementálva!):

Részlet az <big>'''openstack --help'''</big> kiementéből:

<pre>
Commands:
access token create Create access token command
aggregate add host Add host to aggregate
aggregate create Create a new aggregate
aggregate delete Delete an existing aggregate
aggregate list List all aggregates
aggregate remove host Remove host from aggregate
aggregate set Set aggregate properties
aggregate show Show a specific aggregate
backup create Create backup command
backup delete Delete backup command
backup list List backup command
backup restore Restore backup command
backup show Show backup command
complete print bash completion command
compute agent create Create compute agent command
compute agent delete Delete compute agent command
compute agent list List compute agent command
compute agent set Set compute agent command
compute service list List service command
compute service set Set service command
console log show Show console-log command
console url show Show console-url command
consumer create Create consumer command
consumer delete Delete consumer command
consumer list List consumer command
consumer set Set consumer command
consumer show Show consumer command
container list List containers
container show Show container information
credential create Create credential command
credential delete Delete credential command
credential list List credential command
credential set Set credential command
credential show Show credential command
domain create Create domain command
domain delete Delete domain command
domain list List domain command
domain set Set domain command
domain show Show domain command
endpoint create Create endpoint command
endpoint delete Delete endpoint command
endpoint list List endpoint command
endpoint set Set endpoint command
endpoint show Show endpoint command
extension list List extension command
flavor create Create flavor command
flavor delete Delete flavor command
flavor list List flavor command
flavor show Show flavor command
group add user Add user to group
group contains user Checks that user is in a specific group
group create Create group command
group delete Delete group command
group list List groups
group remove user Remove user to group
group set Set group command
group show Show group command
help print detailed help for another command
host list List host command
host show Show host command
hypervisor list List hypervisor command
hypervisor show Show hypervisor command
identity provider create Create identity_provider command
identity provider delete Delete identity provider
identity provider list List identity providers
identity provider set Set identity provider
identity provider show Show identity provider
image create Create/upload an image
image delete Delete an image
image list List available images
image save Save an image locally
image set Change image properties
image show Show image details
ip fixed add Add fixed-ip command
ip fixed remove Remove fixed-ip command
ip floating add Add floating-ip command
ip floating create Create floating-ip command
ip floating delete Delete floating-ip command
ip floating list List floating-ip command
ip floating pool list List floating-ip-pool command
ip floating remove Remove floating-ip command
keypair create Create keypair command
keypair delete Delete keypair command
keypair list List keypair command
keypair show Show keypair command
limits show Show compute and volume limits
module list List module versions
object list List objects
object show Show object information
policy create Create policy command
policy delete Delete policy command
policy list List policy command
policy set Set policy command
policy show Show policy command
project create Create new project
project delete Delete project
project list List projects
project set Set project properties
project show Show project command
project usage list List resource usage per project.
quota set Set quotas for project or class
quota show Show quotas for project or class
request token authorize Authorize request token command
request token create Create request token command
role add Adds a role to a user or group on a domain or project
role assignment list Lists role assignments according to the given filters
role create Create new role
role delete Delete existing role
role list List roles
role remove Remove role command
role set Set role command
role show Show single role
security group create Create a new security group
security group delete Delete a security group
security group list List all security groups
security group rule create Create a new security group rule
security group rule delete Delete a security group rule
security group rule list List all security group rules
security group set Set security group properties
security group show Show a specific security group
server add security group Add security group to server
server add volume Add volume to server
server create Create a new server
server delete Delete server command
server image create Create a new disk image from a running server
server list List servers
server lock Lock server
server migrate Migrate server to different host
server pause Pause server
server reboot Perform a hard or soft server reboot
server rebuild Rebuild server
server remove security group Remove security group from server
server remove volume Remove volume from server
server rescue Put server in rescue mode
server resize Convert server to a new flavor
server resume Resume server
server set Set server properties
server show Show server details
server ssh Ssh to server
server suspend Suspend server
server unlock Unlock server
server unpause Unpause server
server unrescue Restore server from rescue mode
server unset Unset server properties
service create Create new service
service delete Delete service
service list List services
service set Set service properties
service show Show service details
snapshot create Create snapshot command
snapshot delete Delete snapshot command
snapshot list List snapshot command
snapshot set Set snapshot command
snapshot show Show snapshot command
token issue Issue token command
user create Create new user
user delete Delete user
user list List users
user set Set user properties
user show Show user details
volume create Create new volume
volume delete Delete volume
volume list List volumes
volume set Set volume properties
volume show Show specific volume
volume type create Create new volume type
volume type delete Delete volume type
volume type list List volume types
volume type set Set volume type property
volume type unset Unset volume type property
volume unset Unset volume properties
</pre>

Az egyes parancsok részletes leírását így lehet elérni:
<pre>
debian@apitest:~$ openstack help server list
usage: openstack server list [-h] [-f {csv,table}] [-c COLUMN]
[--max-width <integer>]
[--quote {all,minimal,none,nonnumeric}]
[--reservation-id <reservation-id>]
[--ip <ip-address-regex>]
[--ip6 <ip-address-regex>] [--name <name>]
[--status <status>] [--flavor <flavor>]
[--image <image>] [--host <hostname>]
[--instance-name <server-name>] [--all-projects]
[--long]

List servers

optional arguments:
-h, --help show this help message and exit
--reservation-id <reservation-id>
Only return instances that match the reservation
--ip <ip-address-regex>
Regular expression to match IP addresses
--ip6 <ip-address-regex>
Regular expression to match IPv6 addresses
--name <name> Regular expression to match names
--status <status> Search by server status
--flavor <flavor> Search by flavor ID
--image <image> Search by image ID
--host <hostname> Search by hostname
--instance-name <server-name>
Regular expression to match instance name (admin only)
--all-projects Include all projects (admin only)
--long List additional fields in output

output formatters:
output formatter options

-f {csv,table}, --format {csv,table}
the output format, defaults to table
-c COLUMN, --column COLUMN
specify the column(s) to include, can be repeated

table formatter:
--max-width <integer>
Maximum display width, 0 to disable

CSV Formatter:
--quote {all,minimal,none,nonnumeric}
when to include quotes, defaults to nonnumeric

debian@apitest:~$
</pre>

Amennyiben valamilyen problémába merül fel, célszerű a parancsot -v (-vv -vvv) kapcsolóval futtatni, és egy esetleges hibabejelentésnél a kimenetet csatolni.


==Image készítése Instance volume-ról (API használatával)==

1. Instance leállítása

<pre>
openstack server
listopenstack server stop <instance_name>
</pre>

2. Volume lecsatolása az instance-ról
<pre>
openstack volume list
nova volume-detach <instance_name> <volume_id>
openstack volume snapshot create --volume <volume_name> --force <snapshot_name>
openstack volume snapshot list
openstack volume create --snapshot <snapshot-name-or-id> --size <size> <new-volume-name>
</pre>

3. Image készítése volume-ról

<pre>
openstack volume list
openstack image create --volume <volume_name> <your_image_name>
openstack image list
</pre>

4. Image letöltése

<pre>
openstack image save --file snapshot.raw <your_image_id>
</pre>

5. Image feltöltése másik régióba

<pre>
source your_openrc.sh
openstack image create --container-format bare --disk-format qcow2 --file <image_file_name> <image_name>
</pre>

6. Volume készítése image-ből

<pre>
openstack image list
openstack volume create --image <image_id> --size <size_in_gb> <name_your_volume>
openstack volume list
</pre>

7. Instance készítése boot volume-ből
<pre>
openstack server create --volume <volume_name> --flavor <flavor_name> <instance_name>
</pre>

==Instance migrálás==


Ez a megoldás nem feltételezi azt, hogy az instance osztott tárhellyel rendelkezik.
Az ütemező választja az új gépet. Funkcióban hasonlít a live-migration megoldáshoz azonban az instance-hoz tartozó flavor méretét nem változtatja meg.

A SERVER változó helyére adjuk meg az instance azonosítóját (UUID vagy név)

<pre>
openstack server list
openstack server migrate SERVER
openstack server migrate confirm SERVER
</pre>

Instance visszaállítása a migrálás előtti host-ra

<pre>
openstack server migrate revert SERVER
</pre>


====Migrációs típusok====

=====Non-live migration=====
Az instance leállításra kerül, ezt követően áthelyezésre kerül egy másik hypervsior-ra, az instance-t újraindítják. Az instance érzékeli, hogy újraindult.

=====Live migration=====

Az instance a migráció alatt folyamatosan fut. Ez a megoldás akkor hasznos ha az instance leállítása nem lehetséges valamilyen okból.
A live migration továbbb osztható kötet tárolás szempontjából.

- (Shared storage-based live migration) osztott tárhely: a jelenlegi instance és a cél gép is eléri,

- (Block live migration) nem osztott tárhely: az instance olyan diszket használ amelyhez a cél gép nem fér hozzá,

- (Volume-backed live migration): az instance saját volumet használ osztott diszk helyett

*Block live migration-hoz a szükséges diszket át kell másolni a cél gépre.
Több időt vesz igénybe és nagyobb hálózati forgalmat generál.

* A Shared storage-based és a Block live migration esetén külön másolás nem szükséges.


====Virtuális gépek migrálása Régiók között ====
A migráláshoz CLI elérés, és elegendő tárhely szükséges! A jobb teljesítmény érdekében a migrálást végző gép akár a felhőben is futtatható, így nem limitál az otthoni sávszélesség.

# A virtuális gépről először snapshot-ot kell készíteni
# Az elkészült snapshot-ból újra létre kell hozni egy volume-ot (virtuális gép nélkül)
# A létrejött új volume-nál megjenik egy opció: Upload to Image (ez a diszk méretétől hosszú ideig is eltarthat!)
# A létrejött image innentől letölthető a CLI-n keresztül:<pre> glance image-download --file $FILENAME $UUID</pre>
# A letöltött file-t például így kell feltölteni: <pre>openstack image create --min-disk 5 --disk-format raw --container-format bare --file /tmp/valami.raw --property murano_image_info='{"title": "Migralt virtualis gep", "type": "linux"}' NewVM </pre>

==Volume Transfer==

Ha szeretnénk a köteteket projekteink között mozgatni az alábbi módon tehetjük meg.

'''Fontos: a mozgatni kívánt volume ne legyen felcsatolva Instance-hoz!'''

A Project -> Volumes -> Volumes lehetőséges kiválasztva keressük meg a mozgatni kívánti kötetet.
Ha megtaláltuk akkor az Action oszlopban található gombra kattintva válasszuk ki a Create Transfer lehetőséget.

''Megjegyzés:
Ha nem található ilyen lehetőség előfordulhat, hogy a kötet lecsatolása nem történt meg.''


Create Transfer-re kattintva az alábbi ablak jelenik meg:


[[Fájl:Transfer 1.jpg|600px]]

Itt adjuk meg a '''Transfer name''' értékét majd kattintsunk a '''Create Volume Transfer''' gombra.

Ezt követően az alábbi adatokat láthatjuk:

* Transfer Name
* Transfer ID
* Authorization Key


[[Fájl:Transfer 2.jpg|600px]]


A '''Transfer ID''' illetve a '''Authorization Key''' értékét másoljuk ki vagy töltsük le a '''Download transfer credentials'''-ra kattinva.

'''Fontos: Ha bezárjuk az ablakot akkor a Authorization Key továbbiakban nem lesz elérhető'''

Ha sikeres volt az előkészület akkor a kötet állapota így jelenik meg:

[[Fájl:Transfer 4.jpg|600px]]


Megjegyzés:
''A '''Cancel Transfer''' lehetőségre kattintva tudjuk megszakítani az átvitelt. A későbbiekben kigenerált '''Transfer ID''' és '''Authorization Key''' nem lesz érvényes.''


Ezt követően lépjünk át a arra projektre ahová szeretnénk a kötetet átmozgatni.

[[Fájl:Transfer 5.jpg|600px]]


Accept Transfer-re kattintva adjuk meg a '''Transfer ID'''-t illetve a '''Authorization Key'''-t, majd kattintsunk a '''Accept Volume Transfer''' opcióra. Ha az adatok helyesek voltak akkor a kötet átvitel elkezdődik.


==Probléma-elhárítás==

===Nem sikerült az image létrehozása a webfelületen===
Valószínűleg bejelölted a "Public" lehetőséget, amelyhez a felhasználóknak nincs jogosultságuk. Erre csak admin jogosultságú felhasználó képes.

===Nem tudom, hogy mi az azonosító és jelszó a példányosított image-emhez.===
Mert nem kötötted hozzá a publikus kulcsodat, amit előzőleg feltöltöttél az access & security key pairs fül alatt. Az SSH kulcsos azonosítással történik. A felhasználói nevek a [[C4E#Ig.C3.A9nyelhet.C5.91_virtu.C3.A1lis_er.C5.91forr.C3.A1s-csomagok_.28flavor.29|Flavors]] táblázatban vannak feltüntetve.

=== Nem tudok belépni a gépre távolról ===
Az alapértelmezett tűzfalszabályok nem engedélyezik a kívülről jövő kapcsolatokat. Konfigurációjuk leírása a [[#Security_group-ok|Security group-ok]] szakaszban található.

=== Nem sikerült a csatlakozás a konzolra ===

A hibaüzenet: ''Failed to connect to server (code: 1006)''.
Ilyenkor az F5 gomb megnyomása segít.

===Nem tudok a létrehozott VM konzolján gépelni===
Ahhoz, hogy gépelni tudjunk, vagy grafikus felülettel rendelkező operációs rendszer esetén az egérrel dolgozni, a konzol melletti szürke területre kell kattintani és NEM a konzol ablakába.

===Baj van a DNS-el, <code>resolv.conf</code>-fal, stb.===
A C4E networking stackje több irányból konfigurálja egy-egy VM DNS beállításait.

==== DHCP oldali beállítások ====
Ahhoz, hogy a DHCP ne írja felül minduntalan a <code>resolv.conf</code> egyes sorait a következőt érdemes tenni:

A <code>/etc/dhcp/dhclient.conf</code> állományt értelemszerűen bővíteni kell az alábbi(ak közül szükséges) sorokkal:
<pre>
supersede domain-name "sajatdomain.hu";
supersede domain-search "sajatdomain.hu";
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
</pre>

==== Cloudinit oldali beállítások ====
Minden C4E virtuális gépen megtalálható egy ún. "Cloudinit" szkriptrendszer, ami az egyes beállításokat (hostnév, diszknövelés, ssh kulcs, stb.) hivatott beállítani.
Ahhoz, hogy a Cloudinit ne állítsa át a hostnevet, és a hosts állományt, az alábbi konfiguráció szükséges a <code>/etc/cloud/cloud.cfg</code> állományban:
<pre>
# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true

manage_etc_hosts: false
</pre>


===IPv6 címre van szükségem, a felület szerint kapnom kéne, de mégsem===
Ennek oka, hogy az adott Security Group nem "engedi be" az SLAAC-hoz szükséges hirdetési információkat. A tűzfal alábbiak szerinti bővítése, és egy virtuális gép reboot megoldja a problémát:

[[Fájl:ipv6_secgroup.png|665px|ICMPv6 Enable]]

Navigációs menü