Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

Hej!
Alla bra berÀttelser har ett slut. Och vÄr berÀttelse om hur vi utvecklade en lösning för att snabbt passera den Kinesiska brandvÀggen Àr inget undantag. DÀrför vill jag dela med mig av den sista delen, slutordet om detta Àmne.

I den föregÄende delen berÀttade vi om mÄnga testmiljöer som vi skapade, och vilka resultat de gav. Vi kom fram till att det skulle vara bra att lÀgga till CDN! för att förbÀttra vÄr lösning.

Jag kommer att berÀtta för er hur vi testade Alibaba Cloud CDN, Tencent Cloud CDN och Akamai, och vilken vi till slut valde. SjÀlvklart kommer vi ocksÄ att sammanfatta.

Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

Alibaba Cloud CDN

Vi Àr vÀrd hos Alibaba Cloud, och anvÀnder IPSec och CEN frÄn dem. Det Àr logiskt att först prova deras lösningar.

Alibaba Cloud har tvĂ„ typer av produkter som kan passa oss: CDN och DCDN. Det första alternativet Ă€r en klassisk CDN för en specifik domĂ€n (subdomĂ€n). Det andra alternativet stĂ„r för Dynamic Route for CDN (jag kallar det dynamisk CDN), som kan aktiveras i Full-site-lĂ€ge (för wildcard-domĂ€ner), det cachar ocksĂ„ statiskt innehĂ„ll och accelererar dynamiskt innehĂ„ll, vilket innebĂ€r att dynamiken pĂ„ sidan ocksĂ„ laddas via leverantörens snabba nĂ€tverk. Detta Ă€r viktigt för oss, eftersom vĂ„r webbplats Ă€r mestadels dynamisk, med mĂ„nga subdomĂ€ner, och det Ă€r enklare att konfigurera CDN en gĂ„ng för "stjĂ€rnan" — *.semrushchina.cn.

Vi har redan sett denna produkt i tidigare skeden av vÄrt kinesiska projekt, men dÄ fungerade den inte Ànnu, och utvecklarna lovade att produkten snart skulle bli tillgÀnglig för alla kunder. Och den Àr hÀr nu.

I DCDN kan man:

  • konfigurera SSL-terminering med sitt eget certifikat,
  • aktivera acceleration av dynamiskt innehĂ„ll,
  • flexibelt konfigurera caching av statiska filer,
  • utföra cache purge,
  • stötta webb-sockets,
  • aktivera komprimering och till och med HTML Beautifier.

Kort sagt, allt som hos stora och etablerade CDN-leverantörer.

NÀr origin (den plats dit CDN edge-servrar kommer att gÄ) Àr angiven, ÄterstÄr det att skapa en CNAME för stjÀrnan som refererar till all.semrushchina.cn.w.kunluncan.com (denna CNAME erhölls i Alibaba Cloud-konsolen), och CDN kommer att fungera.

Enligt testresultaten har denna CDN verkligen hjÀlpt oss. Statistiken anges nedan.

Lösning
TillgÀnglighet
Median
75 Percentil
95 Percentil

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

Ali CDN + CEN/IPsec + GLB
99.75
10s
12.8s
17.3s

Det hÀr Àr riktigt bra resultat, sÀrskilt om man jÀmför med de siffror vi hade i början. Men vi visste att den amerikanska versionen av vÄrt webbtjÀnst www.semrush.com presterar i genomsnitt 8,3 sekunder i en webblÀsartest (ett mycket approximativt vÀrde). Det finns fortfarande rum för förbÀttring. Dessutom fanns det CDN-leverantörer som var intressanta att testa.

SĂ„ vi gĂ„r smidigt över till en annan jĂ€tte pĂ„ den kinesiska marknaden — Tencent.

Tencent Cloud

Tencent utvecklar fortfarande sitt moln — detta syns pĂ„ det begrĂ€nsade antalet produkter. Under vĂ„r anvĂ€ndning ville vi inte bara testa deras CDN, utan ocksĂ„ deras nĂ€tverksinfrastruktur i stort:

  • har de nĂ„got liknande CEN?
  • hur fungerar deras IPSEC? Är det snabbt, vad Ă€r uptiden?
  • har de Anycast?

Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

Vi gÄr igenom dessa frÄgor en i taget.

CEN-liknande

Tencent har en produkt Cloud Connect Network (CCN), som möjliggör anslutningar mellan VPC:er frÄn olika regioner, inklusive regioner bÄde inom och utanför Kina. Produkterna Àr för nÀrvarande i intern beta och man mÄste skapa en ticket för att be om anslutning. FrÄn supporten fick vi veta att globala konton (varken kinesiska medborgare eller juridiska personer) inte kan delta i beta-programmet och överhuvudtaget koppla en region inom Kina med en region utanför. 1-0 till fördel för Ali Cloud.

IPSEC

Den sydligaste regionen hos Tencent Ă€r — Guangzhou. Vi byggde en tunnel och anslöt den till Hongkong-regionen i GCP (vid den tidpunkten var denna region redan tillgĂ€nglig). Vi reste Ă€ven en andra tunnel i Ali Cloud frĂ„n Shenzhen till Hongkong samtidigt. Det visade sig att latensen via Tencent-nĂ€tverket till Hongkong överlag var bĂ€ttre (10 ms) Ă€n frĂ„n Shenzhen till Hongkong i Ali (120 ms — vad?). Men detta pĂ„verkade inte hastigheten pĂ„ webbplatsen, som var instĂ€lld för att fungera över Tencent och denna tunnel, vilket i sig var en förvĂ„nande insikt och bekrĂ€ftade följande: latens — Ă€r inte en indikator som man verkligen bör uppmĂ€rksamma under utvecklingen av en lösning för att passera den kinesiska brandvĂ€ggen.

Anycast Internet Acceleration

En annan produkt som möjliggör arbete via anycast IP — AIA. Men den Ă€r ocksĂ„ otillgĂ€nglig för globala konton, sĂ„ jag kan inte berĂ€tta om den, men att veta att en sĂ„dan produkt finns kan vara anvĂ€ndbart.

Men testet av CDN visade ganska intressanta resultat. CDNet hos Tencent kan inte aktiveras för full webbplats, endast för specifika domÀner. Vi registrerade domÀner och dirigerade trafik till dem:

Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

Det visade sig att denna CDN har följande funktion: Optimering av grÀnsöverskridande trafik. Denna funktion ska minska kostnaderna för trafik som passerar genom den kinesiska firewallen. Som Origin angavs IP-adressen av Googles GLB (GLB anycast). PÄ sÄ sÀtt ville vi förenkla projektarkitekturen.

Resultaten var mycket bra — i nivĂ„ med Ali Cloud CDN, och ibland till och med bĂ€ttre. Detta Ă€r anmĂ€rkningsvĂ€rt eftersom vi vid framgĂ„ngsrika tester kan avstĂ„ frĂ„n en betydande del av infrastrukturen, tunnlar, CEN, virtuella maskiner etc.

Vi blev glada för kort, dÄ ett problem uppstod: testerna i Catchpoint misslyckades för internetleverantören China Mobile. FrÄn alla platser fick vi timeout genom Tencent CDN. Kommunikationsutbytet med teknisk support ledde ingenstans. Under cirka ett dygn försökte vi lösa problemet, men utan framgÄng.

Jag befann mig i Kina vid den tidpunkten, men kunde inte hitta offentlig Wi-Fi i denna leverantörs nÀtverk för att personligen verifiera problemet. I övrigt sÄg allt snabbt och bra ut.
Men pÄ grund av att operatören China Mobile Àr en av de tre största operatörerna, var vi tvungna att Äterföra trafiken till Ali CDN.
Men överlag var detta en ganska intressant lösning som förtjÀnar mer lÄngvarig testning och felsökning av detta problem.

Akamai

Den senaste CDN-leverantören vi testade var Akamai. Detta Àr en stor leverantör som har sitt eget nÀtverk i Kina. SjÀlvklart kunde vi inte förbise det.

Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

FrÄn början kom vi överens med Akamai om en testperiod sÄ att vi kunde byta domÀn och se hur det skulle fungera i deras nÀtverk. Resultatet av hela testningen kommer jag att beskriva i form av "Vad jag gillade" och "Vad jag inte gillade", samt ge resultaten frÄn testen.

Vad jag gillade:

  • Folk frĂ„n Akamai var mycket hjĂ€lpsamma med alla frĂ„gor och stödde oss genom hela testningsprocessen. De försökte stĂ€ndigt förbĂ€ttra nĂ„got pĂ„ sin sida. De gav bra tekniska rĂ„d.
  • Akamai fungerar cirka 10-15% lĂ„ngsammare Ă€n vĂ„r lösning via Ali Cloud CDN. Det Ă€r imponerande att vi angav IP-adressen till GLB för Akamai, det vill sĂ€ga trafiken gick inte genom vĂ„r lösning (potentiellt kan vi avstĂ„ frĂ„n en del av infrastrukturen). Men resultaten frĂ„n testerna visade trots allt att detta alternativ var sĂ€mre Ă€n vĂ„r nuvarande lösning (jĂ€mförande resultat nedan).
  • BĂ„de Origin GLB och Origin i Kina testades. BĂ„da alternativen Ă€r ungefĂ€r lika.
  • Det finns SĂ€ker rutt (automatisk ruttoptimering). Du kan placera en testobjekt pĂ„ Origin, och Akamai Edge-servrarna kommer att försöka hĂ€mta den (vanligt GET). För dessa förfrĂ„gningar mĂ€ts hastighet och andra metrik, utifrĂ„n vilket Akamai-nĂ€tverket optimerar rutterna sĂ„ att trafiken gĂ„r snabbare för vĂ„r webbplats och det Ă€r tydligt att aktiveringen av denna funktion verkligen har stor inverkan pĂ„ webbplatsens prestanda.
  • Versionshantering av konfigurationen i webbgrĂ€nssnittet – det Ă€r fantastiskt. Du kan göra en jĂ€mförelse mellan versionar, se diff. Titta pĂ„ tidigare versioner.
  • Du kan först rulla ut en ny version endast pĂ„ Staging-nĂ€tverket av Akamai – ett nĂ€tverk som Ă€r identiskt med produktionen, men den vĂ€gen pĂ„verkar inte verkliga anvĂ€ndare. För detta test mĂ„ste DNS-poster spoofas pĂ„ den lokala maskinen.
  • Mycket snabb laddningstid via deras nĂ€tverk för stora statiska filer, och uppenbarligen Ă€ven för andra filer. En fil frĂ„n "kall" cache hĂ€mtas mĂ„nga gĂ„nger snabbare Ă€n samma fil frĂ„n Ali CDNs "kalla" cache. FrĂ„n "het" cache Ă€r hastigheten redan ungefĂ€r densamma.

Ali CDN-test:

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://en.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Genomsnittlig hastighet   Tid    Tid     Tid  Aktuell
                                 Dload  Uppladdning   Totalt   Spent    Left  Hastighet
100 5757k    0 5757k    0     0   513k      0 --:--:--  0:00:11 --:--:--  526k
time_namelookup:  0.004286
time_connect:  0.030107
time_appconnect:  0.117525
time_pretransfer:  0.117606
time_redirect:  0.000000
time_starttransfer:  0.840348
----------
time_total:  11.208119
----------
size_download:  5895467 Bytes
speed_download:  525999.000B/s

Akamai-test:

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://www.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Genomsnittlig hastighet   Tid    Tid     Tid  Aktuell
                                 Dload  Uppladdning   Totalt   Spent    Left  Hastighet
100 5757k    0 5757k    0     0  1824k      0 --:--:--  0:00:03 --:--:-- 1825k
time_namelookup:  0.509005
time_connect:  0.528261
time_appconnect:  0.577235
time_pretransfer:  0.577324
time_redirect:  0.000000
time_starttransfer:  1.327013
----------
time_total:  3.154850
----------
size_download:  5895467 Bytes
speed_download:  1868699.000B/s

Vi har mÀrkt att situationen i exemplet ovan beror pÄ olika faktorer. Vid tidpunkten för skrivandet av detta avsnitt genomförde jag testet igen. Resultaten för bÄda plattformar visade sig vara ungefÀr desamma. Detta tyder pÄ att internet i Kina, Àven för stora operatörer och molnleverantörer, ibland beter sig pÄ olika sÀtt.

Ett stort plus med Akamai i förhÄllande till föregÄende punkt: om Ali visar sÄdana sken av hög prestanda och mycket lÄg (detta gÀller bÄde Ali CDN, Ali CEN och Ali IPSEC), sÄ fungerar Akamai varje gÄng, oavsett hur jag testar deras nÀtverk, stabilt.
Akamai har verkligen en stor tÀckning i Kina och arbetar genom mÄnga leverantörer.

Vad jag inte gillade:

  • Jag gillar inte webbgrĂ€nssnittet och hur det fungerar — det Ă€r ganska uselt. Men man vĂ€njer sig (förmodligen).
  • Testresultaten Ă€r sĂ€mre Ă€n vĂ„r plattform.
  • Det finns fler fel vid testerna Ă€n pĂ„ vĂ„r plattform (uptime Ă€r lĂ€gre).
  • Det finns inga egna DNS-servrar i Kina. DĂ€rför mĂ„nga fel i testerna pĂ„ grund av DNS resolve timeout.
  • De tillhandahĂ„ller inte sina IP-ranges -> ingen möjlighet att ange korrekt set_real_ip_from pĂ„ vĂ„ra servrar.

MÀtningar (~3626 körningar; alla mÀtningar utom Uptime i ms; statistik för en tidsperiod):

CDN-leverantör
Median
75%
95%
Response
Webbsidans svar
TillgÀnglighet
DNS
Anslut
VĂ€nta
Ladda
SSL

Ali CDN
9195
10749
17489
1,715
10,745
99.531
57
17
927
479
200

Akamai
9783
11887
19888
2,352
11,550
98.980
424
91
1408
381
50

Fördelning per percentil (i ms):

Percentil
Akamai
Ali CDN

10
7,092
6,942

20
7,775
7,583

30
8,446
8,092

40
9,146
8,596

50
9,783
9,195

60
10,497
9,770

70
11,371
10,383

80
12,670
11,255

90
15,882
13,165

100
91,592
91,596

Slutsatsen Àr denna: alternativet med Akamai Àr livskraftigt, men ger inte samma stabilitets- och hastighetsnivÄer som vÄr egen lösning tillsammans med Ali CDN.

SmÄ noteringar

Vissa aspekter kom inte med i berÀttelsen, men jag ville ocksÄ skriva om dem.

Peking + Tokyo och Hongkong

Som jag nÀmnde ovan testade vi IPSEC-tunneln till Hongkong (HK). Men vi testade ocksÄ CEN till HK. Det Àr nÄgot billigare, och det var intressant att se hur det skulle fungera mellan stÀder med ett avstÄnd pÄ ~100 km. Det intressanta var att latensen mellan dessa stÀder var 100 ms högre Àn i vÄr ursprungliga lösning (till Taiwan). Hastighet och stabilitet var ocksÄ bÀttre för Taiwan. I slutÀndan valde vi att hÄlla HK som en backup IPSEC-region.

Dessutom testade vi att sÀtta upp en sÄdan installation:

  • terminering av kunder i Peking,
  • IPSEC och CEN till Tokyo,
  • dĂ€r Ali CDN angavs som origin server i Peking.

Denna konfiguration var inte lika stabil, Àven om den övergripande hastigheten inte var sÀmre Àn vÄr lösning. NÀr det gÀllde tunneln sÄg jag periodiska avbrott Àven för CEN, som skulle varit stabil. DÀrför gick vi tillbaka till den gamla lösningen och avbröt denna uppstÀllning.

Nedan visas statistiken över latens mellan olika regioner via olika kanaler. Kanske Àr den intressant för nÄgon.

IPsec
Ali cn-beijing GCP asia-northeast1 — 193ms
Ali cn-shenzhen GCP asia-east2 — 91ms
Ali cn-shenzhen GCP us-east4 — 200ms

CEN
Ali cn-beijing Ali ap-northeast-1 — 54ms (!)
Ali cn-shenzhen Ali cn-hongkong — 6ms (!)
Ali cn-shenzhen Ali us-east1 — 216 ms

AllmÀn information om internet i Kina

Som ett tillÀgg till problemen med internet, som beskrivs i början, i den första delen av artikeln.

  • Internet i Kina fungerar ganska snabbt inrikes.
    • Uttalandet baseras pĂ„ testning av offentliga Wi-Fi-nĂ€tverk pĂ„ olika platser dĂ€r dessa nĂ€tverk anvĂ€nds av ett stort antal personer.
    • Nedladdnings- och uppladdningshastigheten till servrar inuti Kina var cirka 20 Mbit/s och 5-10 Mbit/s respektive.
    • Hastigheten till servrar utanför Kina Ă€r minimal, mindre Ă€n 1 Mbit/s.
  • Internet i Kina Ă€r inte sĂ€rskilt stabilt.
    • Ibland kan webbplatser laddas snabbt, ibland lĂ„ngsamt (vid samma tid pĂ„ dagen under olika dagar), förutsatt att konfigurationen inte Ă€ndras. Det har observerats med exemplet semrushchina.cn. Detta kan tillskrivas Ali CDN, som ocksĂ„ fungerar olika beroende pĂ„ tid pĂ„ dagen, stjĂ€rnornas position, osv.
  • Mobilinternet Ă€r nĂ€stan överallt 4G eller 4G+. Det fungerar i tunnelbanan, hissar — kort sagt, överallt.
  • Att kinesiska anvĂ€ndare bara tror pĂ„ domĂ€ner i zonen .cn Ă€r en myt. Vi har fĂ„tt detta bekrĂ€ftat direkt av anvĂ€ndare.
    • Man kan se hur http://baidu.cn redirectar till www.baidu.com (Ă€ven i mainland China).
  • MĂ„nga resurser Ă€r verkligen blockerade. Enkla exempel: google.com, Facebook, Twitter. Men mĂ„nga Google-resurser fungerar (naturligtvis inte pĂ„ alla Wi-Fi och VPN anvĂ€nds inte (pĂ„ router-sidan ocksĂ„, det Ă€r sĂ€kert).
  • MĂ„nga "tekniska" domĂ€ner för blockerade företag fungerar ocksĂ„. Det betyder att man inte alltid ska utan att tĂ€nka radera alla Google- och andra resurs som verkar blockerade. Man bör leta efter en lista över blockerade domĂ€ner.
  • De har endast tre huvudsakliga internetleverantörer: China Unicom, China Telecom, China Mobile. Det finns Ă€ven mindre, men deras marknadsandel Ă€r obetydlig.

Bonus: den slutgiltiga lösningsschemat

Hur vi bröt igenom den stora kinesiska brandvÀggen (del 3)

Resultat

Det har gÄtt ett Är sedan projektets start. Vi började med att vÄr webbplats överhuvudtaget vÀgrade fungera normalt frÄn Kina, och en enkel GET curl tog 5,5 sekunder.

Sedan, utifrÄn dessa resultat vid första lösningen (Cloudflare):

Lösning
TillgÀnglighet
Median
75 Percentil
95 Percentil

Cloudflare
86.6
18s
30s
60s

Vi kom i slutÀndan fram till sÄdana resultat (statistik för den senaste mÄnaden):

Lösning
TillgÀnglighet
Median
75 Percentil
95 Percentil

Ali CDN + CEN/IPsec + GLB
99.86
8,8 s
9,5 s
13,7 s

Som man kan se, har det inte lyckats att nÄ 100% drifttid Àn, men vi ska hitta pÄ nÄgot, och sedan berÀttar vi för er om resultaten i en ny artikel :)

Respekt till den som har lÀst hela tre delar. Jag hoppas att ni fann detta lika intressant som jag gjorde nÀr jag skapade det.

P.S. Tidigare delar

Del 1
Del 2

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster