Ki jan nou kraze gwo pare-feu Lachin (Pati 2)

Hi!

Nikita avèk ou ankò, yon enjenyè sistèm nan konpayi an SEMrush. Ak atik sa a mwen kontinye istwa a sou fason nou te vini ak yon solisyon solisyon Chinwa Firewall pou sèvis nou an semrush.com.

В pati anvan Mwen di:

  • ki pwoblèm ki rive apre desizyon an pran "Nou bezwen fè sèvis nou an travay nan Lachin"
  • Ki pwoblèm entènèt Chinwa a genyen?
  • poukisa ou bezwen yon lisans ICP?
  • ki jan ak poukisa nou deside teste kabann nou yo ak Catchpoint
  • ki sa ki te rezilta premye solisyon nou an ki baze sou Cloudflare Lachin Network
  • Ki jan nou jwenn yon ensèk nan Cloudflare DNS

Pati sa a se pi enteresan an, nan opinyon mwen, paske li konsantre sou aplikasyon espesifik teknik nan sèn. Epi nou pral kòmanse, oswa pito kontinye, ak Alibaba Cloud.

Alibaba Cloud

Alibaba Cloud se yon founisè nwaj jistis gwo, ki gen tout sèvis ki pèmèt li onètman rele tèt li yon founisè nwaj. Li bon ke yo gen opòtinite pou yo enskri pou itilizatè etranje yo, e ke pi fò nan sit la tradui nan lang angle (pou Lachin sa a se yon liks). Nan nwaj sa a, ou ka travay ak anpil rejyon nan mond lan, tè pwensipal Lachin, osi byen ke Oseyan Azi (Hong Kong, Taiwan, elatriye).

IPSEC

Nou te kòmanse ak jewografi. Depi sit tès nou an te chita sou Google Cloud, nou te bezwen "lye" Alibaba Cloud ak GCP, kidonk nou te louvri yon lis kote Google prezan. Nan moman sa a yo pa t 'ankò gen pwòp sant done yo nan Hong Kong.
Rejyon ki pi pre a te tounen soti azi-lès1 (Taiwan). Ali te tounen rejyon ki pi pre tè pwensipal Lachin nan Taiwan cn-shenzhen (Shenzhen).

Avèk terraform dekri ak leve soti vivan tout enfrastrikti nan GCP ak Ali. Yon tinèl 100 Mbit/s ant nwaj yo moute prèske imedyatman. Sou bò Shenzhen ak Taiwan, proxy machin vityèl yo te leve soti vivan. Nan Shenzhen, trafik itilizatè yo sispann, proxy atravè yon tinèl nan Taiwan, epi soti nan la li ale dirèkteman nan IP ekstèn nan sèvis nou an. nou-lès (Kòt Lès Etazini). Ping ant machin vityèl atravè tinèl 24ms, ki pa tèlman mal.

An menm tan an, nou mete yon zòn tès nan Alibaba Cloud DNS. Apre delege zòn nan bay NS Ali, tan rezolisyon an diminye soti nan 470 ms a 50 MS. Anvan sa, zòn nan te tou sou Cloudlfare.

Paralèl ak tinèl la azi-lès1 leve soti vivan yon lòt tinèl soti nan Shenzhen dirèkteman nan nou-bò solèy leve4. Se la yo te kreye plis proxy machin vityèl epi yo te kòmanse teste tou de solisyon yo, routage tès trafik lè l sèvi avèk bonbon oswa dns. Bann tès la dekri schematikman nan figi sa a:

Latans pou tinèl yo te vin jan sa a:
Ali cn-shenzhen <—> GCP asia-east1 — 24ms
Ali cn-shenzhen <—> GCP us-east4 — 200ms

Tès navigatè Catchpoint rapòte amelyorasyon ekselan.

Konpare rezilta tès yo pou de solisyon:

desizyon
Disponibilite
Medyàn
75 percentile
95 percentile

CloudFlare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

Sa a se done ki sòti nan yon solisyon ki sèvi ak yon tinèl IPSEC atravè azi-lès1. Atravè us-east4 rezilta yo te pi mal, e te gen plis erè, kidonk mwen pa pral bay rezilta yo.

Dapre rezilta tès sa a nan de tinèl, youn nan yo sispann nan rejyon ki pi pre Lachin nan, ak lòt la nan destinasyon final la, li te vin klè ke li enpòtan "sòti" anba firewall Chinwa a osi vit ke posib, epi sèvi ak rezo rapid (founisè CDN, founisè nwaj, elatriye). Pa gen okenn nesesite pou yo eseye pase nan firewall la epi jwenn destinasyon ou nan yon sèl kou. Sa a se pa fason ki pi rapid.

An jeneral, rezilta yo pa move, sepandan, semrush.com gen yon medyàn 8.8s, ak 75 percentile 9.4s (sou menm tès la).
E avan m kontinye, mwen ta renmen fè yon ti digresyon lirik.

Degresyon lirik

Apre itilizatè a antre nan sit la www.semrushchina.cn, ki rezoud atravè "vit" Chinwa DNS sèvè, demann HTTP an ale nan solisyon rapid nou an. Repons lan retounen sou menm chemen an, men domèn nan espesifye nan tout scripts JS, paj HTML ak lòt eleman nan paj wèb la. semrush.com pou resous adisyonèl ki dwe chaje lè paj la rann. Sa vle di, kliyan an rezoud "prensipal" A-dosye a www.semrushchina.cn epi li ale nan tinèl rapid la, byen vit resevwa yon repons - yon paj HTML ki deklare:

  • telechaje js sa yo ak sa yo soti nan sso.semrush.com,
  • Jwenn dosye CSS yo nan cdn.semrush.com,
  • epi tou pran kèk foto nan dab.semrush.com
  • ak sou sa.

Navigatè a kòmanse ale nan Entènèt "ekstèn" pou resous sa yo, chak fwa pase nan yon pare-feu ki manje tan repons.

Men, tès anvan an montre rezilta yo lè pa gen okenn resous sou paj la semrush.comsèlman semrushchina.cn, ak *.semrushchina.cn rezoud nan adrès la nan machin nan vityèl nan Shenzhen yo nan lòd yo Lè sa a, antre nan tinèl la.

Se sèlman nan fason sa a, lè w pouse tout trafik posib nan maksimòm nan solisyon ou a pou byen vit pase firewall Chinwa a, ou ka jwenn vitès akseptab ak endikatè disponiblite sit entènèt, osi byen ke rezilta onèt nan tès solisyon yo.
Nou te fè sa san yon sèl edit kòd sou bò pwodwi ekip la.

Subfilter

Solisyon an te fèt prèske imedyatman apre pwoblèm sa a parèt. Nou te bezwen PoC (Prèv konsèp) ke solisyon pénétration pare-feu nou yo vrèman travay byen. Pou fè sa, ou bezwen vlope tout trafik sit la nan solisyon sa a otank posib. E nou aplike subfiltre nan nginx.

Subfilter se yon modil jistis senp nan nginx ki pèmèt ou chanje yon liy nan kò repons lan nan yon lòt liy. Se konsa, nou chanje tout evènman yo semrush.com sou semrushchina.cn nan tout repons yo.

Epi... li pa t travay paske nou te resevwa kontni konprese nan backend yo, kidonk subfilter pa t jwenn liy ki nesesè yo. Mwen te oblije ajoute yon lòt sèvè lokal nan nginx, ki te dekonprese repons lan epi li te pase l sou pwochen sèvè lokal la, ki te deja okipe ranplase fisèl la, konprese li, epi voye li nan pwochen sèvè prokurasyon an nan chèn lan.

Kòm yon rezilta, ki kote kliyan an ta resevwa .semrush.com, li te resevwa .semrushchina.cn ak obeyisan te mache nan desizyon nou an.

Sepandan, li pa ase tou senpleman chanje domèn nan yon fason, paske backends yo toujou atann semrush.com nan demann ki vin apre nan men kliyan an. An konsekans, sou menm sèvè a kote ranplasman nan yon sèl-fason fè, lè l sèvi avèk yon senp ekspresyon regilye nou jwenn subdomain nan demann lan, epi Lè sa a, nou fè proxy_pass ak varyab $lame, ekspoze nan $subdomain.semrush.com. Li ka sanble konfizyon, men li travay. Epi li travay byen. Pou domèn endividyèl ki mande lojik diferan, tou senpleman kreye blòk sèvè pwòp ou a epi fè yon konfigirasyon separe. Anba a se konfigirasyon nginx ki pi kout pou klè ak demonstrasyon konplo sa a.

Konfigirasyon sa yo trete tout demann ki soti nan Lachin nan .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;
    }
}

Konfigirasyon sa a proxy lokalost nan pò 83, ak konfigirasyon sa a ap tann la:

    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;
    }
}

Mwen repete, sa yo se konfigirasyon koupe.

Konsa. Li ka sanble konplike, men li se nan mo. An reyalite, tout bagay se pi senp pase navet vapè :)

Fen digression

Pou yon ti tan nou te kontan paske mit sou tonbe tinèl IPSEC pa te konfime. Men, Lè sa a, tinèl yo te kòmanse tonbe. Plizyè fwa pa jou pou kèk minit. Yon ti kras, men sa pa t 'kofòm nou. Depi tou de tinèl yo te fini sou bò Ali sou menm routeur la, nou te deside ke petèt sa a se te yon pwoblèm rejyonal epi nou te bezwen ogmante rejyon an backup.

Yo te ranmase l. Tinèl yo te kòmanse echwe nan diferan moman, men failover a te travay byen pou nou nan nivo en nan nginx. Men, apre sa tinèl yo te kòmanse tonbe apeprè nan menm tan an 🙂 Epi 502 ak 504 te kòmanse ankò. Uptime te kòmanse deteryore, kidonk nou te kòmanse travay sou opsyon an ak Alibaba CEN (Cloud Enterprise Network).

Sant

Sant - sa a se koneksyon an nan de VPC ki soti nan diferan rejyon nan Alibaba Cloud, se sa ki, ou ka konekte rezo prive nan nenpòt rejyon nan nwaj la youn ak lòt. Ak pi enpòtan: kanal sa a gen yon jistis strik SLA. Li trè estab tou de nan vitès ak disponiblite. Men, li pa janm sa ki senp:

  • li trè difisil pou jwenn si ou pa sitwayen Chinwa oswa yon antite legal,
  • Ou bezwen peye pou chak megabit nan Pleasant chanèl.

Gen opòtinite pou konekte Mainland Lachin и aletranje, nou te kreye yon CEN ant de rejyon Ali: cn-shenzhen и nou-bò solèy leve-1 (pwen ki pi pre nou-bò solèy leve4). Nan Ali nou-bò solèy leve-1 leve soti vivan yon lòt machin vityèl pou ke gen yon lòt hop.

Li te vin tankou sa a:

Rezilta tès navigatè yo anba a:

desizyon
Disponibilite
Medyàn
75 percentile
95 percentile

CloudFlare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

Sant
99.75
16s
21s
27s

Pèfòmans lan se yon ti kras pi bon pase IPSEC. Men, atravè IPSEC ou ka potansyèlman telechaje nan yon vitès 100 Mbit / s, ak atravè CEN sèlman nan yon vitès 5 Mbit / s ak plis ankò.

Son tankou yon ibrid, dwa? Konbine vitès IPSEC ak estabilite CEN.

Sa a se sa nou te fè, ki pèmèt trafik nan tou de IPSEC ak CEN nan evènman an nan yon echèk nan tinèl la IPSEC. Uptime te vin pi wo, men vitès chaj sit la toujou kite anpil bagay yo vle. Lè sa a, mwen te trase tout sikui yo ke nou te deja itilize ak teste, epi mwen deside eseye ajoute yon ti kras plis GCP nan sikwi sa a, sètadi. bouchon.

bouchon

bouchon - Eske Global Load Balancer (oswa Google Cloud Load Balancer). Li gen yon avantaj enpòtan pou nou: nan kontèks yon CDN li genyen anycast IP, ki pèmèt ou wout trafik nan sant done ki pi pre kliyan an, se konsa ke trafik byen vit antre nan rezo vit Google la ak mwens ale nan "regilye" Entènèt la.

San reflechi de fwa, nou leve HTTP/HTTPS LB Nou enstale machin vityèl nou yo ak subfilter nan GCP ak kòm yon backend.

Te gen plizyè konplo:

  • Sèvi ak Cloudflare Lachin rezo, men fwa sa a Orijin ta dwe presize global IP GLB.
  • Fini kliyan nan cn-shenzhen, ak soti nan la proxy trafik la dirèkteman nan bouchon.
  • Ale tou dwat soti nan Lachin nan bouchon.
  • Fini kliyan nan cn-shenzhen, de la proxy pou azi-lès1 atravè IPSEC (nan nou-bò solèy leve4 atravè CEN), soti nan ale nan GLB (kalm, pral gen yon foto ak eksplikasyon anba a)

Nou teste tout opsyon sa yo ak plizyè lòt ibrid:

  • Cloudflare + GLB

Konplo sa a pa t 'kostim nou akòz uptime ak erè DNS. Men, tès la te fèt anvan yo te fikse ensèk la sou bò CF, petèt li se pi bon kounye a (sepandan, sa a pa eskli HTTP timeouts).

  • Ali + GLB

Konplo sa a tou pa t 'kostim nou an tèm de uptime, depi GLB souvan tonbe soti nan en a akòz enposib pou konekte nan yon tan akseptab oswa timeout, paske pou yon sèvè andedan Lachin, adrès GLB la rete deyò, ak Se poutèt sa dèyè a. firewall Chinwa. Majik la pa t rive.

  • GLB sèlman

Yon opsyon ki sanble ak yon sèl anvan an, sèlman li pa t 'sèvi ak sèvè nan Lachin tèt li: trafik la te ale dirèkteman nan GLB (dosye DNS yo te chanje). An konsekans, rezilta yo pa t 'satisfezan, depi kliyan òdinè Chinwa ki itilize sèvis yo nan founisè entènèt òdinè gen yon sitiyasyon pi mal ak pase firewall la pase Ali Cloud.

  • Shenzhen -> (CEN/IPSEC) -> Proxy -> GLB

Isit la nou deside sèvi ak pi bon nan tout solisyon:

  • estabilite ak SLA garanti nan CEN
  • gwo vitès soti nan IPSEC
  • Rezo "vit" Google la ak anycast li yo.

Konplo a sanble yon bagay tankou sa a: trafik itilizatè yo sispann sou yon machin vityèl nan ch-shenzhen. Nginx upstreams yo konfigirasyon la, kèk nan yo ki montre IP sèvè prive ki sitiye nan lòt bout la nan tinèl la IPSEC, ak kèk amont montre adrès prive nan serveurs sou lòt bò a nan CEN la. IPSEC configuré pou rejyon an azi-lès1 nan GCP (te rejyon ki pi pre Lachin nan moman an te kreye solisyon an. GCP kounye a tou gen yon prezans nan Hong Kong). CEN - nan rejyon an nou-bò solèy leve1 nan Ali Cloud.

Lè sa a, trafik soti nan tou de bout te dirije nan anycast IP GLB, se sa ki, nan pwen ki pi pre nan prezans nan Google, epi li te ale nan rezo li yo nan rejyon an nou-bò solèy leve4 nan GCP, nan ki te gen ranplasman machin vityèl (ak subfilter nan nginx).

Solisyon ibrid sa a, jan nou te espere, te pwofite avantaj chak teknoloji. An jeneral, trafik ale nan IPSEC rapid, men si pwoblèm kòmanse, nou byen vit epi pou kèk minit choute sèvè sa yo soti nan en an epi voye trafik sèlman nan CEN jiskaske tinèl la estabilize.

Lè nou aplike solisyon 4yèm nan lis ki anwo a, nou reyalize sa nou te vle ak sa biznis la te mande nou nan moman sa a.

Rezilta tès navigatè pou nouvo solisyon an konpare ak sa yo anvan yo:

desizyon
Disponibilite
Medyàn
75 percentile
95 percentile

CloudFlare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

Sant
99.75
16s
21s
27s

CEN/IPsec + GLB
99.79
13s
16s
25s

CDN

Tout bagay bon nan solisyon nou aplike a, men pa gen okenn CDN ki ta ka akselere trafik nan nivo rejyonal e menm vil la. Nan teyori, sa a ta dwe akselere sit la pou itilizatè final yo lè l sèvi avèk chanèl kominikasyon rapid founisè CDN la. Epi nou te panse sou li tout tan. Epi, koulye a, lè a rive pou pwochen iterasyon nan pwojè a: rechèch ak tès founisè CDN nan Lachin.

Apre sa, mwen pral di ou sou sa a nan pwochen pati final la :)

Sous: www.habr.com

Add nouvo kòmantè