
Salve, Habr! Artem Karamyshev sum, caput systematis quadrigis administrationis . Praeterito anno multos novos productos excussos habuimus. Volumus curare ut API officia facile scalabiles, culpae tolerabiles essent, et ad celeri incrementi oneris usoris parati essent. Nostra suggestum in OpenStack effectum est, et tibi dicere volo quae culpae tolerantiae problemata componens solvere debebamus ut ratio culpae tolerantior accipiatur. Puto hoc fore studium eorum qui etiam res in OpenStack explicant.
Suprema culpa tolerantiae suggestus consistit in mollitia sui componentis. Ita paulatim percurremus omnes gradus in quibus pericula identificavimus eosque clausimus.
Video versionem huius fabulae, cuius fons primarius nuntiabatur in colloquio Uptime diei IV, constituto per , potes videre .
Mollitia corporis architecto
Publica nubis pars MCS nunc in duobus gradibus III centris notis nititur, inter quas fibra sua obscura est, in corporis gradu per diversas vias servata, cum per 200 Gbit/s. ORDO III necessarios gradus culpae tolerantiae pro infrastructura physica praebet.
Fibra obscura in gradibus tam physicis quam logicis servatur. Processus reservationis canalis fuit iterativas, quaestiones ortae sunt, et continuae communicationis inter centra data.
Exempli gratia, non pridem, cum in puteo prope unum e centris emissis, cavator fistulam fregit, et intra hanc fistulam funem opticum et praecipuum erat et tergum. Nostra communicatio culpae tolerans cum centro notariorum evasit uno in puncto vulnerari, in puteo. Ideoque partem infrastructure amisimus. Concludimus et compluras actiones cepimus, additis etiam inauguratis opticis bene vicinis.
In notitiis centris exstant puncta praesentiae provisorum communicationis, quibus praefixiones nostras spargimus per BGP. Utraque directione retis, optima metrica seligitur, quae diversos clientes optimo nexu qualitatis praeberi sinit. Si communicatio per unum provisorem descenderit, aedificamus excitationem per provisores promptos.
Si provisor deficit, automatice ad proximum vertas. In eventu unius centri defectio datarum, speculum habemus exemplar operarum nostrarum in altera notularum centro, quae totum onus suscipiunt.

Invicta physica infrastructure
Quod ad applicationem gradus culpae tolerantiae utimur
Ministerium nostrum in pluribus componentibus opensource componentibus aedificatum est.
ExaBGP servitium est quod pluribus functionibus instrumentis utens BGP fundatum est protocollum dynamicum. Actively ea utimur ad praeconia IP inscriptionum nostrarum dealbatorum per quas utentes API accedere.
HAProxy Summus onus librator est qui te permittit configurare flexibile commercium aequilibrantis regulas in diversis gradibus exemplar OSI. Utimur ea ad paria ante omnia officia: databases, nuntius sectorum, API officia, opera telae, opera interna nostra - omnia desunt HAProxy.
API application - telae applicationis pythone scriptae, quibus utens suam infrastructuram et ministerium administrat.
Faciens applicationem (inferius simpliciter operarius) - in OpenStack officia, hoc est daemon infrastructus, qui te permittit ut API iaciendi mandata ad infrastructuram. Verbi gratia, orbis creatio in opifice, postulatio creatio in applicatione API occurrit.
Latin OpenStack Application Architecture
Pleraque officia, quae pro OpenStack explicantur, unum paradigma sequi conantur. Ministerium plerumque consistit in 2 partibus: API et operarii (executores backend). Pro regula, API applicatio est WSGI in Pythone, quae vel ut processum independentem (daemon) emittit vel utens praeparato Nginx vel Apache instrumenti interretiali. API petitio utentis procedit et ulteriores instructiones transit ad applicationem laborantis ad executionem. Translatio fit utens nuntius sectoris, plerumque RabbitMQ, ceteri male sustinentur. Cum epistulae ad sectorem perveniunt, ab operariis discursum sunt et, si opus est, responsionem reddunt.
Hoc paradigma separatim implicat puncta communia defectionis: RabbitMQ et datorum. Sed RabbitMQ semotus est intra unum servitium et, secundum rationem, potest esse individuum pro unoquoque servitio. Itaque in MCS haec officia quam maxime separamus: singula enim opera singulatim database, separatum RabbitMQ efficimus. Ad secundum dicendum quod aditus est bonus, quia in eventu accidentis in aliquo punctorum vulnerabilium non totum ministerium frangitur, sed solum pars eius.
Numerus applicationum laborantium infinitus est, sic API post librarios facile scandere potest, ut tolerantiae et culpae observantia augeatur.
Quaedam officia coordinationem in servitio requirunt cum multiplices operationes sequentes inter APIs et opifices occurrunt. Hoc in casu, unum centrum coordinatio adhibetur, botrus ratio qualia Redis, Memcache, etc., quae permittit operario alteri narrare hoc negotium ei deputatum esse (" Noli accipere illud "). Utimur etc. Pro regula, operarii cum datorum actuose communicant, inde nuntios scribe et lege. Mariadb utimur quasi database, quod in multimagistri botro situm est.
Hoc classicum unicum servitium ordinatur modo generaliter pro OpenStack accipiendum. Ratio clausa considerari potest, ob quam methodi scalae et culpae tolerantiae satis manifesti sunt. Exempli gratia, pro culpa tolerantiae API, satis est libratorem ponere ante eos. Opifices scandentes numerum augendo efficiunt.
Infirmum in toto schemate est RabbitMQ et MariaDB. Eorum architectura meretur articulum separatum, In hoc articulo culpam tolerantiae API intendere volo.

Openstack Application Architecture. Librans et culpae tolerantia nubis suggestus
Faciens HAProxy librator culpae patientissimus usus ExaBGP
Ut APIs nostras scalabiles, celeriter et tolerantes faciant, pondus librarius coram illis ponimus. Elegimus HAProxy. Opinor, omnes notas necessarias ad nostrum munus habet: librans in pluribus OSI gradus, administratio instrumenti, flexibilitas et scalabilitas, magnus numerus rationum conpensationis, tabularum sessionum sustentatio.
Primum problema, quod solvendum oportuit, erat culpa aequilibrii ipsa tolerantia. Simpliciter inauguratus librarius etiam punctum deficiendi efficit: librator frangit et servitium fragores. Quod ut ne fieret, HAProxy coniuncti usi sumus cum ExaBGP.
ExaBGP permittit te machinamentum efficiendi ad reprimendum statum servitii. Hac mechanismo usi sumus ad functionem HAProxy reprimendam et, in casu quaestionum, ministerium HAProxy ab BGP disable.
ExaBGP+HAProxy schema
- Necessarium instituimus programmatum ExaBGP et HAProxy in tribus servientibus.
- Facimus loopback instrumenti in singulis ministris.
- In omnibus tribus ministris idem album IP huic interfacei assignamus.
- Inscriptio IP alba publicatur in Interreti per ExaBGP.
Tolerantia culpae effectum est per vendo eandem IPscriptionem ab omnibus tribus servientibus. Ex parte retis, eadem oratio ex tribus proximis ASSULTIM patet. Iter itineris tres vias identicas videt, earum summam eligit prioritatem ex propria metrica (haec fere eadem optione) et negotiatio uni tantum ministrantium accedit.
In casu problematum cum operatione HAProxy vel servientis defectionis, ExaBGP cessat iter nuntiare, et negotiatio blande permutat alteri servo.
Quapropter tolerantiam libratoris culpa consecuti sumus.

Culpa tolerantia HAProxy balancers
Consilium imperfectum evasit: nos didicimus HAProxy reservare, sed onus intra officia distribuere non didicimus. Propterea hoc schema paululum dilatavimus: pervenimus ad conpensationem inter inscriptiones aliquot albas IP.
DNS plus BGP aequatis fundatur
Eventus oneris libratio HAProxy nostro manet resolutus. Sed potest simpliciter solvi, ut hic.
Ad tres servos paria debes 3 alba IP inscriptiones et bona antiqua DNS. Utraque harum inscriptionum in loopback instrumenti cuiusque HAProxy determinatur et in Interreti proscribitur.
In OpenStack, ad facultates regendas, directorium servitium adhibetur, quod designat terminum API cuiusdam servitii. In hoc directorio subcriptio nomen nationis - public.infra.mail.ru, quod per DNS per tres IP inscriptiones varias resolvitur. Quam ob rem onus accipimus distributionem inter tres inscriptiones per DNS.
Sed quia, cum album IP inscriptiones annuntiemus, ordinem electionis ministrare non regimus, hoc tamen non aequat. De more, unus tantum cultor eligendus est propter antiquitatem IP inscriptionem, et alia duo otiosa erunt quia nulla metrica in BGP specificata sunt.
Nos incepimus itinera per ExaBGP cum diversis metricis. Singulus librarius tres omnes inscriptiones albas IP venditat, sed una earum, praecipua huius libri librarius, cum minima metrica proscribitur. Cum itaque omnes tres libratores in operatione sint, vocat ad primum IP ad primum libratorem, vocat ad secundum ad secundum, et vocat ad tertium ad tertium.
Quid fit cum unus librariorum cadit? Si quis librarius deficiat, eius inscriptio principalis adhuc ab aliis duobus proscripta est, et merces inter eos distribuitur. Ita pluribus IP inscriptionibus utentis statim per DNS damus. Per DNS et metrica diversa conpensando aequam distributionem oneris per omnes tres librarios accipimus. Et simul tolerantia culpam non amittimus.

Librans HAProxy secundum DNS + BGP
Commercium inter ExaBGP et HAProxy
Sic nos culpa tolerantiae effectum est in casu servo relinquit, innixus sistens nuntiationem itinerum. Sed HAProxy claudere potest propter alias causas quam defectum servo: errores administrationis, defectus in servitio. In his quoque casibus volumus fractum libratorem sub onere removere et alia mechanismo indigere.
Itaque, priorem schema dilatantes, pulsationem cordis inter ExaBGP et HAProxy implevimus. Haec est exsecutio programmatis commercii inter ExaBGP et HAProxy, cum ExaBGP more scriptorum utitur ad statum applicationis reprimendum.
Ad hoc faciendum, debes configurare tessellatum sanitatis in config ExaBGP, quod potest inspicere statum HAProxy. In nostro casu, sanitatem backend in HAProxy conformavimus, et ex parte ExaBGP cum simplici petitione GET reprimimus. Si denuntiatio cessat fieri, HAProxy maxime probabile est non operari et nihil necesse est id praeconium facere.

HAProxy Salutem Moderare
HAProxy proceres: sessionis synchronisation
Proximum factu erat sessiones synchronizare. Cum per librarios distributos laborat, difficile est informationes de clientibus sessionibus ceptacula ordinare. Sed HAProxy est unus e paucis libratoribus qui hoc facere possunt propter proceres functionality - facultas transferendi mensas sessionis inter diversos processus HAProxy.
Diversae sunt conpensationis modi: simplices ut et prorogatur, cum commemorata est huius sessionis, et toties terminatur ab eodem servo quo prius. Secundam optionem efficere voluimus.
HAProxy utitur baculo-tabularum ad salvandas clientes huius mechanismi sessiones. IP inscriptionem originalem clientis conservant, electronica scopum delectae (backend) et quaedam informationes muneris. De more, tabulae baculatae adhibentur ad condendum fontem-IP + destination-IP par, quod maxime utile est ad applicationes quae contextus sessionis usoris transferre non possunt, cum ad alium libratorem commutandum, exempli gratia, in RoundRobin modum conpensationis.
Si mensa baculus docetur movere inter diversos processus HAProxy (inter quos conpensatio occurrit), libratores nostri una piscina tabularum sticulorum operari poterunt. Hoc fieri poterit ut compagem reticulum huius reticuli si unus e librariis deficiat, cum clientibus sessionibus opus in eosdem backends qui antea delecti permanebunt.
Ad propriam operationem, quaestio fontis IP oratio libratoris e qua sessio constituta est, solvi debet. In nobis, haec inscriptio dynamica est in instrumento loopback.
Rectum parium opus solum sub certis conditionibus obtinetur. Hoc est, TCP timeouts satis magnae esse debent vel mutandae satis celeriter erunt ut sessionis TCP tempus terminandi non habeat. Sed inconsutilem mutandi concedit.
In IaaS ministerium habemus aedificatum eadem technica utendo. Hoc quae appellatur Octavia. Duobus processibus HAProxy nititur et initio subsidium parium includit. Egregios in hoc opusculo se probaverunt.
Pictura schematically ostendit motum mensarum parium inter tria instantiarum HAProxy, config proponitur quomodo configurari potest:

HAProxy proceres (sessionis synchronisation)
Si idem schema peragendum, eius operatio sedulo probanda est. Non est factum quod eodem modo 100 temporis laborabit. At certe tabulas baculum non perdes cum debes IP fontem huius meminisse.
Numerum petitionum simultanearum ab eodem cliente circumscripto
Quaelibet officia, quae publice in promptu sunt, etiam nostris APIs, subici possunt petitionum avalanches. Rationes earum omnino diversae esse possunt, ab erroribus utentium contra impetus iaculis. Nos intervenit DDoSed ab IP inscriptionibus. Clientes saepe in suis scriptis peccant et nobis mini-DDos dant.
Uno modo vel alio, tutelarium adiectis providendum est. Solutio manifesta est circumscribere numerum petitionum API et tempus non terere CPU postulationes malignas dispensando.
Ad huiusmodi restrictiones deducendi limites rate utimur, in ratione HAProxy constituto, iisdem tabulis infixis adhibitis. Limites constituens simplex admodum est ac permittit ut numerum petitionum API circumscribere utentem. Algorithmus meminit fontem IP e quo petitiones fiunt et finiunt numerum petitionum simultanearum ab uno usuario. Scilicet, mediocris API onus profile pro singulis officiis computavimus et terminum ≈ 10 temporibus huius valoris posuit. Pergimus ad rem proxime monitorem et digitum pulsum serva.
Quid hoc simile in usu? Clientes habemus qui nostris APIs autoscaling utuntur omni tempore. Machinationes virtuales prope duas ad trecentos creant in mane et vesperi eas delebunt. Pro OpenStack, virtualem machinam creans, etiam cum PaaS officia, postulata saltem 1000 API requirit, cum commercium inter officia etiam per API occurrat.
Haec translatio negotiorum maius onus facit. Hoc onus aestimavimus, cacumina cottidiana collegimus, ea decuplum auximus, et haec nostra facta est modus. Digitum nostrum in pulsu servamus. Saepe videmus automata et sclopetatores qui nos intueri conantur videre an scripta CGA habemus quae currere possunt, eas actuose secantes.
Quam ut update vestri users sine notatione codebase
Etiam culpa tolerantiae deducendi sumus in ambitu codicis processus instruere. Potest esse glitches in rollouts, sed eorum impetus in promptuandi servitio minui potest.
Constanter officia nostra renovamus ac operam dare debet ut codebase sine usoribus afficiendis renovatur. Hanc quaestionem solvere curavimus utens facultates administrationis HAProxy et Shutdown gratiosae exsecutionis in officiis nostris.
Ad hanc quaestionem solvendam, necesse erat ut moderatio libratoris et shutdown officiorum "recte";
- In casu HAProxy, imperium exercetur per tabellam stativam, quae essentialiter nervum est et in HAProxy config definitur. Imperat tibi via stdio mittere potes. Nostra autem configuratione principalis instrumentum temperantiae ansibile est, unde constructum-in modulo ad HAProxy administrandum habet. Quo naviter utimur.
- Plerique nostri API et machinis officia shutdown technologias elegantes sustinent: cum claudendi, exspectant munus hodiernum ad perficiendum, fiat postulatio vel munus aliquod muneris. Idem fit cum artifice. Novit omnia opera quae agit et terminatur cum omnia feliciter consummavit.
Per haec duo puncta, algorithmus tutum nostrae instituti hoc simile videtur.
- Elit novum sarcinam codicis (nobis hoc RPM) colligit, in dev ambitu probat, in scaena probat et in theatro repositorium relinquit.
- Elit munus instruere cum accuratissima descriptione "artificiorum" ponit: versio novae sarcinae, descriptio novae functionis et alia singularia de instruere si necesse est.
- Administrator systema renovatio incipit. Playbook Ansible immittit, qui sequentem vicissim facit:
- Sarcinam e promptuario scenico accipit et eo utitur ad renovandam versionem sarcinae in repositorio producti.
- Indicem chirographorum componit servitii renovati.
- Primum ministerium in HAProxy renovandum claudit et processus suos ad cursum perficiendum exspectat. Gratias agimus shutdown, confidimus omnes clientes current petitiones perficiet feliciter.
- Postquam API et operarii omnino cessaverunt et HAProxy aversa est, signum renovatum est.
- Ansible officia fugit.
- Ad unumquodque ministerium trahuntur quaedam "ancula", quae unitatem faciunt experimentum in multis probatis clavibus praedefinitis. Praecipua perscriptio novi codicis fit.
- Si sine errore in priore gradu inventi fuerint, posteriora reducitur.
- Transeamus ad proximum backend.
- Postquam omnia backenda sunt renovata, probatae functionis sunt deductae. Si carent, elit tunc novam functionem quam ipse creaverat spectat.
Hoc perficit instruere.

Service update exolvuntur
Quae res si unam regulam non haberemus, opus non esset. Nos tam veteres quam novae versiones in proelio sustinemus. Faevus, in programmatis evolutionis scaena, statuitur quod, etiamsi mutationes sint in datorum ministerio, codicem priorem non frangant. Quam ob rem signum basis paulatim renovatum est.
conclusio,
Cogitationes meas communicantes de architectura vitiosorum tolerantium, iterum notare volumus cardinis eius:
- corporis culpa tolerantiam;
- culpa retis tolerantia (balancera, BGP);
- culpa tolerantiae programmatis adhibita et amplificata est.
Stabilis uptime quisque!
Source: www.habr.com
