
Nyob zoo, Habr! Kuv yog Artem Karamyshev, tus thawj coj ntawm pab pawg tswj hwm lub kaw lus. Xyoo tas los no, peb tau tsim ntau yam khoom tshiab. Peb xav kom peb cov kev pabcuam API yooj yim scalable, fault-tolerant, thiab npaj txhij rau kev loj hlob sai ntawm cov neeg siv. Peb lub platform yog tsim los ntawm OpenStack, thiab kuv xav qhia qee qhov teeb meem ntawm kev ua haujlwm tsis zoo uas peb yuav tsum tau daws kom ua tiav lub kaw lus fault-tolerant. Kuv xav tias qhov no yuav yog qhov txaus siab rau cov neeg uas tsim cov khoom ntawm OpenStack.
Qhov kev ua tau zoo ntawm lub platform nyob ntawm seb nws cov khoom puas ua tau zoo. Yog li, peb yuav maj mam ua haujlwm los ntawm txhua txheej uas peb tau txheeb xyuas thiab daws cov kev pheej hmoo.
Ib daim vis dis aus ntawm zaj dab neeg no, qhov chaw pib yog kev nthuav qhia ntawm Uptime hnub 4 lub rooj sib tham, uas tau teeb tsa los ntawm , koj tuaj yeem saib .
Kev kam rau ua txhaum ntawm lub cev architecture
Qhov chaw pej xeem ntawm MCS huab tam sim no nyob hauv ob lub chaw khaws ntaub ntawv Tier III, txuas nrog los ntawm lub network fiber tsaus nti uas muaj kev rov ua dua tshiab thiab muaj throughput ntawm 200 Gbps. Tier III muab qib kev zam txim rau qhov kev puas tsuaj rau cov khoom siv lub cev.
Cov fiber tsaus nti tsis muaj dab tsi ntxiv rau ob qho tib si ntawm lub cev thiab qib kev xav. Cov txheej txheem redundancy channel yog rov ua dua, thiab thaum muaj teeb meem tshwm sim, peb pheej txhim kho kev sib txuas ntawm cov chaw khaws ntaub ntawv.
Piv txwv li, tsis ntev los no, thaum ua haujlwm hauv ib lub qhov dej ze ntawm peb lub chaw khaws ntaub ntawv, ib lub tshuab khawb av tau tho ib lub yeeb nkab, uas muaj ob qho tib si cov xov hlau fiber optic thawj thiab cov xov hlau thaub qab. Peb txoj kev sib txuas lus tsis muaj kev nyab xeeb nrog lub chaw khaws ntaub ntawv tau muaj kev phom sij ntawm ib qho chaw, lub qhov dej. Yog li ntawd, peb tau poob ib feem ntawm peb cov khoom siv. Peb tau kawm los ntawm qhov no thiab tau ua ntau yam, suav nrog kev txhim kho cov xov hlau fiber optic ntxiv rau hauv ib lub qhov dej nyob ze.
Peb cov chaw khaws ntaub ntawv muaj cov chaw nyob rau cov chaw muab kev pabcuam hauv xov tooj, uas peb tshaj tawm peb cov prefixes rau lawv los ntawm BGP. Cov metric zoo tshaj plaws raug xaiv rau txhua qhov kev taw qhia ntawm lub network, uas ua rau peb muab qhov zoo tshaj plaws kev sib txuas rau cov neeg siv khoom sib txawv. Yog tias kev sib txuas los ntawm ib tus neeg muab kev pabcuam raug cuam tshuam, peb rov kho peb txoj kev xa mus los ntawm cov chaw muab kev pabcuam uas muaj.
Yog tias tus neeg muab kev pabcuam ua tsis tau haujlwm, peb yuav hloov mus rau tus neeg muab kev pabcuam tom ntej. Yog tias ib lub chaw khaws ntaub ntawv ua tsis tau haujlwm, peb yuav muaj daim qauv theej ntawm peb cov kev pabcuam hauv lub chaw khaws ntaub ntawv thib ob, uas yuav siv tag nrho cov kev pabcuam.

Kev ruaj khov ntawm cov khoom siv lub cev
Peb siv dab tsi rau kev ua txhaum cai ntawm daim ntawv thov
Peb qhov kev pabcuam yog tsim los ntawm ntau yam khoom qhib.
ExaBGP — ib qho kev pabcuam uas siv ntau yam haujlwm siv BGP-based dynamic routing protocol. Peb siv nws los tshaj tawm peb cov chaw nyob IP uas tau teev tseg dawb, uas cov neeg siv nkag mus rau API.
HAPROxy — ib qho khoom siv sib npaug ntawm cov khoom siv uas muaj zog heev uas tso cai rau koj teeb tsa cov cai sib npaug ntawm cov tsheb khiav ntawm ntau txheej ntawm OSI qauv. Peb siv nws rau kev sib npaug ntawm txhua qhov kev pabcuam: cov ntaub ntawv khaws cia, cov neeg xa xov, cov kev pabcuam API, cov kev pabcuam web, thiab peb cov haujlwm sab hauv—txhua yam siv los ntawm HAProxy.
Daim ntawv thov API — ib daim ntawv thov web sau ua Python, uas tus neeg siv tswj hwm lawv cov khoom siv, lawv cov kev pabcuam.
Daim ntawv thov ua haujlwm (txij no mus hu ua tus neeg ua haujlwm) yog ib qho infrastructure daemon hauv OpenStack cov kev pabcuam uas ua rau API cov lus txib xa mus rau qhov infrastructure. Piv txwv li, disk creation tshwm sim hauv tus neeg ua haujlwm, thiab qhov kev thov tsim raug xa mus rau API daim ntawv thov.
OpenStack Daim Ntawv Thov Txuj Ci Qauv
Feem ntau cov kev pabcuam uas tsim los rau OpenStack sim ua raws li tus qauv sib koom ua ke. Ib qho kev pabcuam feem ntau muaj ob ntu: API thiab cov neeg ua haujlwm (backend executors). Feem ntau, API yog daim ntawv thov WSGI sau ua Python, uas khiav ua ib qho txheej txheem standalone (daemon) lossis siv lub web server zoo li Nginx lossis Apache. API ua cov lus thov ntawm tus neeg siv thiab xa cov lus qhia ntxiv rau daim ntawv thov neeg ua haujlwm rau kev ua tiav. Qhov kev xa xov no tshwm sim los ntawm tus neeg xa xov, feem ntau yog RabbitMQ; lwm hom tsis tau txais kev txhawb nqa zoo. Thaum cov lus mus txog tus neeg xa xov, cov neeg ua haujlwm ua lawv thiab, yog tias tsim nyog, rov qab teb.
Tus qauv no txhais tau tias muaj cov ntsiab lus sib cais uas ua tsis tiav: RabbitMQ thiab lub ntaub ntawv khaws cia. Txawm li cas los xij, RabbitMQ raug cais tawm hauv ib qho kev pabcuam thiab, hauv kev xav, tuaj yeem tshwj xeeb rau txhua qhov kev pabcuam. Yog li, ntawm MCS, peb cais cov kev pabcuam no ntau li ntau tau, tsim cov ntaub ntawv khaws cia sib cais thiab RabbitMQ sib cais rau txhua qhov project. Txoj hauv kev no muaj txiaj ntsig zoo vim tias yog tias muaj kev ua tsis tiav tshwm sim ntawm qhov chaw tsis muaj zog, tsuas yog ib feem ntawm qhov kev pabcuam, tsis yog tag nrho cov kev pabcuam, raug cuam tshuam.
Tsis muaj kev txwv rau tus naj npawb ntawm cov ntawv thov ua haujlwm, yog li API tuaj yeem yooj yim scaled horizontally tom qab balancers kom nce kev ua tau zoo thiab kev ua txhaum kam rau siab.
Qee cov kev pabcuam xav tau kev sib koom tes hauv kev pabcuam - thaum muaj kev ua haujlwm nyuaj ntawm APIs thiab cov neeg ua haujlwm. Hauv qhov no, ib lub chaw sib koom tes siv, ib lub kaw lus cluster zoo li Redis, Memcache, thiab lwm yam, uas tso cai rau ib tus neeg ua haujlwm qhia rau lwm tus tias muaj ib txoj haujlwm raug muab rau lawv ("thov tsis txhob coj nws"). Peb siv lwm yam. Feem ntau, cov neeg ua haujlwm sib txuas lus nrog lub database, sau thiab nyeem cov ntaub ntawv los ntawm nws. Peb siv mariadb ua peb lub database, uas nyob hauv peb lub cluster ntau tus tswv.
Qhov kev pabcuam ib leeg no tau teeb tsa raws li txoj kev uas OpenStack lees txais. Nws tuaj yeem pom tau tias yog ib lub kaw lus kaw, nrog rau kev teeb tsa yooj yim thiab kev xaiv ua kom tsis txhob ua yuam kev. Piv txwv li, txhawm rau kom ntseeg tau tias API ua kom tsis txhob ua yuam kev, tsuas yog tso lub load balancer rau pem hauv ntej ntawm API. Kev teeb tsa neeg ua haujlwm yog ua tiav los ntawm kev nce lawv tus lej.
Cov qhov tsis muaj zog hauv tag nrho cov phiaj xwm yog RabbitMQ thiab MariaDB. Lawv cov qauv tsim nyog tau txais tsab xov xwm sib cais. Hauv tsab xov xwm no, kuv xav tsom mus rau API qhov kev ua txhaum.

OpenStack Application Architecture: Kev Sib Npaug thiab Kev Ua Phem Rau Lub Platform Huab
Ua kom HAProxy Load Balancer Fault-Toleler nrog ExaBGP
Yuav kom peb cov APIs muaj peev xwm scalable, ceev, thiab fault-tolerant, peb tau teeb tsa lub load balancer. Peb xaiv HAProxy. Hauv kuv lub tswv yim, nws muaj tag nrho cov yam ntxwv tsim nyog rau peb cov kev xav tau: load balancing ntawm ntau txheej OSI, lub interface tswj, kev ywj pheej thiab scalability, ntau yam kev sib npaug ntawm load, thiab kev txhawb nqa lub rooj sib tham.
Qhov teeb meem thawj zaug uas yuav tsum tau daws yog qhov ua tsis tau zoo ntawm lub load balancer nws tus kheej. Tsuas yog txhim kho lub load balancer tsim ib qho chaw ua tsis tiav: yog tias lub load balancer ua tsis tiav, qhov kev pabcuam yuav poob qis. Txhawm rau tiv thaiv qhov no, peb siv HAProxy ua ke nrog ExaBGP.
ExaBGP ua kom muaj ib txoj kev kuaj xyuas kev noj qab haus huv ntawm cov kev pabcuam. Peb siv txoj kev no los kuaj xyuas HAProxy txoj kev noj qab haus huv thiab, yog tias muaj teeb meem tshwm sim, los kaw qhov kev pabcuam HAProxy ntawm BGP.
Txoj Kev Npaj ExaBGP+HAProxy
- Peb nruab cov software tsim nyog, ExaBGP thiab HAProxy, rau ntawm peb lub servers.
- Peb tsim ib lub loopback interface rau txhua lub servers.
- Ntawm tag nrho peb lub servers, peb sau npe tib lub chaw nyob IP dawb ntawm qhov interface no.
- Qhov chaw nyob IP dawb tau tshaj tawm rau hauv Is Taws Nem ntawm ExaBGP.
Kev ua kom tsis txhob muaj qhov yuam kev yog ua tiav los ntawm kev tshaj tawm tib qho chaw nyob IP los ntawm peb lub servers. Los ntawm lub network qhov kev xav, tib qhov chaw nyob tuaj yeem nkag tau los ntawm peb qhov hops tom ntej sib txawv. Lub router pom peb txoj kev zoo sib xws, xaiv txoj kev tseem ceeb tshaj plaws raws li nws tus kheej metric (feem ntau yog tib txoj kev), thiab tsheb khiav tsuas yog xa mus rau ib qho ntawm cov servers.
Yog tias muaj teeb meem nrog HAProxy lossis lub server tsis ua haujlwm, ExaBGP tsis tshaj tawm txoj kev, thiab tsheb khiav tau hloov mus rau lwm lub server.
Ua li no, peb tau ua tiav qhov kev kam rau ua txhaum ntawm lub balancer.

HAProxy Load Balancer Fault Tolerance
Qhov kev teeb tsa tsis zoo tag nrho: peb tau kawm paub yuav ua li cas thaub qab HAProxy, tab sis peb tsis tau kawm paub yuav ua li cas faib cov khoom thauj thoob plaws cov kev pabcuam. Yog li peb tau nthuav dav qhov kev teeb tsa me ntsis, hloov mus rau qhov sib npaug ntawm cov khoom thauj hla ntau qhov chaw nyob IP pej xeem.
Kev sib npaug ntawm kev thauj khoom raws li DNS ntxiv rau BGP
Qhov teeb meem ntawm kev sib npaug ntawm qhov load nyob rau pem hauv ntej ntawm peb HAProxy tseem tsis tau daws. Txawm li cas los xij, nws tuaj yeem daws tau yooj yim heev, zoo li peb tau ua rau peb tus kheej.
Yuav kom muaj peb lub servers sib npaug, koj yuav tsum muaj peb qhov chaw nyob IP pej xeem thiab DNS qub zoo. Txhua qhov chaw nyob no tau muab rau lub loopback interface ntawm txhua HAProxy thiab tshaj tawm rau hauv internet.
OpenStack siv ib daim ntawv teev cov kev pabcuam los tswj cov peev txheej, uas txhais qhov API kawg rau txhua qhov kev pabcuam. Hauv daim ntawv teev no, peb teev ib lub npe sau - public.infra.mail.ru - uas daws tau los ntawm DNS rau peb qhov chaw nyob IP sib txawv. Qhov no ua rau muaj kev sib npaug ntawm peb qhov chaw nyob siv DNS.
Txawm li cas los xij, vim peb tsis tswj hwm qhov tseem ceeb ntawm kev xaiv server thaum tshaj tawm cov chaw nyob IP dawb, qhov no tseem tsis tau sib npaug. Feem ntau, tsuas yog ib lub server yuav raug xaiv raws li qhov chaw nyob IP siab tshaj plaws, thaum ob lub server seem yuav tsis ua haujlwm vim tsis muaj cov ntsuas tau teev tseg hauv BGP.
Peb tau pib faib cov kev mus los ntawm ExaBGP nrog cov ntsuas sib txawv. Txhua lub load balancer tshaj tawm tag nrho peb qhov chaw nyob IP dawb, tab sis ib qho ntawm lawv, qhov chaw nyob IP tseem ceeb rau lub load balancer ntawd, tau tshaj tawm nrog qhov ntsuas tsawg kawg nkaus. Yog li, thaum tag nrho peb lub load balancer ua haujlwm, cov lus thov rau thawj qhov chaw nyob IP mus rau thawj lub load balancer, cov lus thov rau qhov thib ob mus rau qhov thib ob, thiab cov lus thov rau qhov thib peb mus rau qhov thib peb.
Yuav ua li cas thaum ib qho ntawm cov load balancers tsis ua haujlwm? Yog tias muaj ib qho load balancer tsis ua haujlwm, nws qhov chaw nyob tseem ceeb tseem raug tshaj tawm los ntawm ob qho ntxiv, thiab cov tsheb khiav rov faib dua ntawm lawv. Txoj kev no, peb muab rau tus neeg siv ntau qhov chaw nyob IP ntawm DNS. Los ntawm kev sib npaug ntawm DNS thiab cov ntsuas sib txawv, peb ua tiav kev faib khoom sib npaug thoob plaws peb qhov load balancers, thaum tswj hwm qhov ua yuam kev.

HAProxy Load Balanced nrog DNS thiab BGP
Kev sib cuam tshuam ntawm ExaBGP thiab HAProxy
Yog li, peb tau siv kev tiv thaiv failover tiv thaiv lub sijhawm tsis ua haujlwm ntawm lub server los ntawm kev tso tseg kev tshaj tawm txoj kev. Tab sis HAProxy tuaj yeem poob qis rau lwm yam laj thawj tsis yog kev ua tsis tiav ntawm lub server: kev ua yuam kev hauv kev tswj hwm, kev ua tsis tiav ntawm kev pabcuam sab hauv. Peb xav tshem tawm qhov kev sib npaug ntawm qhov load uas poob qis los ntawm kev sib npaug ntawm qhov load hauv cov rooj plaub no thiab, yog li peb xav tau lwm txoj hauv kev.
Yog li ntawd, nthuav dav ntawm cov phiaj xwm yav dhau los, peb tau siv lub plawv dhia ntawm ExaBGP thiab HAProxy. Qhov no yog kev siv software ntawm kev sib cuam tshuam ntawm ExaBGP thiab HAProxy, qhov twg ExaBGP siv cov ntawv sau tshwj xeeb los xyuas qhov xwm txheej ntawm cov ntawv thov.
Yuav ua li no, koj yuav tsum teeb tsa tus neeg kuaj xyuas kev noj qab haus huv hauv ExaBGP configuration uas tuaj yeem tshawb xyuas qhov xwm txheej ntawm HAProxy. Hauv peb qhov teeb meem, peb tau teeb tsa tus backend kev noj qab haus huv hauv HAProxy, thiab ntawm sab ExaBGP, peb tshawb xyuas nrog kev thov GET yooj yim. Yog tias qhov kev tshaj tawm nres, HAProxy yuav tsis ua haujlwm thiab tsis tas yuav tshaj tawm.

Kev Tshuaj Xyuas Kev Noj Qab Haus Huv HAProxy
HAProxy Peers: Kev Sib Tham Sib Tham
Qhov tom ntej uas yuav tsum ua yog synchronize sessions. Thaum ua haujlwm nrog cov distributed load balancers, kev khaws cov ntaub ntawv client session yog qhov nyuaj. Tab sis HAProxy yog ib qho ntawm ob peb lub load balancers uas tuaj yeem ua qhov no ua tsaug rau nws cov Peers feature, uas tso cai rau lub rooj sib tham kom sib koom ntawm cov txheej txheem HAProxy sib txawv.
Muaj ntau txoj kev sib npaug: cov yooj yim, xws li , thiab cov uas txuas ntxiv mus, qhov twg lub sijhawm sib tham ntawm tus neeg siv khoom raug nco ntsoov thiab lawv raug coj mus rau tib lub server txhua zaus. Peb xav siv qhov kev xaiv thib ob.
HAProxy siv cov lus qhia stick los khaws cov kev sib tham ntawm cov neeg siv khoom. Lawv khaws cov chaw nyob IP ntawm tus neeg siv khoom, qhov chaw nyob uas koj xaiv (backend), thiab qee cov ntaub ntawv kev pabcuam. Cov lus qhia stick feem ntau yog siv los khaws cov khub IP ntawm qhov chaw thiab cov khub IP ntawm qhov chaw, uas yog qhov tshwj xeeb tshaj yog rau cov ntawv thov uas tsis tuaj yeem hloov cov ntsiab lus ntawm kev sib tham ntawm cov neeg siv khoom thaum hloov mus rau lwm lub load balancer, xws li hauv RoundRobin load balancing mode.
Los ntawm kev qhia lub rooj stick kom txav mus los ntawm ntau yam txheej txheem HAProxy sib txawv (qhov twg qhov load balancing tshwm sim), peb cov load balancers yuav muaj peev xwm ua haujlwm nrog ib pawg ntawm cov rooj stick. Qhov no yuav ua rau muaj kev sib txuas lus tsis muaj teeb meem yog tias ib qho load balancer tsis ua haujlwm, thiab cov kev sib tham ntawm cov neeg siv khoom yuav txuas ntxiv mus rau tib qho backends uas tau xaiv ua ntej.
Yuav kom ua haujlwm tau zoo, qhov teeb meem nrog qhov chaw nyob IP ntawm lub load balancer uas lub session tau tsim los yuav tsum tau daws. Hauv peb qhov teeb meem, qhov no yog qhov chaw nyob dynamic ntawm lub loopback interface.
Cov phooj ywg tsuas ua haujlwm kom zoo nyob rau hauv qee qhov xwm txheej. Tshwj xeeb, TCP lub sijhawm tawm yuav tsum ntev txaus, lossis qhov hloov pauv yuav tsum ceev txaus kom tiv thaiv TCP kev sib tham kom tsis txhob raug xaus. Txawm li cas los xij, qhov no tso cai rau kev hloov pauv tsis muaj teeb meem.
Peb muaj kev pabcuam hauv IaaS uas siv cov thev naus laus zis zoo ib yam. , hu ua Octavia. Nws yog raws li ob txoj kev HAProxy thiab muaj kev txhawb nqa rau cov phooj ywg. Lawv tau ua pov thawj lawv tus kheej zoo heev rau qhov kev pabcuam no.
Daim duab qhia txog kev txav ntawm cov peer tables ntawm peb HAProxy instance, thiab muaj kev teeb tsa los qhia txog yuav ua li cas teeb tsa qhov no:

HAProxy Peers (kev sib dhos ua ke)
Yog koj siv ib txoj kev npaj zoo sib xws, koj yuav tsum ua tib zoo sim nws. Nws tsis tau lees tias yuav ua haujlwm 100% ntawm lub sijhawm. Tab sis tsawg kawg koj yuav tsis poob koj cov lus nplaum thaum koj xav tau nco ntsoov tus neeg siv khoom qhov chaw nyob IP.
Txwv tus naj npawb ntawm cov kev thov tib lub sijhawm los ntawm tib tus neeg siv khoom
Txhua qhov kev pabcuam uas pej xeem siv tau, suav nrog peb cov APIs, yuav raug ntau qhov kev thov. Cov laj thawj tuaj yeem sib txawv ntau, los ntawm qhov yuam kev ntawm tus neeg siv mus rau kev tawm tsam uas tsom mus rau. Peb ib txwm ntsib kev tawm tsam IP DDoS. Cov neeg siv khoom feem ntau ua yuam kev hauv lawv cov ntawv sau, ua rau muaj kev tawm tsam mini-DDoS.
Txawm li cas los xij, yuav tsum muaj kev ntsuas kev ruaj ntseg ntxiv. Ib qho kev daws teeb meem pom tseeb yog txwv tus naj npawb ntawm cov kev thov API thiab zam kev nkim sijhawm CPU ua cov kev thov phem.
Yuav kom ua tiav cov kev txwv no, peb siv cov kev txwv tus nqi uas tsim los ntawm HAProxy siv tib lub rooj sib dhos. Cov kev txwv yooj yim heev rau kev teeb tsa thiab tso cai rau koj txwv tus naj npawb ntawm cov kev thov API uas tus neeg siv tuaj yeem ua tau. Lub algorithm nco qab qhov chaw IP uas cov kev thov tau ua thiab txwv tus naj npawb ntawm cov kev thov tib lub sijhawm rau ib tus neeg siv. Ntawm chav kawm, peb tau xam qhov nruab nrab ntawm API load profile rau txhua qhov kev pabcuam thiab teeb tsa qhov txwv kwv yees li 10 npaug siab dua tus nqi no. Peb txuas ntxiv saib xyuas qhov xwm txheej ze, khaws peb tus ntiv tes rau ntawm lub plawv dhia.
Qhov no ua haujlwm li cas hauv kev xyaum? Peb muaj cov neeg siv khoom uas siv peb cov APIs rau kev ua kom tsis txhob poob nyiaj. Lawv tsim kwv yees li ob txog peb puas lub tshuab virtual thaum sawv ntxov thiab rho tawm lawv thaum yav tsaus ntuj. Rau OpenStack, kev tsim lub tshuab virtual, tshwj xeeb tshaj yog nrog cov kev pabcuam PaaS, xav tau tsawg kawg 1000 qhov kev thov API, vim tias kev sib cuam tshuam ntawm cov kev pabcuam kuj tshwm sim los ntawm APIs.
Cov kev hloov pauv haujlwm no tsim kom muaj kev thauj khoom loj heev. Peb tau soj ntsuam qhov kev thauj khoom no, sau cov ncov siab tshaj plaws txhua hnub, nce lawv kaum npaug, thiab qhov no tau dhau los ua peb qhov kev txwv tus nqi. Peb ua tib zoo saib xyuas lub plawv dhia. Peb feem ntau pom cov neeg hlau thiab cov neeg luam theej duab sim saib seb peb puas muaj cov ntawv sau CGA uas tuaj yeem khiav tau, thiab peb txiav lawv.
Yuav ua li cas hloov kho koj cov codebase seamlessly rau cov neeg siv
Peb kuj siv kev zam txim rau qhov ua yuam kev ntawm theem txheej txheem xa cov lej. Kev ua tsis tiav tshwm sim thaum lub sijhawm xa tawm, tab sis lawv qhov cuam tshuam rau kev muaj kev pabcuam tuaj yeem txo qis.
Peb hloov kho peb cov kev pabcuam tas li thiab yuav tsum xyuas kom meej tias cov kev hloov kho codebase raug ua tiav yam tsis muaj kev cuam tshuam rau cov neeg siv. Peb ua tiav qhov no los ntawm kev siv HAProxy lub peev xwm tswj hwm thiab siv Graceful Shutdown hauv peb cov kev pabcuam.
Yuav kom daws tau qhov teeb meem no, nws yog qhov tsim nyog los xyuas kom meej tias kev tswj hwm tus neeg sib npaug thiab kev kaw kev pabcuam "kom raug:
- Nrog HAProxy, kev tswj hwm raug tswj hwm los ntawm cov ntaub ntawv stats, uas yog qhov tseem ceeb ntawm lub qhov (socket) uas tau txhais hauv cov ntaub ntawv teeb tsa HAProxy. Cov lus txib tuaj yeem xa mus rau nws los ntawm stdio. Txawm li cas los xij, peb lub cuab yeej tswj hwm kev teeb tsa tseem ceeb yog Ansible, yog li nws muaj lub module ua rau kev tswj hwm HAProxy, uas peb siv tas li.
- Feem ntau ntawm peb cov kev pabcuam API thiab Engine txhawb nqa kev kaw zoo: thaum kaw, lawv tos kom ua tiav txoj haujlwm tam sim no, txawm tias yog HTTP thov lossis lwm yam haujlwm pabcuam, kom ua tiav. Tib yam tshwm sim nrog tus neeg ua haujlwm. Nws paub txhua txoj haujlwm uas nws ua thiab xaus thaum txhua yam ua tiav.
Ua tsaug rau ob lub ntsiab lus no, peb cov algorithm kev xa tawm ruaj ntseg zoo li no.
- Tus tsim tawm tsim ib pob code tshiab (hauv peb qhov xwm txheej, nws yog RPM), sim nws hauv qhov chaw dev, sim nws hauv qhov chaw theem, thiab tso nws rau hauv qhov chaw khaws cia theem.
- Tus tsim tawm teeb tsa ib txoj haujlwm xa tawm nrog cov lus piav qhia ntxaws ntxaws ntawm "artifacts": qhov version ntawm pob tshiab, cov lus piav qhia ntawm cov haujlwm tshiab, thiab lwm cov ntsiab lus xa tawm, yog tias tsim nyog.
- Tus thawj coj ntawm lub system pib qhov hloov tshiab. Lawv khiav Ansible playbook, uas ua cov hauv qab no:
- Siv ib pob khoom los ntawm lub chaw khaws khoom theem thiab hloov kho cov pob khoom version hauv lub chaw khaws khoom ntau lawm raws li nws.
- Tsim cov npe ntawm cov backends rau qhov kev pabcuam uas tau hloov kho tshiab.
- Kaw qhov kev pabcuam thawj zaug uas tau hloov kho hauv HAProxy thiab tos kom nws cov txheej txheem xaus. Ua tsaug rau kev kaw zoo, peb xyuas kom meej tias txhua qhov kev thov ntawm cov neeg siv khoom tam sim no ua tiav zoo.
- Tom qab API thiab cov neeg ua haujlwm raug tso tseg tag thiab HAProxy raug kaw, cov lej raug hloov kho tshiab.
- Ansible pib cov kev pabcuam.
- Rau txhua qhov kev pabcuam, cov "handles" tshwj xeeb raug rub tawm uas ua qhov kev sim unit tawm tsam ntau qhov kev sim tseem ceeb uas tau teev tseg ua ntej. Kev txheeb xyuas yooj yim ntawm cov lej tshiab tshwm sim.
- Yog tias tsis pom muaj qhov yuam kev hauv kauj ruam dhau los, qhov backend raug qhib.
- Cia peb mus rau qhov backend tom ntej.
- Tom qab hloov kho tag nrho cov backends lawm, kev sim ua haujlwm yuav raug khiav. Yog tias lawv ploj lawm, tus tsim tawm yuav tshuaj xyuas txhua yam kev ua haujlwm tshiab uas lawv tau siv.
Qhov no ua tiav qhov kev xa tawm.

Lub voj voog hloov tshiab kev pabcuam
Lub kaw lus no yuav tsis ua haujlwm yog tias peb tsis muaj ib txoj cai. Peb tswj hwm ob qho tib si cov qauv qub thiab tshiab tib lub sijhawm. Peb xyuas kom meej txij thaum pib, thaum lub sijhawm tsim software, txawm tias muaj kev hloov pauv rau lub hauv paus ntaub ntawv ntawm qhov kev pabcuam, lawv yuav tsis ua txhaum cov lej dhau los. Yog li ntawd, cov lej hauv paus tau hloov kho maj mam.
xaus
Qhia kuv txoj kev xav txog qhov kev tsim qauv web uas ua rau muaj qhov yuam kev, kuv xav rov hais dua nws cov ntsiab lus tseem ceeb:
- kev kam rau ua txhaum ntawm lub cev;
- kev kam rau ua qhov txhaum ntawm lub network (cov khoom sib npaug, BGP);
- kev ua siab ntev ntawm cov software siv thiab tsim tawm.
Muaj lub sijhawm ruaj khov rau txhua tus!
Tau qhov twg los: www.hab.com
