Чӣ гуна мо девори бузурги Чинро шикастем (Қисми 2)

Салом!

Никита боз бо шумо, инженери системам корхона SEMrush. Ва бо ин мақола ман ҳикояро идома медиҳам, ки чӣ гуна мо як роҳи ҳалли онро пайдо кардем Сипари Чин барои хидмати мо semrush.com.

В қисми қаблӣ Гуфтам:

  • Пас аз қабули қарор "Мо бояд хидмати худро дар Чин кор кунем" чӣ мушкилот ба миён меоянд
  • Интернети чинӣ чӣ мушкилот дорад?
  • чаро ба шумо иҷозатномаи ICP лозим аст?
  • чӣ гуна ва чаро мо тасмим гирифтем, ки озмоишгоҳҳои худро бо Catchpoint санҷем
  • натиҷаи аввалин ҳалли мо дар асоси Cloudflare China Network чӣ буд
  • Чӣ гуна мо дар Cloudflare DNS хато пайдо кардем

Ба андешаи ман, ин қисм ҷолибтарин аст, зеро он ба татбиқи мушаххаси техникии саҳнавӣ тамаркуз мекунад. Ва мо бо он оғоз мекунем, дурусттараш идома медиҳем Alibaba Cloud.

Alibaba Cloud

Alibaba Cloud як провайдери абрии хеле калон аст, ки дорои тамоми хидматҳое мебошад, ки ба он имкон медиҳанд, ки худро ростқавлона провайдери абр номид. Хуб аст, ки онҳо имкони сабти ном барои корбарони хориҷӣ доранд ва аксари сайтҳо ба забони англисӣ тарҷума шудаанд (барои Чин ин як айшу ишрат аст). Дар ин абр шумо метавонед бо бисёр минтақаҳои ҷаҳон, Чини материкӣ, инчунин Осиёи Уқёнуси (Ҳонконг, Тайван ва ғайра) кор кунед.

IPsec

Мо аз ҷуғрофиё оғоз кардем. Азбаски сайти санҷишии мо дар Google Cloud ҷойгир буд, ба мо лозим буд, ки Alibaba Cloud-ро бо GCP "пайванд" кунем, аз ин рӯ мо рӯйхати маконҳоеро кушодем, ки дар он Google мавҷуд аст. Дар он лаҳза онҳо дар Ҳонконг маркази додаҳои худро надоштанд.
Минтақаи наздиктарин пайдо шуд Осиё-шарқ1 (Тайван). Алӣ наздиктарин минтақаи материкии Чин ба Тайван шуд цн-шенчжэнь (Шенчжэнь).

Бо кӯмаки terraform тамоми инфрасохтори GCP ва Алиро тавсиф ва баланд бардошт. Нақби 100 Мбит/с байни абрҳо қариб якбора боло рафт. Дар паҳлӯи Шенҷен ва Тайван, мошинҳои виртуалии прокси ба вуҷуд омадаанд. Дар Шенҷен трафики корбар қатъ карда мешавад, тавассути нақб ба Тайван прокси карда мешавад ва аз он ҷо мустақиман ба IP-и берунаи хидмати мо меравад. мо-шарк (Соҳили шарқии ИМА). Пинг байни мошинҳои виртуалӣ тавассути нақб 24ms, ки он кадар бад нест.

Ҳамзамон, мо дар майдони озмоишӣ ҷойгир кардем Alibaba Cloud DNS. Пас аз додани минтақа ба NS Али, вақти ҳалкунӣ аз 470 ms то кам шуд 50 ms. Пеш аз ин, минтақа инчунин дар Cloudlfare буд.

Дар баробари туннель ба Осиё-шарқ1 аз Шэньчжэнь бевосита ба туннели дигар бардошт мо-шарк4. Дар он ҷо онҳо мошинҳои виртуалии прокси бештар эҷод карданд ва ба озмоиши ҳарду қарорҳо, масири трафики санҷишӣ бо истифода аз кукиҳо ё DNS оғоз карданд. Дастгоҳи санҷишӣ ба таври схематикӣ дар расми зерин тасвир шудааст:

Вақти таъхир барои нақбҳо чунин буд:
Алй цн-шенчжэн <—> GCP осиё-шаркй — 1ms
Али цн-шенжен <—> GCP us-est4 — 200ms

Санҷишҳои браузери Catchpoint беҳбуди аъло гузориш доданд.

Натиҷаҳои санҷишро барои ду ҳалли муқоиса кунед:

ҳалли
Uptime
Медион
75 фоиз
95 фоиз

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

Ин маълумот аз ҳаллиест, ки нақби IPSEC тавассути тавассути истифода мебарад Осиё-шарқ1. Тавассути мо-шарқ4 натиҷаҳо бадтар буданд ва хатогиҳо зиёд буданд, бинобар ин ман натиҷаҳоро намедиҳам.

Бар асоси натоиҷи ин озмоиши ду нақб, ки яке дар наздиктарин минтақаи Чин ва дигаре дар макони ниҳоӣ қатъ шудааст, маълум шуд, ки ҳарчӣ зудтар аз зери девори девори чинӣ “баромадан” муҳим аст. имконпазир аст ва сипас шабакаҳои зудро истифода баред (провайдерҳои CDN, провайдерҳои абрӣ ва ғайра). Ҳеҷ зарурате нест, ки кӯшиш кунед, ки тавассути девор гузаред ва дар як зарба ба макони таъиноти худ бирасед. Ин роҳи зудтарин нест.

Умуман, натиҷаҳо бад нестанд, аммо semrush.com дорои миёнаравии 8.8s ва 75% 9.4s (дар ҳамон санҷиш) мебошад.
Ва пеш аз гузаштан мехостам як мухтасари лирикиро баён кунам.

Лирикӣ бозгашт

Пас аз ворид шудани корбар ба сайт www.semrushchina.cn, ки тавассути серверҳои "зуд" DNS чинӣ ҳал мешавад, дархости HTTP тавассути ҳалли зуди мо мегузарад. Ҷавоб бо ҳамон роҳ баргардонида мешавад, аммо домен дар ҳама скриптҳои JS, саҳифаҳои HTML ва дигар унсурҳои саҳифаи веб муайян карда мешавад. semrush.com барои захираҳои иловагӣ, ки бояд ҳангоми намоиши саҳифа бор карда шаванд. Ин аст, ки муштарӣ "асосӣ" сабти А-ро ҳал мекунад www.semrushchina.cn ва ба туннели тез меравад, зуд ҷавоб мегирад - саҳифаи HTML, ки мегӯяд:

  • чунин ва чунин js-ро аз sso.semrush.com зеркашӣ кунед,
  • Файлҳои CSS-ро аз cdn.semrush.com гиред,
  • ва инчунин аз dab.semrush.com чанд акс гиред
  • ва ғайра.

Браузер барои ин захираҳо ба Интернети "берунӣ" рафтан оғоз мекунад, ки ҳар дафъа аз девори девор мегузарад, ки вақти посухро кам мекунад.

Аммо санҷиши қаблӣ натиҷаҳоро ҳангоми мавҷуд набудани захираҳо дар саҳифа нишон медиҳад semrush.com, танҳо semrushchina.cn, ва *.semrushchina.cn ба суроғаи мошини маҷозӣ дар Шенҷен ҳал мекунад, то ба нақб ворид шавад.

Танҳо бо ин роҳ, бо тела додани тамоми трафики имконпазир тавассути ҳалли худ барои зуд гузаштан аз девори чинӣ, шумо метавонед суръати қобили қабул ва нишондиҳандаҳои мавҷудияти вебсайт, инчунин натиҷаҳои дурусти санҷишҳои ҳалли худро ба даст оред.
Мо ин корро бидуни таҳрири ягонаи код дар тарафи маҳсулоти даста анҷом додем.

Зерфилтр

Ҳалли он қариб дарҳол пас аз пайдо шудани ин мушкилот пайдо шуд. Ба мо лозим буд PoC (Исботи Консепсия), ки қарорҳои воридшавии девори мо дар ҳақиқат хуб кор мекунанд. Барои ин, шумо бояд ба қадри имкон тамоми трафики сайтро ба ин ҳалли худ кашед. Ва мо муроҷиат кардем зерфилтр дар nginx.

Зерфилтр модули хеле содда дар nginx аст, ки ба шумо имкон медиҳад, ки як сатрро дар бадани ҷавоб ба хати дигар иваз кунед. Ҳамин тавр, мо ҳама ҳодисаҳоро тағир додем semrush.com ба semrushchina.cn дар ҳама ҷавобҳо.

Ва... ин кор накард, зеро мо мундариҷаи фишурдашударо аз пушти сарҳо қабул кардем, аз ин рӯ зерфилтр сатри лозимиро наёфт. Ман маҷбур будам, ки ба nginx сервери дигари маҳаллиро илова кунам, ки посухро кушода ва онро ба сервери дигари маҳаллӣ интиқол дод, ки аллакай бо иваз кардани сатр, фишурдани он ва фиристодани он ба сервери прокси ояндаи занҷир банд буд.

Дар натиҷа, муштарӣ аз куҷо қабул мекунад .semrush.com, гирифт .semrushchina.cn ва итоаткорона аз болои карори мо гузашт.

Бо вуҷуди ин, танҳо як роҳ тағир додани домен кофӣ нест, зеро пуштибонҳо то ҳол дар дархостҳои минбаъдаи муштарӣ semrush.com-ро интизоранд. Мувофиқи он, дар ҳамон сервере, ки ивазкунии яктарафа анҷом дода мешавад, бо истифода аз ифодаи оддии муқаррарӣ мо аз дархост зердоменро мегирем ва сипас онро иҷро мекунем. proxy_pass бо тағирёбанда $ host, намоиш дода шуд $subdomain.semrush.com. Ин метавонад печида ба назар расад, аммо он кор мекунад. Ва он хуб кор мекунад. Барои доменҳои инфиродӣ, ки мантиқи гуногунро талаб мекунанд, танҳо блокҳои сервери худро эҷод кунед ва конфигуратсияи алоҳида созед. Дар зер конфигуратсияҳои кӯтоҳшудаи nginx барои возеҳият ва намоиши ин схема оварда шудаанд.

Конфигуратсияи зерин ҳама дархостҳоро аз Чин ба .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;
    }
}

Ин конфигуратсия ба localhost ба порти 83 ворид кунед ва конфигуратсияи зерин дар он ҷо интизор аст:

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

Ман такрор мекунам, ки ин конфигуратсияҳои буридаанд.

Хамин тавр. Ин метавонад мураккаб ба назар расад, аммо ин дар сухан аст. Дар асл, ҳама чиз аз шалғамҳои буғӣ соддатар аст :)

Анҷом додани саркашӣ

Чанд муддат мо хурсанд будем, зеро афсона дар бораи афтодани нақбҳои IPSEC тасдиқ нашудааст. Аммо баъд аз он туннельхо афтодан гирифтанд. Якчанд маротиба дар як рӯз барои чанд дақиқа. Каме, аммо ин ба мо мувофиқ набуд. Азбаски ҳарду нақб дар тарафи Алӣ дар як роутер қатъ карда шуданд, мо қарор додем, ки шояд ин як мушкили минтақавӣ бошад ва мо бояд минтақаи эҳтиётиро баланд бардорем.

Онҳо онро бардоштанд. Тунелҳо дар вақтҳои гуногун аз кор баромаданд, аммо нокомӣ барои мо дар сатҳи боло дар nginx хуб кор кард. Аммо баъд нақбҳо тақрибан дар як вақт афтоданд 🙂 Ва 502 ва 504 дубора оғоз ёфт. Вақти кор бад шудан гирифт, аз ин рӯ мо ба кор дар варианти бо Alibaba CEN (Шабакаи абрии Enterprise).

CEN

CEN - ин пайвасти ду VPC аз минтақаҳои гуногун дар дохили Alibaba Cloud аст, яъне шумо метавонед шабакаҳои хусусии ҳама минтақаҳои дохили абрро бо ҳамдигар пайваст кунед. Ва муҳимтар аз ҳама: ин канал дорад, хеле сахт БРА. Он ҳам дар суръат ва ҳам дар вақти корӣ хеле устувор аст. Аммо ин ҳеҷ гоҳ ин қадар оддӣ нест:

  • гирифтани он Хеле душвор аст, агар шумо шаҳрванди Чин ё шахси ҳуқуқӣ набошед,
  • Шумо бояд барои ҳар як мегабит иқтидори канал пардохт кунед.

Имконияти пайваст шудан Шаҳрҳои Чин и дар хориьа, мо байни ду минтақаи Алӣ CEN таъсис додем: цн-шенчжэнь и мо-шарк-1 (нуқтаи наздиктарин ба мо-шарқ4). Дар Али мо-шарк-1 мошини виртуалии дигарро ба вуҷуд овард, то як мошини дигар вуҷуд дошта бошад паридан.

Чунин баромад:

Натиҷаҳои санҷиши браузер дар зер оварда шудаанд:

ҳалли
Uptime
Медион
75 фоиз
95 фоиз

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

CEN
99.75
16
21
27

Намоиш аз IPSEC каме беҳтар аст. Аммо тавассути IPSEC шумо метавонед эҳтимолан бо суръати 100 Мбит/с ва тавассути CEN танҳо бо суръати 5 Мбит/с ва бештар аз он зеркашӣ кунед.

Мисли гибрид садо медиҳад, дуруст? Суръати IPSEC ва устувории CEN-ро муттаҳид кунед.

Ин корест, ки мо ба ҳаракати нақлиёт тавассути IPSEC ва CEN иҷозат додем, ки дар сурати вайрон шудани нақби IPSEC. Вақти кор хеле баланд шуд, аммо суръати боркунии сайт то ҳол чизи дилхоҳро мегузорад. Сипас ман ҳамаи схемаҳоеро, ки мо аллакай истифода ва санҷида будем, кашидам ва қарор додам, ки кӯшиш кунам, ки ба ин схема каме бештар GCP илова кунам, яъне сарпӯш.

сарпӯш

сарпӯш Оё Тавозуни глобалии сарборӣ (ё Google Cloud Load Balancer). Он барои мо бартарии муҳим дорад: дар заминаи CDN он дорад anycast IP, ки ба шумо имкон медиҳад, ки трафикро ба маркази додаҳои наздиктарин ба муштарӣ равона кунед, то трафик зуд ба шабакаи босуръати Google ворид шавад ва аз Интернети "муқаррарӣ" камтар мегузарад.

Ду бор фикр накарда, баланд бардоштем HTTP/HTTPS LB Мо мошинҳои виртуалии худро бо зерфилтр дар GCP ва ҳамчун пуштибон насб кардем.

Якчанд нақшаҳо вуҷуд доштанд:

  • Барои истифода Шабакаи Cloudflare China, аммо ин дафъа Origin бояд глобалиро муайян кунад IP GLB.
  • Қатъи муштариён дар цн-шенчжэнь, ва аз он ҷо прокси трафикро мустақиман ба сарпӯш.
  • Аз Чин рост ба сарпӯш.
  • Қатъи муштариён дар цн-шенчжэнь, аз он ҷо прокси ба Осиё-шарқ1 тавассути IPSEC (дар мо-шарк4 тавассути CEN), аз он ҷо ба GLB равед (оромона, дар зер тасвир ва шарҳ мавҷуд аст)

Мо ҳамаи ин вариантҳо ва якчанд гибридии дигарро озмоиш кардем:

  • Cloudflare + GLB

Ин схема аз сабаби вақти кор ва хатогиҳои DNS ба мо мувофиқ набуд. Аммо санҷиш пеш аз ислоҳ шудани хато дар тарафи CF гузаронида шуд, шояд ҳоло беҳтар аст (аммо ин вақти таъхири HTTP-ро истисно намекунад).

  • Алӣ + GLB

Ин схема инчунин аз нуқтаи назари вақти корӣ ба мо мувофиқ набуд, зеро GLB аксар вақт аз сабаби имконнопазирии пайвастшавӣ дар вақти қобили қабул ё тайм-аут аз боло меафтад, зеро барои сервер дар дохили Чин суроғаи GLB дар берун мемонад ва аз ин рӯ дар паси Сипар девори чинӣ. Ҷодугарӣ рӯй надод.

  • Танҳо GLB

Варианти шабеҳи пешина, танҳо он серверҳоро дар худи Чин истифода намебурд: трафик мустақиман ба GLB рафт (сабтҳои DNS иваз карда шуданд). Мутаносибан, натиҷаҳо қаноатбахш набуданд, зеро муштариёни оддии чинӣ, ки аз хидматҳои провайдерҳои оддии интернет истифода мебаранд, нисбат ба Али Cloud вазъи гузариши брандмауэрро хеле бадтар доранд.

  • Shenzhen -> (CEN/IPSEC) -> Прокси -> GLB

Дар ин ҷо мо тасмим гирифтем, ки беҳтарини ҳама қарорҳоро истифода барем:

  • субот ва кафолат SLA аз CEN
  • суръати баланд аз IPSEC
  • Шабакаи "суръат"-и Google ва ҳама гуна пахши он.

Нақша чунин ба назар мерасад: трафики корбар дар мошини виртуалӣ қатъ карда мешавад ч-шенчжэнь. Дар он ҷо Nginx болоӣ танзим карда шудааст, ки баъзеи онҳо ба серверҳои хусусии IP, ки дар канори дигари нақби IPSEC ҷойгиранд, ва баъзе болообҳо ба суроғаҳои хусусии серверҳо дар тарафи дигари CEN ишора мекунанд. IPSEC ба минтақа танзим карда шудааст Осиё-шарқ1 дар GCP (вақте ки ҳалли он наздиктарин минтақа ба Чин буд. Ҳоло GCP дар Ҳонконг низ ҳузур дорад). CEN - ба минтақа мо-шарк1 дар Али Cloud.

Баъд харакати наклиёт аз ду канор ба суи anycast IP GLB, яъне то наздиктарин нуқтаи ҳузури Google ва тавассути шабакаҳои он ба минтақа рафт мо-шарк4 дар GCP, ки дар он мошинҳои виртуалии ивазкунанда мавҷуданд (бо зерфилтр дар nginx).

Ин ҳалли гибридӣ, тавре ки мо интизор будем, аз бартариҳои ҳар як технология истифода бурд. Умуман, трафик тавассути IPSEC-и тез мегузарад, аммо агар мушкилот сар шавад, мо зуд ва дар тӯли чанд дақиқа ин серверҳоро аз болооб берун мекунем ва трафикро танҳо тавассути CEN то мӯътадил шудани нақб мефиристем.

Бо татбиқи ҳалли 4-уми рӯйхати дар боло зикршуда, мо ба он чизе, ки мехостем ва он чизеро, ки тиҷорат аз мо талаб мекард, ба даст овардем.

Натиҷаҳои санҷиши браузер барои ҳалли нав дар муқоиса бо қаблӣ:

ҳалли
Uptime
Медион
75 фоиз
95 фоиз

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

CEN
99.75
16
21
27

CEN/IPsec + GLB
99.79
13
16
25

CDN

Дар ҳалли татбиқи мо ҳама чиз хуб аст, аммо CDN вуҷуд надорад, ки ҳаракати нақлиётро дар сатҳи минтақавӣ ва ҳатто шаҳрӣ суръат бахшад. Дар назария, ин бояд бо истифода аз каналҳои иртиботии фаврии провайдери CDN сайтро барои корбарони ниҳоӣ суръат бахшад. Ва мо ҳама вақт дар бораи он фикр мекардем. Ва ҳоло вақти такрори навбатии лоиҳа фаро расидааст: ҷустуҷӯ ва озмоиши провайдерҳои CDN дар Чин.

Ва ман дар ин бора ба шумо дар қисми навбатии ниҳоӣ мегӯям :)

Манбаъ: will.com

Илова Эзоҳ