1s cluster web Bitrix. Web cluster - experiență de aplicație reală. Cum să urmezi cursul de formare

14.05.2020 Recenzii

Orice proiect nou sau care rulează pe „” poate fi prezentat ca un cluster web de servere interschimbabile.

Principalele sarcini pe care această configurație de proiect vă permite să le rezolvați:

  1. Pe măsură ce traficul crește, puteți adăuga rapid noi servere la cluster.
  2. Dacă unul dintre serverele cluster eșuează, sistemul continuă să servească continuu Clienții.
  3. Echilibrarea încărcăturii, traficului, datelor între mai multe servere.
  4. Sistemul vă permite să fotografiați copii de rezervă din noduri de cluster special desemnate, fără a afecta funcționarea site-ului.

„Cluster web geografic”

„Clusterul web geografic” crește toleranța la erori a proiectului și asigură independența față de centrul de date. Mai multe grupuri de clustere web situate în diferite orașe sau țări sunt combinate în diferite centre de date. În cazul unei defecțiuni a unui centru de date, un altul este imediat pus în funcțiune, fără a fi nevoie să restabiliți o „backup”.


Un cluster web geografic vă permite să creați grupuri întregi de servere. Fiecare dintre aceste grupuri are propriul său master - în centre de date independente unul de celălalt. Astfel, site-urile și afacerea dvs. sunt complet protejate de inaccesibilitatea centrelor de date în sine.

„1C-Bitrix: Web Cluster” este o combinație de tehnologii:

  1. Fracționare verticală(mutarea modulelor pe servere MySQL separate)
  2. Replicarea MySQL și echilibrarea încărcării între servere
  3. Cache de date distribuite(memcached)
  4. Continuitatea sesiunii între servere web(stocarea sesiunilor într-o bază de date)
  5. Clustering server web:
  • Sincronizarea fișierelor
  • Echilibrarea sarcinii între servere
  • Independenta centrului de date(în cazul unei defecțiuni a unui centru de date, un altul intră imediat în funcțiune, fără a fi nevoie să restabiliți o „backup”)

  • Cum functioneazã

    1. Fracționare verticală

    Împărțirea unei baze de date a unei aplicații web în două sau mai multe baze de date prin separarea modulelor separate, fără a schimba logica aplicației web.





    Următoarele module de produs pot fi plasate în baze de date separate:

    2. Replicarea MySQL și echilibrarea încărcării între servere

    Schema „master - slave” este implementată folosind MySQL.

    Platforma 1C-Bitrix: Site Management vă permite să echilibrați în mod flexibil sarcina dintre serverele care participă la replicare.



    Caracteristici cheie:
    • echilibrare flexibilă a sarcinii SQL
    • usurinta in administrare
    • scalare nelimitată ieftină și rapidă
    • backup online
    • nu este necesară modificarea logicii aplicației web

    3. Cache de date distribuite (memcached)

    „1C-Bitrix: Web Cluster” vă permite să utilizați un grup de servere memcache pentru a lucra cu memoria cache de date.



    Aceasta oferă:
    • Eficiență ridicată- datorită utilizării centralizate a cache-ului de către aplicația web
    • fiabilitate- datorită rezistenței subsistemului de cache la defecțiunea componentelor individuale
    • scalabilitate nelimitată- prin adăugarea de noi servere memcached

    4. Continuitatea sesiunilor între servere web (stocarea sesiunilor într-o bază de date)

    Abilitatea de a stoca datele sesiunii utilizator într-o bază de date asigură „transparența” sesiunii pentru toate serverele web din cluster:
    1. După autorizarea pe unul dintre servere, utilizatorul trebuie considerat autorizat pentru toate celelalte servere.
    2. Și invers - sfârșitul unei sesiuni pe orice server ar trebui să însemne sfârșitul acesteia pe toate serverele simultan.

    Modulul Web Cluster este o combinație de soluții tehnologice care vă permit să distribuiți un site web pe mai multe servere, rezolvând astfel mai multe probleme: furnizarea Valabilitate ridicată site-ul web, scalarea acestuia în condiții de creștere a încărcăturii, echilibrarea încărcăturii, traficului, date între mai multe servere. Cu un cluster web vei crește performanța, scalabilitatea și fiabilitatea proiectului tău!

    Pentru ce sarcini aveți nevoie de un cluster web?

    Este necesar un cluster pentru a rezolva în mod flexibil problemele de creștere a sarcinii și creșterea stabilității serviciului. Astfel, pe măsură ce traficul crește, puteți adăuga rapid noi servere la cluster. Și dacă unul dintre serverele cluster eșuează, sistemul continuă să deservească în mod continuu vizitatorii/clienții. O sarcină la fel de importantă este echilibrarea încărcării, a traficului și a datelor între mai multe servere. În același timp, sistemul vă permite să faceți copii de rezervă din nodurile de cluster special desemnate, fără a afecta funcționarea site-ului, fără a opri mașinile sau a le încetini. Există sarcini separate de geo-distribuție. Când rulați un cluster web geografic, vă permite să creați grupuri întregi de servere. Fiecare dintre aceste grupuri are propriul său master - în centre de date independente unul de celălalt. Astfel, site-urile și afacerea dvs. sunt complet protejate de inaccesibilitatea centrelor de date și a canalelor de comunicare în sine.

    Cum funcționează clusterul web 1C Bitrix?

    Să ne uităm la ce tehnologii folosește clusterul web 1C Bitrix:

    • Pentru baza de date aceasta este fragmentare verticală(mutarea modulelor pe servere MySQL separate)
    • Replicare MySQLȘi echilibrarea sarciniiîntre servere
    • Distribuit cache de date(memcached)
    • Continuitatea sesiuniiîntre servere web (stocarea sesiunilor într-o bază de date)

    Clustering server web apare din cauza sincronizării fișierelor, echilibrării încărcăturii între servere, geo-independenței față de centrul de date (în cazul unei defecțiuni a unui centru de date, altul intră imediat în funcțiune, fără a fi nevoie de a ridica backup-uri și alte acțiuni, acesta este un adevărat schimb la cald).

    Secretele încărcărilor mari pe 1C Bitrix cu un cluster web

    1. MySQL Sharding

    Împărțirea unei baze de date a unei aplicații web în două sau mai multe baze de date prin separarea modulelor separate, fără a schimba logica aplicației web.



    Următoarele module de produse pot fi plasate în baze de date separate: , .

    2. Replicarea MySQL

    Schema „master slave” este implementată folosind MySQL / MariaDB. Această stivă de tehnologie este destul de bine descrisă și este utilizată pe scară largă.

    3. Balancer pentru echilibrarea încărcăturii între servere

    Să aruncăm o privire mai atentă la echilibrator. Platforma 1C-Bitrix: Site Management în funcționalitatea Web Cluster vă permite să echilibrați în mod flexibil sarcina dintre serverele care participă la replicare.



    Obținem următoarele caracteristici cheie: echilibrare flexibilă a sarcinii în MySQL, ușurință de administrare dintr-o singură interfață, scalare rapidă nelimitată fără costuri suplimentare, backup la cald (de fapt aceasta este: crearea de copii de rezervă stare reală). Toată această funcționalitate nu necesită modificarea logicii aplicației web; totul funcționează deja în această ediție.

    4. Cache de date distribuite (gestionat de: memcached)

    Tehnologia vă permite să stocați în cache datele memorie cu acces aleator multe servere disponibile. Distribuția este implementată prin împărțirea datelor după valoarea hash a cheii, similar cu socket-urile tabelelor hash. Biblioteca client, folosind cheia de date, calculează hash-ul și îl folosește pentru a selecta serverul corespunzător.


    Acest lucru asigură o eficiență ridicată - datorită utilizării centralizate a cache-ului de către aplicația web, precum și fiabilității - datorită rezistenței subsistemului de cache la defecțiunea componentelor individuale, garantând în același timp scalabilitate nelimitată - prin adăugarea de noi servere memcached pe măsură ce încărcarea crește.

    5. Continuitatea sesiunii

    Pentru a organiza continuitatea sesiunilor între serverele web, este necesară activarea stocării sesiunilor în baza de date, iar bazele de date în sine sunt replicate, după cum s-a indicat mai sus.



    Abilitatea de a stoca datele sesiunii utilizator într-o bază de date asigură „transparența” sesiunii pentru toate serverele web din cluster, deoarece După autorizarea pe unul dintre servere, utilizatorul trebuie considerat autorizat pentru toate celelalte servere. Și invers, după încheierea unei sesiuni pe orice server, ar trebui să însemne sfârșitul acesteia pe toate serverele simultan.

    Astăzi, Bitrix și-a prezentat noua soluție – „cluster web”. Pentru cei care nu știu, le voi explica că acest lucru vă permite să plasați un proiect foarte vizitat nu pe unul, ci pe mai multe servere și să adăugați în orice moment servere noi pentru a accelera site-ul. De asemenea, este sigur să eliminați orice server pentru reparații, upgrade-uri sau în caz de defecțiune. Bineînțeles, în calitate de prim concurent al lor (reprezentat de compania Yumisoft), trebuia în primul rând să aflu ce noutate fundamental oferă pe piață.

    Nimic. Nimic în sensul bun. Bitrix a încetat să mai prostească și să „reinventeze roata” - se pare că un tehnolog inteligent a intrat în echipă, așa că în loc de „biciclete” au luat și au făcut totul așa cum fac oamenii normali. In aceasta postare o sa povestesc în cuvinte simple– ce anume au făcut ei și cum poți repeta același lucru în proiectul tău.

    Să ne uităm la părțile principale ale clusterului:

    0. Cloud – un nor, un set de servere pe care vor rula toate acestea.
    1. Echilibrator de sarcină – echilibrator de sarcină de intrare.
    2. Replicarea MySQL este un tip popular de grupare a bazelor de date.
    3. Sistem de fișiere în rețea – stocare de fișiere distribuită.

    După cum am menționat mai sus, un cluster este un set de un număr arbitrar de servere web. Ei pot îndeplini aceeași sarcină sau altele diferite în funcție de obiective. Să începem cu serverele: aici se propune utilizarea mașini virtuale aws.amazon.com. Nu aș spune că aceasta este o soluție rezonabilă: mașinile virtuale sunt în mod inerent lente, dar punctul cheie aici este ușurința creării lor. Am apăsat butonul și a fost creat. Și nu o mașină implicită, ci una configurată special pentru nevoile dvs. Îl puteți crea într-un program sau chiar dinamic pe măsură ce sarcina crește. Site-ul dvs. a intrat într-un flux puternic de vizitatori - a r-r-r-az și a creat câteva mașini noi. Sarcina s-a încheiat - mașinile s-au oprit. Frumuseţe.

    Desigur, orice server de pe Internet poate acționa ca servere de cluster: fie el virtual sau hardware. Pentru referință: oricine nu este prea leneș să înceapă să instaleze cea mai recentă distribuție Ubuntu Server își poate crea propriul cluster personal „Amazon” gratuit.

    Este necesar un echilibrator pentru a distribui cererile primite de la vizitatorii site-ului între serverele de cluster. Se propune să utilizați nginx ca acesta, Google „nginx load balance” și veți obține o grămadă de link-uri către exemple gata făcute.

    Replicarea bazei de date este necesară pentru a scrie date pe un server (se numește master) și a le citi de pe toate celelalte (respectiv, slave). Deoarece există de obicei puține operațiuni de scriere și multe operațiuni de citire, prin simpla creștere a numărului de sclavi puteți crește nelimitat „puterea” proiectului. Datele de la master la sclavi curg în fundal folosind exclusiv MySQL, iar sclavii pot fi adăugați și eliminați în orice moment. Google „replicare mysql” și obțineți instrucțiuni.

    Stocarea de fișiere distribuită este necesară pentru a se asigura că toate serverele au același set de fișiere. Dacă utilizatorul a încărcat o imagine „undeva” pe unul dintre servere, atunci aceasta ar trebui să apară peste tot. De ce? Deoarece informațiile pot fi date altor utilizatori de pe un alt server. Pentru implementare, tovarășii de la Bitrix recomandă „csync2” - funcționează în fundal și sincronizează stupid fișierele între servere, astfel încât totul să fie la fel peste tot.

    Toate. Deci ai făcut un grup. Și acum – reglare fină:

    Prima piatră de poticnire pe care o veți da atunci când vă transferați proiectul (mă refer la un proiect pe alt CMS sau unul auto-scris) la un astfel de model va fi în operațiunile de bază de date. Concluzia este că aplicația trebuie să poată distinge cererile de „scriere” de cele de „citire”. Cu alte cuvinte, INSERT, UPDATE, DELETE, precum și CREATE, ALTER și DROP trebuie efectuate numai pe master. SELECT interogăriîn principiu poate fi efectuat oriunde. Va dura destul de mult timp pentru a vă reeduca motorul la acest mod de gândire.

    În plus, Bitrixoids au venit cu un lucru interesant: deoarece datele circulă de la master la sclavi cu o oarecare întârziere, ei au învățat sistemul să recunoască cererile de scriere „critice”. După o astfel de solicitare, toate datele până la sfârșitul execuției scripturilor PHP sunt preluate (SELECT) doar de la master pentru a evita erorile datorate aceleiași întârzieri.

    A doua idee care trebuie luată în considerare este alocarea de servere pentru sarcini. Nu este necesar să faceți toate serverele la fel și să le atribuiți aceleași sarcini. Unele dintre ele să servească, de exemplu, un magazin online, iar cealaltă parte să colecteze statistici.

    Al treilea gând este gruparea memcache. Bitrix l-a inclus la începutul prezentării, dar îl puteți lansa mai târziu. Avantajul său este că se conectează direct cu nginx (vă amintiți primul punct?) și îi permite să servească pagini (sau blocuri) în cache direct din RAM. Sarcina ta - sau mai degrabă sarcina scripturilor tale - este să plasezi conținut în cache în memcached.

    Cum se dezvoltă un proiect pe un cluster? Intrebari frecvente pentru reprezentanții studiourilor web. Da, exact la fel ca pe server obișnuit. Clusterul pentru dvs. va fi doar un computer mare, la care vă conectați prin ssh în același mod și funcționează.

    Sunt mentor în proiecte IT. Aceasta înseamnă că, dacă sunteți proprietar sau manager, vă pot ajuta să vă duceți afacerea la noi culmi. Pune lucrurile în ordine, înțelegeți motivația echipei, implementați instrumente și atingeți obiective specifice. Nu te învăț cum să faci afaceri, doar te ajut să ocoliți greblele generos împrăștiate pe drum. .

    Modulul Web Cluster este o combinație de soluții tehnologice care vă permit să distribuiți un site web pe mai multe servere, rezolvând astfel mai multe probleme: asigurarea disponibilității ridicate a site-ului web; scalarea acestuia în condiții de creștere a sarcinii; echilibrarea încărcăturii, traficului, datelor între mai multe servere. Construiește-ți propriul cluster web - crește performanța, scalabilitatea și fiabilitatea proiectului tău!

    Orice proiect nou sau în curs de desfășurare pe 1C-Bitrix: Site Management poate fi prezentat ca un cluster web de servere interschimbabile.
    Principalele sarcini pe care această configurație de proiect vă permite să le rezolvați:

    • Pe măsură ce traficul crește, puteți adăuga rapid noi servere la cluster
    • Dacă unul dintre serverele cluster eșuează, sistemul continuă să servească continuu Clienții
    • Echilibrarea încărcăturii, traficului, datelor între mai multe servere
    • Sistemul vă permite să faceți copii de rezervă de la nodurile de cluster special desemnate, fără a afecta funcționarea site-ului

    „Cluster web geografic”

    „Clusterul web geografic” crește toleranța la erori a proiectului și asigură independența față de centrul de date. Mai multe grupuri de clustere web situate în diferite orașe sau țări sunt combinate în diferite centre de date. În cazul unei defecțiuni a unui centru de date, un altul este imediat pus în funcțiune, fără a fi nevoie să restabiliți o „backup”.


    Un cluster web geografic vă permite să creați grupuri întregi de servere. Fiecare dintre aceste grupuri are propriul său master - în centre de date independente unul de celălalt. Astfel, site-urile și afacerea dvs. sunt complet protejate de inaccesibilitatea centrelor de date în sine.
    „1C-Bitrix: Web Cluster” este o combinație de tehnologii:

    • Fracționare verticală (mutarea modulelor pe servere MySQL separate)
    • Replicarea MySQL și echilibrarea încărcării între servere
    • Cache de date distribuite (memcached)
    • Continuitatea sesiunilor între servere web (stocarea sesiunilor într-o bază de date)
    • Clustering server web:
    • Sincronizarea fișierelor
    • Echilibrarea sarcinii între servere
    • Independență față de centrul de date (în cazul unei defecțiuni a unui centru de date, altul intră imediat în funcțiune, fără a fi nevoie să restabiliți o „backup”)

    Cum functioneazã

    1. Fracționare verticală

    Împărțirea unei baze de date a unei aplicații web în două sau mai multe baze de date prin separarea modulelor separate, fără a schimba logica aplicației web.

    Următoarele module de produs pot fi plasate în baze de date separate:

    • „Analitica web”
    • "Căutare"

    2. Replicarea MySQL și echilibrarea încărcării între servere

    Schema master-slave este implementată folosind MySQL.
    Platforma 1C-Bitrix: Site Management vă permite să echilibrați în mod flexibil sarcina dintre serverele care participă la replicare.


    Caracteristici cheie:

    • echilibrare flexibilă a sarcinii SQL
    • usurinta in administrare
    • scalare nelimitată ieftină și rapidă
    • backup online
    • nu este necesară modificarea logicii aplicației web

    3. Cache de date distribuite (memcached)

    „1C-Bitrix: Web Cluster” vă permite să utilizați un grup de servere memcache pentru a lucra cu memoria cache de date.

    Aceasta oferă:

    • eficiență ridicată – datorită utilizării centralizate a cache-ului de către aplicația web
    • fiabilitate - datorită rezistenței subsistemului de cache la defecțiunea componentelor individuale
    • scalabilitate nelimitată - prin adăugarea de noi servere memcached

    4. Continuitatea sesiunilor între servere web (stocarea sesiunilor într-o bază de date)

    Abilitatea de a stoca datele sesiunii utilizator într-o bază de date asigură „transparența” sesiunii pentru toate serverele web din cluster:

    • După autorizarea pe unul dintre servere, utilizatorul trebuie considerat autorizat pentru toate celelalte servere
    • Și invers - sfârșitul unei sesiuni pe orice server ar trebui să însemne sfârșitul acesteia pe toate serverele simultan

    5. Clustering server web


    Când împărțiți un proiect în mai multe servere web, trebuie rezolvate două probleme:

    • sincronizarea datelor (fișierelor) între servere
    • echilibrarea sarcinii între servere