SAP bázistechnolĂłgia¶
A teljessĂ©g igĂ©nye nĂ©lkĂĽl szeretnĂ©nk felsorolni az alábbiakban nĂ©hány olyan műszaki megoldást, amit szĂvesen használunk SAP tĂ©mában, Ă©s talán tĂşlmegy a szokásos "next-next-finish" megközelĂtĂ©sen.
SAP/Linux¶
Manapság már nem nagy kuriĂłzum kijelenteni, hogy mi kizárĂłlag Linux rendszereken ĂĽzemeltetĂĽnk SAP-t, de 2000-ben mĂ©g az volt. Akkoriban nagyvállalati környezetben mĂ©g renitens hackereknek számĂtottunk, akik nem akarják megfizetni a drága OS licenszeket Ă©s tanácsadĂłi dĂjakat, Ă©s mindent saját kezűleg akarnak összeĂ©pĂteni.
UtĂłbbi hozzáállásunk a mai napig megmaradt, szeretĂĽnk a "motorháztetĹ‘ alá" nĂ©zni, unortodox műszaki megoldásokat alkalmazni, technikai legĂłkockákbĂłl egyedi terveket Ă©s rendszereket Ă©pĂteni.
HardvermigráciĂł SAP ĂşjratelepĂtĂ©s nĂ©lkĂĽl¶
Az egyik elĹ‘nye annak, hogy mi "alulrĂłl" nĂ©zzĂĽk az SAP rendszereket, hogy rĂ©szletesen ismerjĂĽk, hogy az SAP rendszer OS szinten mit Ă©s hol tárol, milyen beállĂtások alapján működik. Nem ijedĂĽnk meg, ha egy működĹ‘ rendszert át kell migrálni egyik hostrĂłl a másikra, pĂ©ldául hardvercsere vagy akár nagyobb lĂ©legzetű OS frissĂtĂ©s esetĂ©ben. Műszakilag nem feltĂ©tlen indokolt, hogy az adatbázist Ă©s az SAP alkalmazást ĂşjratelepĂtsĂĽk ilyen esetekben, elegendĹ‘ az SAP filerendszereit Ă©s beállĂtásait megfelelĹ‘ mĂłdon átmásolni - termĂ©szetesen alkalmazkodva a cĂ©lrendszer tulajdonságaihoz, Ăşj storage rendszerhez stb.
SAP LXC kontĂ©nerekben¶
OS konténerek
Az OS kontĂ©nerizáciĂł egy olyan technolĂłgia, amely lehetĹ‘vĂ© teszi több, egymástĂłl elkĂĽlönĂtett felhasználĂłi környezet futtatását egyetlen operáciĂłs rendszeren belĂĽl. A kontĂ©nerek a host operáciĂłs rendszer kernelĂ©t használják, de mindegyik saját fájlrendszerrel, hálĂłzati interfĂ©sszel Ă©s folyamatkezelĂ©ssel rendelkezik.
Az LXC (Linux Containers) hasonlĂł a Solaris zĂłnáihoz, vagy a FreeBSD jail megoldásához: userspace izoláciĂłt biztosĂtanak az alkalmazások rĂ©szĂ©re.
Amikor 2008 körül a fél világ virtualizációban gondolkodott, mert az volt az aktuális hype: konszolidáljunk, virtualizáljunk; akkor mi az OS konténerekkel kezdtünk el foglalkozni. Amit óriási előnynek tartottunk:
- nincs virtualizáciĂłs rĂ©teg, az alkalmazások lassulás nĂ©lkĂĽl, natĂv OS szinten Ă©s sebessĂ©ggel futnak a hoston
- nincs fix memĂłriafoglalás, minden kontĂ©ner a közösbĹ‘l kap az igĂ©nye szerint, valĂłjában csak limitet adunk meg (ami futás közben is mĂłdosĂthatĂł)
- a host filerendszerét használhatják a konténerek, akár
LVM/Btrfs/ZFS
kötetként, akárraw device
-kĂ©nt. - teljes OS környezetet ad, eltĂ©rĹ‘en az alkalmazáskontĂ©nerekkel szemben (pl. Docker), tehát kĂvĂĽl-belĂĽl Ăşgy viselkedik, mint egy önállĂł virtuális gĂ©p.
- akár másik, a host OS-tĹ‘l eltĂ©rĹ‘ Linux disztribĂşciĂłt is lehet telepĂteni egy kontĂ©nerbe, csak a kernel a közös - Ăgy használunk pĂ©ldául SLES környezetben Ubuntu/Debian kontĂ©nereket is
- egy logikai bridge interfĂ©sz rákerĂĽl a host hálĂłzati interfĂ©szĂ©re, amelyen keresztĂĽl a kontĂ©nerek hozzáfĂ©rnek a host hálĂłzatához (termĂ©szetesen saját IP cĂmmel ugyanabbĂłl a hálĂłzatbĂłl, cĂmfordĂtás nĂ©lkĂĽl)
- mindeközben az összes kényelmi funkció (konténer snapshot / mentés, migráció másik hostra) elérhető, amit a virtalizációnál megszokhattunk
Ăšgyhogy az LXC megjelenĂ©se Ăłta aktĂvan használjuk az OS kontĂ©nereket. Egy tipikus, általunk tervezett Ă©s megvalĂłsĂtott kontĂ©nerizált nagyvállalati SAP infrastruktĂşra:
SLES 15 LXC/libvirt¶
A SUSE Linux Enterprise Server szinte a kezdetektől támogatta az LXC használatát, ezért nagy örömmel kezdtük el az SAP rendszereket "bekonténerizálni", ha szabad ezt a csúnya szót használni. Minden kiválóan működött, egészen az SLES 15 SP4 verzióig, ahol is a SUSE ezt a lehetőséget megszüntette:
5.3.8 LXC containers have been removed
System containers using LXC have been removed in SUSE Linux Enterprise Server 15 SP4. This includes the following packages:
- libvirt-lxc
- virt-sandbox
As a replacement, we recommend commonly used alternatives like Docker or Podman.
SLES 15 LXD¶
Fentiek miatt új megoldást kerestünk, hiszen a virtualizáció számunkra nem volt elfogadható lehetőség, nem akartunk a konténerek előnyeiről lemondani.
Az alapvetĹ‘en Ubuntu-n elĂ©rhetĹ‘, Canonical-fĂ©le LXD egy remek LXC megvalĂłsĂtás, rendkĂvĂĽl kĂ©nyelmes Ă©s megbĂzhatĂł. SzerencsĂ©re az LXD a SLES15 rendszeren is elĂ©rhetĹ‘, Ă©s kiválĂłan működik. AzĂłta minden rendszerĂĽnket átmigráltuk erre a megoldásra, Ăgy feljebb lehetett lĂ©pni az SLES15 SP szintekkel, egĂ©szen a legfrissebbig.
RendszerkonszolidáciĂł UID/GID konverziĂłval¶
NĂ©ha elĹ‘fordul, hogy az ĂĽgyfĂ©l nem szeretne sem kontĂ©nerizáciĂłt, sem virtualizáciĂłt, viszont igĂ©ny, hogy egy fizikai hoston több SAP rendszer ĂĽzemeljen. Ăšj telepĂtĂ©snĂ©l ezzel nincs is semmi gond, de ha ezeket több működĹ‘ szerverrĹ‘l hoznánk át, akkor elĹ‘fordulhat, hogy az OS felhasználĂłi Ă©s csoport azonosĂtĂłk ĂĽtköznek egymással. Ilyen esetben van lehetĹ‘sĂ©g az SAP rendszereket "megdolgozni", egy olyan állapottá konvertálni, hogy minden rendszer teljesen fĂĽggetlen lehessen egymástĂłl.
HANA esetében az UID/GID váltás picit bonyolultabb, mert a DB konfigurációba is bele kell nyúlni, de erre is van megoldás, lehet konszolidálni a rendszereket ott is.
PĂ©ldául az alábbi UID/GID konverziĂłs táblázatban láthatĂł kĂ©t S/4 HANA rendszer "összebĂştorozása": a 2-2 adatbázis Ă©s 2-2 alkalmazásszerver kĂĽlön hostokon működött eddig. Ezt a 4 rendszert össze kellett hĂşznunk egy közös hostra, ĂĽgyfĂ©l nem akart kontĂ©nerizáciĂłt vagy virtualizáciĂłt, viszont Ăgy rengeteg UID/GID ĂĽtközĂ©st kellett kezelni. MegfelelĹ‘ tervezĂ©ssel Ă©s OS beavatkozásokkal ez abszolĂşt kivitelezhetĹ‘.
LVM thinpool¶
A klasszikus felállás szerint a storage rendszeren kiosztjuk az SAP rendszereknek a saját köteteiket, mindegyiket alaposan túlméretezve, nehogy üzem közben valamelyik idejekorán beteljen. Ebből egyenesen következik, hogy a méregdrága storage jó részét soha nem használjuk ki, részben elégetve az értékes beruházásunk értelmét.
Overprovisioning
Olyan tárterĂĽlet-kiosztási mĂłdszer, amikor összessĂ©gĂ©ben több terĂĽletet osztunk szĂ©t a kötetek között, mint amennyi valĂłjában rendelkezĂ©sre áll - számĂtva arra, hogy egyszerre nem az összes kötet fog betelni.
Amikor kontĂ©nereket használunk (de akár virtualizáciĂł esetĂ©ben is), megtehetjĂĽk azt, hogy az egy hostra kiajánlott storage köteten kialakĂtunk egy Ăşn. LVM thinpool
-t, amin belül a logikai köteteket (amiből az OS és SAP filerendszerek lesznek) dinamikusan, overprovisioning
használatával osztjuk szét. Ez azt jelenti, hogy bár kellően nagyra méretezzük itt is a filerendszereket, a thinpool csak a ténylegesen (adatokkal, fileokkal) elfoglalt, nem pedig a kiosztott terület alapján "fogy el". Konkrét példa: kiosztunk 3 rendszer felé az /sapmnt
Ă©s /usr/sap
filerendszereknek 500-500 GB-os kötetet, ez összesen 3 TB lenne, de a thinpool foglaltsága csak azt a 30-40 GB-ot fogja mutatni, amivel a kezdeti SAP telepĂtĂ©s befoglalja. Ha az egyik filerendszer ĂĽzem közben megnĹ‘, elmehet egĂ©szen 500 GB-ig, vagy ha megnöveljĂĽk azt az LV-t, akkor tovább is.
Így a filerendszer méret inkább kvótának minősül a gyakorlatban, és az értékes storage területet sokkal gazdaságosabban ki tudjuk használni.
Egyes Ăşjabb storage rendszerek már storage szinten is lehetĹ‘vĂ© teszik a thinpool kialakĂtását, Ăgy egy szinttel feljebb is megvalĂłsulhat az overprovisioning.
Filerendszer mentĂ©sek¶
DeduplikáciĂł¶
Deduplikáció
A deduplikáciĂłs mentĂ©s olyan adatmentĂ©si technika, amely a mentĂ©si folyamat során csak az Ăşj vagy megváltozott adatokat menti el, miközben az ismĂ©tlĹ‘dĹ‘ adatokra csak referenciakĂ©nt hivatkozik, Ăgy jelentĹ‘sen csökkentve a mentĂ©sek tárolási igĂ©nyĂ©t.
Az adatbázismentĂ©seknĂ©l, Ăgy SAP alatt is rĂ©gĂłta lĂ©tezĹ‘ mentĂ©si mĂłdszer, hogy ritkábban vĂ©grehajtott teljes DB mentĂ©sek között gyakrabban futtatott differenciális / inkrementális mentĂ©sekkel mentjĂĽk a kĂĽlönbözetet, illetve mĂ©g ennĂ©l is gyakrabban generálĂłdnak az Ăşn. offline redo logok (saparch fileok), amelyeket megfelelĹ‘en elmentve biztosak lehetĂĽnk abban, hogy ebbĹ‘l a többszintű mentĂ©si struktĂşrábĂłl vissza tudunk állni bármilyen idĹ‘pontra (PIT / point-in-time recovery), Ă©s persze mindig meglesznek az aktuális adataink, lehetĹ‘leg minimális adatvesztĂ©ssel.
HasonlĂł funkcionalitást biztosĂt a filerendszermentĂ©seknĂ©l a deduplikáciĂł. Éles ĂĽzemű SAP rendszereknĂ©l az egyes filerendszerek mĂ©rete mĂ©g rendszeres karbantartás mellett is nagyon megnĹ‘het, ugyanakkor fontos lenne, hogy minden adatot a lehetĹ‘ leggyakrabban, mĂ©gis a lehetĹ‘ legkisebb tárhelyfoglalással rendszeresen mentsĂĽnk.
Az alkalmazott megoldásaink közĂĽl mutatunk kettĹ‘t ĂzelĂtĹ‘ĂĽl:
Pull backup¶
- kĂĽlön hoston lĂ©vĹ‘ SAP rendszerek esetĂ©n egy közös tárterĂĽletre szinkronizáljuk a binárisokat, konfiguráciĂłt Ă©s az SAP filerendszereket (termĂ©szetesen az adatbázis adat- Ă©s logfileok nĂ©lkĂĽl - azt a DB mentĂ©s intĂ©zi), kĂvĂĽlrĹ‘l indĂtva
- ez a közös tárterĂĽlet a minimális helyfoglalás vĂ©gett egy tömörĂtett btrfs filerendszer, amelyrĹ‘l ĂłránkĂ©nt belsĹ‘ snapshot-ot kĂ©szĂtĂĽnk, Ăgy visszamenĹ‘leg akár több hĂłnapra/Ă©vre visszamenĹ‘leg megvan minden filerendszer mindenkori állapota
- napi / heti szinten, ahogy az ĂĽzlet megkĂvánja, elarchiváljuk az utolsĂł pillanatfelvĂ©telt szalagra, Ăgy hosszĂş távon is visszakereshetĹ‘, elĂ©rhetĹ‘
- mivel az SAP hostok visszafelé nem férnek hozzá a mentési területhez, az SAP rendszerek esetleges kompromittálódása esetén a mentések nem sérülhetnek.
Append-only repo¶
- hostonkĂ©nt a rajta futĂł SAP kontĂ©nerek filerendszereit bekĂĽldjĂĽk egy deduplikáciĂłt ismerĹ‘, tömörĂtett Ă©s titkosĂtást vĂ©gzĹ‘ mentĹ‘eszközbe, ami egy helyi backup repository-ba menti a filerendszereket, majd egy offsite/offline mentĂ©ssel mĂ©g azt is biztosĂtja
- bár közvetlenül az SAP konténerek nem látják a backup tárterületet, az LXC/LXD hostok elérik azt, ezért a mentőszerveren a backup repository
append-only
mĂłdban van: nem lehet a mentĂ©seket mĂłdosĂtani, termĂ©szetesen azokbĂłl törölni sem, kizárĂłlag Ăşjabb mentĂ©st lehet rákĂĽldeni - Ăgy bármilyen szándĂ©kos vagy akár vĂ©letlen beavatkozás nem tudja megsĂ©rteni az adatok integritását.