Öka densiteten av containrar pĂ„ noden med PFCACHE-teknologi

Öka densiteten av containrar pĂ„ noden med PFCACHE-teknologi

Ett av mÄlen för en webbhotellprovider Àr att maximera anvÀndningen av den befintliga utrustningen för att leverera en kvalitativ tjÀnst till slutkunderna. Resurserna pÄ de slutliga servrarna Àr alltid begrÀnsade, men antalet kundtjÀnster, i vÄrt fall VPS, kan variera avsevÀrt. LÀs mer om hur man fÄr plats pÄ granen och Àter en burger nedan.

Att packa VPS pÄ en nod pÄ ett sÀtt som kunderna inte mÀrker av, hjÀlper avsevÀrt till att förbÀttra de ekonomiska resultaten för alla webbhotellprovidrar. SjÀlvklart fÄr noden inte spricka i fogarna om den Àr överfylld med containrar, och varje lastspik kÀnns direkt av alla kunder.

Hur mÄnga VPS som kan placeras pÄ en nod beror pÄ mÄnga faktorer, varav nÄgra Àr uppenbara:

1. Specifikationerna för sjÀlva nodens hÄrdvara
2. Storleken pÄ VPS
3. LastkaraktÀren pÄ VPS
4. Programvaruteknologier som hjÀlper till att optimera densiteten

I det hÀr fallet kommer vi att dela med oss av erfarenheten av att anvÀnda Pfcache-teknologin för Virtuozzo.
Vi anvÀnder version 6, men allt som nÀmnts gÀller Àven för version 7.

Pfcache – en mekanism i Virtuozzo som hjĂ€lper till att deduplicera IOPS och RAM i containrar genom att allokera identiska filer i containrar i ett separat gemensamt omrĂ„de.

Det bestÄr faktiskt av:
1. KĂ€rnans kod
2. User-space daemon
3. User-space verktyg

PÄ nodens sida avsÀtter vi en hel partition dÀr filer kommer att skapas, som alla VPS pÄ noden kommer att anvÀnda. Den blockenhet ploop monteras i denna partition. Vid start av containern fÄr den en referens till denna partition:

[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
...

HÀr Àr en ungefÀrlig statistik över antalet filer pÄ en av vÄra noder:

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

Pfcaches arbetsprincip Àr följande:
‱ User-space daemon Pfcached skriver filens sha-1 hash i xattr-attributet för filen. Filer bearbetas inte alla utan endast i katalogerna /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

‱ Det Ă€r troligt att filerna i dessa kataloger kommer att vara "gemensamma" och anvĂ€ndas av flera containrar;

‱ Pfcached samlar periodiskt in statistik om fillĂ€sa frĂ„n kĂ€rnan, analyserar den och lĂ€gger till filer i cachen om deras anvĂ€ndning Ă€r frekvent;

‱ Katalogdata kan vara olika och konfigureras i konfigurationsfiler.

‱ Vid filĂ„tkomst kontrolleras om den innehĂ„ller den angivna hash i de utvidgade attributen xattr. Om den gör det öppnas en "gemensam" fil istĂ€llet för containern, vilket sker osynligt för containerkoden och döljs i kĂ€rnan;

‱ Vid skrivning till filen ogiltigförklaras hashen. SĂ„ledes, vid nĂ€sta öppning kommer sjĂ€lva containerfilen istĂ€llet för cachen att öppnas.

Genom att hÄlla gemensamma filer i sidcache frÄn /vz/pfcache uppnÄr vi en ekonomisering av just denna cache, samt en besparing av IOPS. IstÀllet för att lÀsa tio filer frÄn disken lÀser vi en, som omedelbart gÄr in i sidcachen.

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

Listan över VMA för filen förblir enhetlig (deduplicerar minnet) och vi lĂ€ser sĂ€llan frĂ„n disken (sparar IOPS). VĂ„r "gemensamma" lagras pĂ„ SSD – en ytterligare vinst i hastighet.

Exempel för caching av filen /bin/bash:

[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

Effektiviteten av anvÀndningen av berÀknade fÀrdig skript.

Detta skript gÄr igenom alla containrar pÄ noden och rÀknar de cachelagrade filerna för varje container.

[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache cache anvÀnder 831 MB minne
Totalt minnesanvÀndning av pfcached-filer i containrar Àr 39837 MB
Pfcache effektivitet: 39006 MB

DÀrmed sparar vi ungefÀr 40 gigabyte filer i containrar i minnet, de kommer att laddas frÄn cachen.

För att denna mekanism ska fungera Ànnu bÀttre Àr det nödvÀndigt att placera maximalt "lika" VPS pÄ noden. Till exempel sÄdana dÀr anvÀndaren inte har root-Ätkomst och dÀr en miljö har stÀllts in frÄn en distribuerad bild.

Man kan justera pfcache-arbetet genom konfigurationsfilen
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – minimi/maximi storlek för caching av filer
TIMEOUT – tidsgrĂ€ns mellan försök till caching

Du kan bekanta dig med hela listan över parametrar via lÀnken.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster