Oletko koskaan miettinyt, kuinka hosting-yritykset hallitsevat MySQL-tietokanta-arkkitehtuuriaan? Hostingerilla on erilaisia MySQL-asennuksia itsenäisistä replikattomista instansseista Percona XtraDB Clusteriin (myöhemmin vain PXC), ProxySQL -reitityspohjaisiin ja jopa täysin räätälöityihin ja ainutlaatuisiin ratkaisuihin , joita aion kuvailla tässä blogikirjoituksessa.
Meillä ei ole elefantin kokoisia tietokantoja sisäisille palveluille, kuten API, laskutus ja asiakkaat. Näin ollen lähes jokainen päätös päätyy korkeaan käytettävyyteen ensisijaisena prioriteettina skaalautuvuuden sijaan.
Silti pystysuunnassa skaalaus riittää meidän tapauksessamm
, sillä tietokannan koko ei ylitä 500 Gt. Yksi tärkeimmistä vaatimuksista on pääsy pääsolmuun, koska meillä on melko tasaväliset työmäärät lukemiseen ja kirjoittamiseen.
Nykyinen asetuksemme kaikkien asiakkaita, palvelimia ja niin edelleen koskevien tietojen tallentamiseksi käyttää PXC:tä, joka muodostuu kolmesta solmusta ilman georeplikaatiota. Kaikki solmut toimivat samassa tietokeskuksessa.
Suunnittelemme tämän klusterin siirtämistä maantieteellisesti replikoituun klusteriin kolmessa paikassa: Yhdysvalloissa, Alankomaissa ja Singaporessa. Näin voimme taata korkean käytettävyyden, jos jokin paikoista ei ole tavoitettavissa.
Koska PXC käyttää täysin synkronista replikointia, kirjoitusten viiveet ovat korkeammat. Mutta lukeminen on paljon nopeampaa, koska jokaisessa paikassa on paikallinen replika.
Tutkimme MySQL-ryhmäreplikaatiota , mutta se edellyttää, että esiintymät ovat lähempänä toisiaan ja on herkempi viiveille.
Ryhmäreplikointi on suunniteltu käytettäväksi klusteriympäristössä, jossa palvelinesiintymät ovat hyvin lähellä toisiaan, ja siihen vaikuttavat sekä verkon latenssi että verkon kaistanleveys.
PXC:tä käytettiin aiemminkin, joten osaamme käsitellä sitä kriittisissä olosuhteissa ja parantaa sen saatavuutta.
000webhost.com -projektissa ja hAPI: ssä (Hostinger API) käytämme edellä mainittua ainutlaatuista ratkaisuamme, joka valitsee pääsolmun Layer3-protokollan avulla.
Yksi parhaista ystävistämme on BGP ja Päivitetty puhelinnumero 2024 maailmanlaajuisesti BGP-protokolla, joka on tarpeeksi vanhentunut ostamaan omaa olutta, joten käytämme sitä paljon. Tämä toteutus käyttää myös BGP:tä taustaprotokollana ja auttaa osoittamaan todellista pääsolmua. BGP-protokollan suorittamiseen käytämme ExaBGP-palvelua ja ilmoitamme VIP-osoitteen anycastina molemmista pääsolmuista.
Sinun pitäisi kysyä: mutta kuinka olet varma että MySQL-kyselyt menevät yhteen ja samaan
esiintymään sen sijaan, että osuvat molempiin? Käytämme Zookeeperin lyhytaikaisia solmuja saadaksemme lukon toisensa poissulkeviksi.
Zookeeper toimii kuin katkaisija BGP-kaiuttimien ja MySQL-asiakkaiden välillä. Jos lukko hankitaan, ilmoitamme VIP-pääsolmusta ja sovellukset lähettävät kyselyt tätä polkua kohti. Jos lukko vapautetaan, toinen solmu voi ottaa Шаклҳоро дар рӯи зерин ҷойгир кардан мумкин аст: sen haltuunsa ja ilmoittaa VIP:n, joten sovellus lähettää kyselyt ilman ponnistuksia.
mysql-asetukset hosting-palvelimessa
MySQL-asennus Hostingerissa
Toinen kysymys tulee: mitä edellytyksiä agb directory tulee täyttää VIP:n ilmoittamisen lopettamiseksi? Tämä voidaan toteuttaa eri tavalla käyttötapauksesta riippuen, mutta vapautamme lukituksen, jos MySQL-prosessi on alas, käyttämällä Requires ExaBGP:n yksikkötiedoston systemd:tä:
Lisäksi, määrittämällä After= tai ilman, tämä yksikkö pysähtyy, jos jokin muista laitteista on nimenomaisesti pysäytetty.
Systemd: llä voimme luoda mukavan riippuvuuspuun, joka varmistaa, että ne kaikki täyttyvät. MySQL:n pysäyttäminen, tappaminen tai jopa uudelleenkäynnistys saa järjestelmän pysäyttämään ExaBGP-prosessin ja peruuttamaan VIP-ilmoituksen. Lopputuloksena on valittu uusi mestari.
Testasimme nuo master-vikasiirrot pelipäivien aikana , eikä mitään kriittistä vielä havaittu .
Jos mielestäsi hyvä arkkitehtuuri on kallista, kokeile huonoa arkkitehtuuria
– Tämä viesti julkaistiin alun peruussa 2018. Tämän blogin sisällön tarjoavat avoimen lähdekoodin yhteisön jäsenet hyvässä uskossa . Percona ei muokkaa tai testaa sisältöä, ja esitetyt näkemykset ovat tekijöiden omia. Kun käytät tämän tai minkä tahansa muun verkkoresurssin neuvoja, testaa ideoita ennen niiden soveltamista tuotantojärjestelmissäsi ja **aina **varmista toimiva varmuuskopio. ∎
Donatas Abraitis
Olen järjestelmäinsinööri Hostingerissa. Rakastan ei-triviaalien ongelmien ratkaisemista. Löydät lisää postauksia, joihin kirjoitin
Katso kaikki Donatas Abraitisin viestit.