Konteinerite tiheduse suurendamine sÔlmes PFCACHE tehnoloogia abil

Konteinerite tiheduse suurendamine sÔlmes PFCACHE tehnoloogia abil

Üheks hostinguteenuse pakkuja eesmĂ€rgiks on vĂ”imalikult suur varustuse kasutamine kvaliteetse teenuse pakkumiseks lĂ”ppkasutajatele. LĂ”pp-serverite ressursid on alati piiratud, kuid paigutatud klientide teenuste arv, meie puhul VPS, vĂ”ib oluliselt erineda. Kuidas jĂ”ulupuule ronida ja burgerit sĂŒĂŒa, lugege allolevast.

VPS-ide tihendamine nodis viisil, et kliendid seda ĂŒldse ei tunneks, aitab suuresti parandada iga hostinguteenuse pakkuja majandusnĂ€itajaid. Loomulikult ei tohiks nodi praguneda, kui see on konteineritest paksult tĂ€is, ning iga koormuse tĂ”us on tunda kĂ”igile klientidele.

Kui palju VPS-e vĂ”ib ĂŒhes nodis paigutada, sĂ”ltub paljusid teguritest, sealhulgas ilmselgetest:

1. Nodide riistvara omadused
2. VPS suurus
3. VPS koormuse iseloom
4. Tarkvaratehnoloogiad, mis aitavad tihendamist optimeerida

KĂ€esoleval juhul jagame kogemusi tehnoloogia Pfcache kasutamisest Virtuozzo jaoks.
Kasutame 6. haru, kuid kÔik öeldu kehtib ka 7. kohta.

Pfcache on Virtuozzo mehhanism, mis aitab dedupeerida IOPS ja RAM-i konteinerites, eraldades ĂŒhesugused failid konteinerites eraldi ĂŒhisesse tsooni.

See koosneb tegelikult jÀrgmistest:
1. SĂŒdamikukoodist
2. User-space deemonist
3. User-space utiliidist

Nodi poolest eraldame me terve partitsiooni, kus luuakse failid, mida kasutavad kÔik VPS-id nodis. See partitsioon monteeritakse plook-blokeeringu seadmele. Edasi, konteineri kÀivitamisel, saab see viite antud partitsioonile:

[root@pcs13 ~]# cat /proc/mounts
...
/dev/ploop62124p1 /vz/pfcache ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12 0 0
...
/dev/ploop22927p1 /vz/root/418 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
/dev/ploop29642p1 /vz/root/264 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
...

Siin on ligikaudne statistika failide arvu kohta ĂŒhes meie nodidest:

[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G    /vz/pfcache
2.4G    total

Pfcache'i tööpÔhimÔte on jÀrgmine:
‱ User-space deemon Pfcached kirjutab faili sha-1 rĂ€simise xattr attribuuti. Failide töötlemine ei toimu kĂ”igil, vaid ainult kaustades /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

‱ TĂ”enĂ€oliselt on, et failid nendes kaustades on "ĂŒldised" ja neid kasutab mitu konteinerit;

‱ Pfcached kogub perioodiliselt failide lugemise statistikat kernest, analĂŒĂŒsib seda ja lisab failid vahemĂ€llu, kui nende kasutamine on sagedane;

‱ Failide katalooge saab muuta ning need seadistatakse konfiguratsioonifailides.

‱ Faili lugemisel kontrollitakse, kas see sisaldab mÀÀratud rĂ€sivÀÀrtust laiendatud atribuutides xattr. Kui see sisaldab – avatakse "ĂŒhisfail", mitte konteinerifail. See asendamine toimub konteinerikoodi jaoks mĂ€rkamatult ja peidetakse kernesse;

‱ Faili kirjutamisel rĂ€sivÀÀrtus tĂŒhistatakse. Seega, jĂ€rgmine avamine toob esile juba konteinerifaili, mitte selle vahemĂ€lu.

Hoides lehe vahemikus ĂŒhiseid faile aadressilt \/vz\/pfcache, saavutame selle sama vahemĂ€lu kokkuhoidu, samuti IOPS-i kokkuhoidu. Selle asemel, et lugeda kĂŒmmet faili kettalt, loeme ĂŒhe, mis lĂ€heb kohe lehe vahemĂ€llu.

struct inode {
...
 struct file             *i_peer_file;
...
};
struct address_space {
...
 struct list_head        i_peer_list;
...
}

Faili VMA loend jÀÀb ĂŒheks (deduplication of memory) ja loeme ketast harvem (sÀÀstame IOPS-i). Meie "ĂŒhisfail" asub SSD-l – tĂ€iendav kiire kasu.

NÀide faili \bin\bash vahemÀlust:

[root@pcs13 ~]# ls -li \/vz\/root\/2388\/bin\/bash
524650 -rwxr-xr-x 1 root root 1021112 Oct  7  2018 \/vz\/root\/2388\/bin\/bash
[root@pcs13 ~]# pfcache dump \/vz\/root\/2388 | grep 524650
8e3aa19fdc42e87659746f6dc8ea3af74ab30362 i:524650      g:1357611108  f:CP
[root@pcs13 ~]# sha1sum \/vz\/root\/2388\/bin\/bash
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  \/vz\/root\/2388\/bin\/bash
[root@pcs13 \/]# getfattr -ntrusted.pfcache \/vz\/root\/2388\/bin\/bash
# file: vz\/root\/2388\/bin\/bash
trusted.pfcache="8e3aa19fdc42e87659746f6dc8ea3af74ab30362"
[root@pcs13 ~]# sha1sum \/vz\/pfcache\/8e\/3aa19fdc42e87659746f6dc8ea3af74ab30362
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  \/vz\/pfcache\/8e\/3aa19fdc42e87659746f6dc8ea3af74ab30362

Kasutuse efektiivsus arvutatakse valmis skripti kaudu.

See skript lÀbib kÔik konteinerid nodis, arvutades igas konteineris vahemÀllu salvestatud failid.

[root@pcs16 ~]# \/pcs\/distr\/pfcache-examine.pl
...
Pfcache kasutab 831 MB mÀlu
Konteinerites salvestatud pfcached failide kogukasutus on 39837 MB mÀlus
Pfcache efektiivsus: 39006 MB

Nii sÀÀstame mÀlus umbes 40 gigabaidist faile konteinerites, need laaditakse vahemÀlust.

Selle mehhanismi paremaks toimimiseks on soovitatav paigutada noodi maksimaalselt "sarnased" VPS-id. NÀiteks need, millel kasutajal ei ole root-juurdepÀÀsu ja millel on seadistatud keskkond lahti pakitud pildist.

pfcache'i toimimist saab hÀÀlestada konfiguratsioonifaili kaudu
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – vahemĂ€llu salvestava faili minimaalne/maximaalne suurus
TIMEOUT – vahemĂ€lu salvestamise katsete vaheline ajaperiood

Tutvuge tÀieliku parameetrite loendiga linki pidi.

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster