Hi!
Å ikita atkal ir ar jums, sistÄmas inženieris no uzÅÄmuma SEMrush. Un ar Å”o rakstu es turpinu stÄstu par to, kÄ mÄs nonÄcÄm pie risinÄjuma ĶīnieÅ”u ugunsmÅ«ris mÅ«su pakalpojumam semrush.com.
Š
- kÄdas problÄmas rodas pÄc lÄmuma pieÅemÅ”anas āMums jÄpanÄk, lai mÅ«su serviss darbotos ĶīnÄā
- KÄdas problÄmas ir Ķīnas internetam?
- kÄpÄc jums ir nepiecieÅ”ama ICP licence?
- kÄ un kÄpÄc mÄs nolÄmÄm pÄrbaudÄ«t mÅ«su testÄÅ”anas vietas ar Catchpoint
- kÄds bija mÅ«su pirmÄ risinÄjuma rezultÄts, kas balstÄ«ts uz Cloudflare China Network
- KÄ mÄs atklÄjÄm kļūdu Cloudflare DNS
Å Ä« daļa, manuprÄt, ir visinteresantÄkÄ, jo tÄ ir vÄrsta uz konkrÄtiem iestudÄjuma tehniskajiem izpildÄ«jumiem. Un mÄs sÄksim vai drÄ«zÄk turpinÄsim ar Alibaba Cloud.
Alibaba Cloud
Alibaba Cloud ir diezgan liels mÄkoÅa pakalpojumu sniedzÄjs, kuram ir visi pakalpojumi, kas ļauj godÄ«gi saukt sevi par mÄkoÅpakalpojumu sniedzÄju. Ir labi, ka viÅiem ir iespÄja reÄ£istrÄties Ärvalstu lietotÄjiem un ka lielÄkÄ daļa vietnes ir tulkota angļu valodÄ (Ķīnai tÄ ir greznÄ«ba). Å ajÄ mÄkonÄ« varat strÄdÄt ar daudziem pasaules reÄ£ioniem, kontinentÄlo Ķīnu, kÄ arÄ« OkeÄna Äziju (Honkongu, TaivÄnu utt.).
IPSEC
MÄs sÄkÄm ar Ä£eogrÄfiju. TÄ kÄ mÅ«su testa vietne atradÄs pakalpojumÄ Google Cloud, mums bija jÄsaista Alibaba Cloud ar GCP, tÄpÄc mÄs atvÄrÄm to atraÅ”anÄs vietu sarakstu, kurÄs atrodas Google. TajÄ brÄ«dÄ« viÅiem vÄl nebija sava datu centra HonkongÄ.
TuvÄkais reÄ£ions izrÄdÄ«jÄs Äzija-austrumi1 (TaivÄna). Ali izrÄdÄ«jÄs TaivÄnai tuvÄkais kontinentÄlÄs Ķīnas reÄ£ions cn-Shenzhen (Å enžeÅa).
Ar terraform aprakstÄ«ja un paaugstinÄja visu infrastruktÅ«ru GCP un Ali. 100 Mbit/s tunelis starp mÄkoÅiem pacÄlÄs gandrÄ«z uzreiz. Å enženas un TaivÄnas pusÄ tika izvirzÄ«tas starpniekservera virtuÄlÄs maŔīnas. Å enžeÅÄ lietotÄju trafika tiek pÄrtraukta, caur tuneli tiek nosÅ«tÄ«ta starpniekserveri uz TaivÄnu, un no turienes tÄ nonÄk tieÅ”i mÅ«su pakalpojuma ÄrÄjÄ IP adresÄ. asv-austrumi (ASV austrumu krasts). Ping starp virtuÄlajÄm maŔīnÄm, izmantojot tuneli 24ms, kas nav nemaz tik slikti.
TajÄ paÅ”Ä laikÄ mÄs ievietojÄm testa laukumu Alibaba mÄkoÅa DNS. PÄc zonas deleÄ£ÄÅ”anas NS Ali izŔķirtspÄjas laiks samazinÄjÄs no 470 ms lÄ«dz 50 ms. Pirms tam zona atradÄs arÄ« Cloudlfare.
ParalÄli tunelim uz Äzija-austrumi1 pacÄla vÄl vienu tuneli no Å enženas tieÅ”i uz asv-austrumi4. Tur viÅi izveidoja vairÄk starpniekservera virtuÄlo maŔīnu un sÄka testÄt abus risinÄjumus, marÅ”rutÄjot testa trafiku, izmantojot sÄ«kfailus vai DNS. Testu stends shematiski aprakstÄ«ts Å”ajÄ attÄlÄ:
Tuneļu latentums izrÄdÄ«jÄs Å”Äds:
Ali cn-Shenzhen <ā> GCP asia-east1 ā 24 ms
Ali cn-shenzhen <ā> GCP us-east4 ā 200 ms
Catchpoint pÄrlÅ«kprogrammas testi ziÅoja par izciliem uzlabojumiem.
SalÄ«dziniet divu risinÄjumu testa rezultÄtus:
Å Ä·Ä«dums
Uptime
Median
75 procentile
95 procentile
Cloudflare
86.6
18s
30s
60s
IPsec
99.79
18s
21s
30s
Å ie ir dati no risinÄjuma, kas izmanto IPSEC tuneli, izmantojot Äzija-austrumi1. Izmantojot us-east4, rezultÄti bija sliktÄki, un bija vairÄk kļūdu, tÄpÄc rezultÄtus nesniegÅ”u.
Pamatojoties uz Ŕī divu tuneļu testa rezultÄtiem, no kuriem viens beidzas Ķīnai tuvÄkajÄ reÄ£ionÄ, bet otrs galamÄrÄ·Ä«, kļuva skaidrs, ka ir svarÄ«gi āizkļūtā no Ķīnas ugunsmÅ«ra zem iespÄjams, un pÄc tam izmantojiet Ätros tÄ«klus (CDN nodroÅ”inÄtÄjus, mÄkoÅpakalpojumu sniedzÄjus utt.). Nav nepiecieÅ”ams mÄÄ£inÄt tikt cauri ugunsmÅ«rim un vienÄ rÄvienÄ nokļūt galamÄrÄ·Ä«. Tas nav ÄtrÄkais veids.
KopumÄ rezultÄti nav slikti, tomÄr semrush.com vidÄjÄ vÄrtÄ«ba ir 8.8 s un 75 procentile 9.4 s (tajÄ paÅ”Ä testÄ).
Un pirms turpinÄt, es gribÄtu izdarÄ«t nelielu lirisku atkÄpi.
LiriskÄ novirze
PÄc tam, kad lietotÄjs ir ienÄcis vietnÄ www.semrushchina.cn, kas tiek atrisinÄts, izmantojot āÄtrosā Ä·Ä«nieÅ”u DNS serverus, HTTP pieprasÄ«jums tiek caur mÅ«su Ätro risinÄjumu. Atbilde tiek atgriezta pa to paÅ”u ceļu, bet domÄns ir norÄdÄ«ts visos JS skriptos, HTML lapÄs un citos tÄ«mekļa lapas elementos semrush.com papildu resursiem, kas jÄielÄdÄ, kad lapa tiek renderÄta. Tas ir, klients atrisina āgalvenoā A ierakstu www.semrushchina.cn un ieiet ÄtrajÄ tunelÄ«, Ätri saÅem atbildi - HTML lapu, kurÄ teikts:
- lejupielÄdÄjiet Å”Ädus un Å”Ädus js no sso.semrush.com,
- Iegūstiet CSS failus no cdn.semrush.com,
- un arÄ« uzÅemiet dažas bildes no dab.semrush.com
- un tÄ tÄlÄk.
PÄrlÅ«kprogramma Å”iem resursiem sÄk pÄriet uz āÄrÄjoā internetu, katru reizi izejot cauri ugunsmÅ«rim, kas patÄrÄ reakcijas laiku.
Bet iepriekÅ”ÄjÄ pÄrbaude parÄda rezultÄtus, kad lapÄ nav resursu semrush.comtikai semrushchina.cn, un *.semrushchina.cn atrisina uz virtuÄlÄs maŔīnas adresi Å eÅdžeÅÄ, lai pÄc tam iekļūtu tunelÄ«.
Tikai Å”ÄdÄ veidÄ, maksimÄli izspiežot visu iespÄjamo trafiku, izmantojot savu risinÄjumu Ätrai Ķīnas ugunsmÅ«ra ŔķÄrsoÅ”anai, jÅ«s varat iegÅ«t pieÅemamus Ätrumus un vietÅu pieejamÄ«bas rÄdÄ«tÄjus, kÄ arÄ« godÄ«gus risinÄjumu testu rezultÄtus.
MÄs to izdarÄ«jÄm bez neviena koda rediÄ£ÄÅ”anas komandas produkta pusÄ.
ApakŔfiltrs
RisinÄjums radÄs gandrÄ«z uzreiz pÄc Ŕīs problÄmas parÄdÄ«Å”anÄs. Mums vajadzÄja PoC (Proof of Concept), ka mÅ«su ugunsmÅ«ra iespieÅ”anÄs risinÄjumi patieÅ”Äm darbojas labi. Lai to izdarÄ«tu, Å”ajÄ risinÄjumÄ, cik vien iespÄjams, ir jÄietver visa vietnes trafika. Un mÄs pieteicÄmies
ApakÅ”filtrs ir diezgan vienkÄrÅ”s modulis nginx, kas ļauj mainÄ«t vienu rindiÅu atbildes pamattekstÄ uz citu rindiÅu. TÄpÄc mÄs mainÄ«jÄm visus notikumus semrush.com par semrushchina.cn visÄs atbildÄs.
Un... tas nedarbojÄs, jo saÅÄmÄm saspiestu saturu no aizmugursistÄmÄm, tÄpÄc apakÅ”filtrs neatrada vajadzÄ«go rindiÅu. Man bija jÄpievieno vÄl viens vietÄjais serveris nginx, kas atspieda atbildi un nodeva to nÄkamajam lokÄlajam serverim, kurÅ” jau bija aizÅemts ar virknes nomaiÅu, saspieÅ”anu un nosÅ«tÄ«Å”anu uz nÄkamo starpniekserveri Ä·ÄdÄ.
RezultÄtÄ, kur klients saÅemtu .semrush.com, viÅÅ” saÅÄma .semrushchina.cn un paklausÄ«gi izgÄja cauri mÅ«su lÄmumam.
TomÄr nepietiek tikai ar domÄna maiÅu vienÄ virzienÄ, jo aizmugursistÄmas joprojÄm sagaida semrush.com nÄkamajos klienta pieprasÄ«jumos. AttiecÄ«gi tajÄ paÅ”Ä serverÄ«, kurÄ tiek veikta vienvirziena aizstÄÅ”ana, izmantojot vienkÄrÅ”u regulÄro izteiksmi, mÄs iegÅ«stam apakÅ”domÄnu no pieprasÄ«juma un pÄc tam darÄm starpniekserveris ar mainÄ«go $ saimnieks, izstÄdÄ«ts $subdomain.semrush.com. Tas var Ŕķist mulsinoÅ”i, bet tas darbojas. Un tas darbojas labi. AtseviŔķiem domÄniem, kuriem nepiecieÅ”ama atŔķirÄ«ga loÄ£ika, vienkÄrÅ”i izveidojiet savus servera blokus un veiciet atseviŔķu konfigurÄciju. ZemÄk ir saÄ«sinÄtas nginx konfigurÄcijas Ŕīs shÄmas skaidrÄ«bai un demonstrÄÅ”anai.
Å Ä« konfigurÄcija apstrÄdÄ visus pieprasÄ«jumus no Ķīnas uz .semrushchina.cn:
listen 80;
server_name ~^(?<subdomain>[w-]+).semrushchina.cn$;
sub_filter '.semrush.com' '.semrushchina.cn';
sub_filter_last_modified on;
sub_filter_once off;
sub_filter_types *;
gzip on;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location / {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $subdomain.semrush.com;
proxy_set_header X-Accept-Encoding $http_accept_encoding;
}
}
Å Ä« konfigurÄcija nodroÅ”ina starpniekserveri localhost uz portu 83, un tur gaida Å”Äda konfigurÄcija:
listen 127.0.0.1:8083;
server_name *.semrush.com;
location / {
resolver 8.8.8.8 ipv6=off;
gunzip on;
proxy_pass https://$host;
proxy_set_header Accept-Encoding gzip;
}
}
Es atkÄrtoju, Ŕīs ir apgrieztas konfigurÄcijas.
TÄdi. Tas var izskatÄ«ties sarežģīti, bet tas ir vÄrdos. PatiesÄ«bÄ viss ir vienkÄrÅ”Äk par tvaicÄtiem rÄceÅiem :)
AtkÄpes beigas
KÄdu laiku bijÄm priecÄ«gi, jo mÄ«ts par krÄ«toÅ”iem IPSEC tuneļiem neapstiprinÄjÄs. Bet tad tuneļi sÄka krist. VairÄkas reizes dienÄ dažas minÅ«tes. Mazliet, bet tas mums nederÄja. TÄ kÄ abi tuneļi tika izbeigti Ali pusÄ vienÄ marÅ”rutÄtÄjÄ, mÄs nolÄmÄm, ka, iespÄjams, tÄ ir reÄ£ionÄla problÄma, un mums ir jÄpaaugstina rezerves reÄ£ions.
ViÅi to pacÄla. Tuneļi sÄka bojÄties dažÄdos laikos, taÄu kļūmju pÄrslÄgÅ”anÄs mums darbojÄs labi nginx augÅ”teces lÄ«menÄ«. Bet tad tuneļi sÄka krist aptuveni tajÄ paÅ”Ä laikÄ š Un atkal sÄkÄs 502 un 504. DarbÄ«bas laiks sÄka pasliktinÄties, tÄpÄc mÄs sÄkÄm strÄdÄt pie opcijas ar Alibaba CEN (Cloud Enterprise Network).
CEN
CEN - Ŕī ir divu VPC savienojamÄ«ba no dažÄdiem Alibaba Cloud reÄ£ioniem, tas ir, jÅ«s varat savienot jebkuru mÄkoÅa reÄ£ionu privÄtos tÄ«klus savÄ starpÄ. Un pats galvenais: Å”im kanÄlam ir diezgan stingri noteikumi SLA. Tas ir ļoti stabils gan ÄtrumÄ, gan darbÄ«bas laikÄ. Bet tas nekad nav tik vienkÄrÅ”i:
- to ir ĻOTI grūti iegūt, ja neesat Ķīnas pilsonis vai juridiska persona,
- Jums ir jÄmaksÄ par katru kanÄla joslas platuma megabitu.
Ir iespÄja pieslÄgties KontinentÄlÄ Ä¶Ä«na Šø Overseas, mÄs izveidojÄm CEN starp diviem Ali reÄ£ioniem: cn-Shenzhen Šø asv-austrumi-1 (tuvÄkais punkts mums-austrumi4). In Ali asv-austrumi-1 pacÄla vÄl vienu virtuÄlo maŔīnu, lai bÅ«tu vÄl viena hop.
Tas izrÄdÄ«jÄs Å”Ädi:
PÄrlÅ«kprogrammas testa rezultÄti ir zemÄk:
Å Ä·Ä«dums
Uptime
Median
75 procentile
95 procentile
Cloudflare
86.6
18s
30s
60s
IPsec
99.79
18s
21s
30s
CEN
99.75
16s
21s
27s
VeiktspÄja ir nedaudz labÄka nekÄ IPSEC. Bet, izmantojot IPSEC, jÅ«s potenciÄli varat lejupielÄdÄt ar Ätrumu 100 Mbit/s, bet caur CEN tikai ar Ätrumu 5 Mbit/s un vairÄk.
IzklausÄs pÄc hibrÄ«da, vai ne? Apvienojiet IPSEC Ätrumu un CEN stabilitÄti.
Tas ir tas, ko mÄs darÄ«jÄm, ļaujot satiksmi gan caur IPSEC, gan CEN IPSEC tuneļa kļūmes gadÄ«jumÄ. DarbÄ«bas laiks ir kļuvis daudz lielÄks, taÄu vietnes ielÄdes Ätrums joprojÄm atstÄj daudz vÄlamo. Tad es uzzÄ«mÄju visas shÄmas, kuras jau bijÄm izmantojuÅ”i un pÄrbaudÄ«juÅ”i, un nolÄmu mÄÄ£inÄt pievienot Å”ai shÄmai nedaudz vairÄk GCP, proti vÄciÅÅ”.
vÄciÅÅ”
vÄciÅÅ” -Å o
Divreiz nedomÄjot, paaugstinÄjÄm HTTP/HTTPS LB MÄs instalÄjÄm savas virtuÄlÄs maŔīnas ar apakÅ”filtru GCP un kÄ aizmugursistÄmu.
Bija vairÄkas shÄmas:
- Lietot Cloudflare Ķīnas tÄ«kls, bet Å”oreiz Origin jÄnorÄda globÄls IP GLB.
- PÄrtraukt klientus plkst cn-Shenzhen, un no turienes starpniekserveri trafiku tieÅ”i uz vÄciÅÅ”.
- Dodieties tieÅ”i no Ķīnas uz vÄciÅÅ”.
- PÄrtraukt klientus plkst cn-Shenzhen, no turienes starpniekserveris uz Äzija-austrumi1 izmantojot IPSEC (in asv-austrumi4 caur CEN), no turienes dodieties uz GLB (mierÄ«gi, zemÄk bÅ«s bilde un paskaidrojums)
MÄs pÄrbaudÄ«jÄm visas Ŕīs iespÄjas un vÄl vairÄkas hibrÄ«da iespÄjas:
- Cloudflare + GLB
Å Ä« shÄma mums nebija piemÄrota darbÄ«bas laika un DNS kļūdu dÄļ. Bet tests tika veikts pirms kļūdas novÄrÅ”anas CF pusÄ, iespÄjams, tagad tas ir labÄk (tomÄr tas neizslÄdz HTTP taimautus).
- Ali + GLB
Å Ä« shÄma mums nebija piemÄrota arÄ« darbÄ«bas laika ziÅÄ, jo GLB bieži izkrita no augÅ”puses, jo nebija iespÄjams izveidot savienojumu pieÅemamÄ laikÄ vai taimautÄ, jo serverÄ«, kas atrodas ĶīnÄ, GLB adrese paliek ÄrpusÄ un tÄdÄjÄdi aiz ĶīnieÅ”u ugunsmÅ«ris. MaÄ£ija nenotika.
- Tikai GLB
Opcija, kas lÄ«dzÄ«ga iepriekÅ”Äjai, tikai tajÄ paÅ”Ä Ä¶Ä«nÄ netika izmantoti serveri: trafiks nonÄca tieÅ”i uz GLB (tika mainÄ«ti DNS ieraksti). AttiecÄ«gi rezultÄti nebija apmierinoÅ”i, jo parastajiem Ķīnas klientiem, kuri izmanto parasto interneta pakalpojumu sniedzÄju pakalpojumus, ir daudz sliktÄka situÄcija ar ugunsmÅ«ra izieÅ”anu nekÄ Ali Cloud.
- Shenzhen -> (CEN/IPSEC) -> Starpniekserveris ā> GLB
Å eit mÄs nolÄmÄm izmantot labÄko no visiem risinÄjumiem:
- stabilitÄte un garantÄta SLA no CEN
- liels Ätrums no IPSEC
- Google āÄtrsā tÄ«kls un tÄ anycast.
ShÄma izskatÄs apmÄram Å”Ädi: lietotÄja trafika tiek pÄrtraukta virtuÄlajÄ maŔīnÄ ch-Shenzhen. Tur ir konfigurÄti Nginx augÅ”Äjie serveri, no kuriem daži norÄda uz privÄtiem IP serveriem, kas atrodas IPSEC tuneļa otrÄ galÄ, un daži augÅ”Äjie serveri norÄda uz serveru privÄtajÄm adresÄm CEN otrÄ pusÄ. IPSEC konfigurÄts reÄ£ionam Äzija-austrumi1 GSP (risinÄjuma izveides laikÄ tas bija Ķīnai tuvÄkais reÄ£ions. Tagad GCP ir pÄrstÄvÄta arÄ« HonkongÄ). CEN - uz reÄ£ionu asv-austrumi1 Ali mÄkonÄ«.
Tad satiksme no abiem galiem tika novirzÄ«ta uz Anycast IP GLB, tas ir, lÄ«dz tuvÄkajam Google klÄtbÅ«tnes punktam un caur tÄ tÄ«kliem devÄs uz reÄ£ionu asv-austrumi4 GCP, kurÄ bija rezerves virtuÄlÄs maŔīnas (ar apakÅ”filtru nginx).
Å is hibrÄ«dais risinÄjums, kÄ mÄs gaidÄ«jÄm, izmantoja katras tehnoloÄ£ijas priekÅ”rocÄ«bas. Parasti satiksme notiek caur Ätru IPSEC, taÄu, ja sÄkas problÄmas, mÄs Ätri un uz dažÄm minÅ«tÄm izstumjam Å”os serverus no augÅ”puses un nosÅ«tÄm trafiku tikai caur CEN, lÄ«dz tunelis stabilizÄjas.
IevieÅ”ot ceturto risinÄjumu no iepriekÅ” minÄtÄ saraksta, mÄs panÄcÄm to, ko vÄlÄjÄmies un ko no mums tajÄ brÄ«dÄ« prasÄ«ja bizness.
PÄrlÅ«kprogrammas testa rezultÄti jaunajam risinÄjumam salÄ«dzinÄjumÄ ar iepriekÅ”Äjiem:
Å Ä·Ä«dums
Uptime
Median
75 procentile
95 procentile
Cloudflare
86.6
18s
30s
60s
IPsec
99.79
18s
21s
30s
CEN
99.75
16s
21s
27s
CEN/IPsec + GLB
99.79
13s
16s
25s
CDN
MÅ«su ieviestajÄ risinÄjumÄ viss ir labi, taÄu nav CDN, kas varÄtu paÄtrinÄt satiksmi reÄ£ionÄlÄ un pat pilsÄtas lÄ«menÄ«. TeorÄtiski tam vajadzÄtu paÄtrinÄt vietni galalietotÄjiem, izmantojot CDN nodroÅ”inÄtÄja Ätros sakaru kanÄlus. Un mÄs par to visu laiku domÄjÄm. Un tagad ir pienÄcis laiks nÄkamajai projekta atkÄrtoÅ”anai: CDN pakalpojumu sniedzÄju meklÄÅ”ana un testÄÅ”ana ĶīnÄ.
Un par to pastÄstÄ«Å”u nÄkamajÄ, pÄdÄjÄ daÄ¼Ä :)
Avots: www.habr.com