Π’ΠΎΠΏ Ρ„Π°ΠΊΠ°ΠΏΠΎΠ² Π¦ΠΈΠ°Π½

Π’ΠΎΠΏ Ρ„Π°ΠΊΠ°ΠΏΠΎΠ² Π¦ΠΈΠ°Π½

ВсСм Π΄ΠΎΠ±Ρ€Π°!Β 

МСня Π·ΠΎΠ²ΡƒΡ‚ Никита, я Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² Π¦ΠΈΠ°Π½. Одной ΠΈΠ· ΠΌΠΎΠΈΡ… обязанностСй Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ являСтся сниТСниС количСства ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ², связанных с инфраструктурой Π½Π° ΠΏΡ€ΠΎΠ΄Π΅, Π΄ΠΎ нуля.
Π’ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π΄Π°Π»Π΅Π΅, принСсло Π½Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΠΈ, ΠΈ Ρ†Π΅Π»ΡŒ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” Π½Π΅ Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π°ΡˆΠΈΡ… ошибок ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… влияниС.Β 

ΠŸΡ€Π΅Π°ΠΌΠ±ΡƒΠ»Π°

Π”Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π¦ΠΈΠ°Π½ состоял ΠΈΠ· ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΎΠ², ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π°ΠΌΠ΅ΠΊΠΎΠ² Π½Π° микросСрвисы Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΌΡ‹ измСряли Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ рСсурса ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ 3–5 страниц.Β 

ΠžΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ β€” всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” Π°Π»Π΅Ρ€Ρ‚. Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠΌ, β€” Ρ€Π΅ΡˆΠ°Π»ΠΈ люди Π½Π° совСщаниях. Команда ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² всСгда участвовала Π² расслСдовании ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°. Когда расслСдованиС Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ, писали постмортСм β€” своСобразный ΠΎΡ‚Ρ‡Π΅Ρ‚ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ, сколько длилось, Ρ‡Ρ‚ΠΎ сдСлали Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅, Ρ‡Ρ‚ΠΎ сдСлаСм Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.Β 

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ страницы сайта ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±ΠΈΠ»ΠΈ Π΄Π½ΠΎ

Β 
Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ошибки, ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ для бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° страницы сайта. По Π½ΠΈΠΌ ΠΌΡ‹ считаСм количСство ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ…/Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… запросов ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ измСряСм uptime.Β 

Допустим, ΠΌΡ‹ выяснили, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ряд супСрваТных Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² сайта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° основной сСрвис β€” поиск ΠΈ ΠΏΠΎΠ΄Π°Ρ‡Ρƒ объявлСний. Если количСство запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ ошибкой, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 1%, β€” это критичСский ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚. Если Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 15 ΠΌΠΈΠ½ΡƒΡ‚ Π² ΠΏΡ€Π°ΠΉΠΌ-Ρ‚Π°ΠΉΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ошибок ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 0,1% β€” Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ считаСтся критичСским ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π±ΠžΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ², ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π’ΠΎΠΏ Ρ„Π°ΠΊΠ°ΠΏΠΎΠ² Π¦ΠΈΠ°Π½

Π’ΠΎΠΏ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² Π¦ΠΈΠ°Π½

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ случился.Β 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ Ρƒ нас Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ описан ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ Π² эпикС Jira. К слову: для этого ΠΌΡ‹ Π·Π°Π²Π΅Π»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π°Π·Π²Π°Π»ΠΈ Π΅Π³ΠΎ FAIL β€” Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эпики.Β 

Если ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС Ρ„Π΅ΠΉΠ»Ρ‹ Π·Π° послСдниС нСсколько Π»Π΅Ρ‚, Ρ‚ΠΎ Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚:Β 

  • ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹, связанныС с mssql;
  • ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Π΅ внСшними Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ;
  • ошибки Π°Π΄ΠΌΠΈΠ½Π°.

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π°Π΄ΠΌΠΈΠ½ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… интСрСсных Ρ„Π΅ΠΉΠ»Π°Ρ….

ΠŸΡΡ‚ΠΎΠ΅ мСсто β€” «Наводим порядок Π² DNSΒ»

Π­Ρ‚ΠΎ Π±Ρ‹Π» нСнастный Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ. РСшили ΠΌΡ‹ навСсти порядок Π² DNS-кластСрС.Β 

Π—Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ пСрСвСсти Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ dns-сСрвСры c bind Π½Π° powerdns, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² ΠΏΠΎΠ΄ это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвСры, Π³Π΄Π΅ ΠΊΡ€ΠΎΠΌΠ΅ dns Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚.Β 

РазмСстили ΠΌΡ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ dns-сСрвСру Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π½Π°ΡˆΠΈΡ… Π”Π¦, ΠΈ наступил ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° Π·ΠΎΠ½ ΠΈΠ· bind Π² powerdns ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ инфраструктуры Π½Π° Π½ΠΎΠ²Ρ‹Π΅ сСрвСры.Β 

Π’ самый Ρ€Π°Π·Π³Π°Ρ€ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° ΠΈΠ· всСх сСрвСров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… bind-Π°Ρ… Π½Π° всСх сСрвСрах, остался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π² Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π² Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π΅. Π­Ρ‚ΠΎΡ‚ Π”Π¦ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» Π·Π°Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ для нас, Π½ΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ стал single point of failure.
Как Ρ€Π°Π· Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° ΡƒΠΏΠ°Π» ΠΊΠ°Π½Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ Москвой ΠΈ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ΠΎΠΌ. ΠœΡ‹ фактичСски ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π±Π΅Π· DNS Π½Π° ΠΏΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ поднялись, ΠΊΠΎΠ³Π΄Π° хостСр устранил Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ.Β 

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

Если Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΌΡ‹ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Π»ΠΈ внСшними Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π²ΠΎ врСмя ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΠΌ, Ρ‚ΠΎ сСйчас ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² список Ρ‚ΠΎΠ³ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ готовимся. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стрСмимся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ n-2, Π° Π½Π° врСмя Ρ€Π°Π±ΠΎΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ этот ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄ΠΎ n-1.

  • Π’ΠΎ врСмя составлСния ΠΏΠ»Π°Π½Π° дСйствий ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹, Π³Π΄Π΅ сСрвис ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠ°ΡΡ‚ΡŒ, ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°ΠΉΡ‚Π΅ сцСнарий, Π³Π΄Π΅ всС пошло Β«Ρ…ΡƒΠΆΠ΅ Π½Π΅ΠΊΡƒΠ΄Π°Β», Π·Π°Ρ€Π°Π½Π΅Π΅.
  • РаспрСдСляйтС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ dns-сСрвСры ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ гСолокациям/Π΄Π°Ρ‚Π°Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌ/стойкам/ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°ΠΌ/Π²Π²ΠΎΠ΄Π°ΠΌ.
  • На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ dns-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСнаправляСт запросы Π½Π° основныС dns-сСрвСры, Π° Π² случаС Π΅Π³ΠΎ нСдоступности Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ ΠΈΠ· кСша.Β 

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ΅ мСсто β€” «Наводим порядок Π² NginxΒ»

Π’ ΠΎΠ΄ΠΈΠ½ прСкрасный дСнь наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π΅ΡˆΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ Β«Ρ…Π²Π°Ρ‚ΠΈΡ‚ это Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒΒ», ΠΈ запустился процСсс Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² nginx. Основная Ρ†Π΅Π»ΡŒ β€” привСсти ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΊ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятной структурС. РаньшС всС Π±Ρ‹Π»ΠΎ «историчСски слоТившимся» ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² сСбС Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ нСсло. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ server_name вынСсли Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ распрСдСлили всС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ. К слову β€” ΠΊΠΎΠ½Ρ„ΠΈΠ³ содСрТит Π² сСбС 253949 строк ΠΈΠ»ΠΈ 7836520 символа ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ 7 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚. Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ структуры:Β 

Nginx structure

β”œβ”€β”€ access
β”‚ Β  β”œβ”€β”€ allow.list
...
β”‚ Β  └── whitelist.conf
β”œβ”€β”€ geobase
β”‚ Β  β”œβ”€β”€ exclude.conf
...
β”‚ Β  └── geo_ip_to_region_id.conf
β”œβ”€β”€ geodb
β”‚ Β  β”œβ”€β”€ GeoIP.dat
β”‚ Β  β”œβ”€β”€ GeoIP2-Country.mmdb
β”‚ Β  └── GeoLiteCity.dat
β”œβ”€β”€ inc
β”‚ Β  β”œβ”€β”€ error.inc
...
β”‚ Β  └── proxy.inc
β”œβ”€β”€ lists.d
β”‚ Β  β”œβ”€β”€ bot.conf
...
β”‚ Β  β”œβ”€β”€ dynamic
β”‚ Β  └── geo.conf
β”œβ”€β”€ lua
β”‚ Β  β”œβ”€β”€ cookie.lua
β”‚ Β  β”œβ”€β”€ log
β”‚ Β  β”‚ Β  └── log.lua
β”‚ Β  β”œβ”€β”€ logics
β”‚ Β  β”‚ Β  β”œβ”€β”€ include.lua
β”‚ Β  β”‚ Β  β”œβ”€β”€ ...
β”‚ Β  β”‚ Β  └── utils.lua
β”‚ Β  └── prom
β”‚ Β  Β  Β  β”œβ”€β”€ stats.lua
β”‚ Β  Β  Β  └── stats_prometheus.lua
β”œβ”€β”€ map.d
β”‚ Β  β”œβ”€β”€ access.conf
β”‚ Β  β”œβ”€β”€ ..Β 
β”‚ Β  └── zones.conf
β”œβ”€β”€ nginx.conf
β”œβ”€β”€ robots.txt
β”œβ”€β”€ server.d
β”‚ Β  β”œβ”€β”€ cian.ru
β”‚ Β  β”‚ Β  β”œβ”€β”€ cian.ru.conf
β”‚ Β  β”‚ Β  β”œβ”€β”€ ...
β”‚ Β  β”‚ Β  └── my.cian.ru.conf
β”œβ”€β”€ service.d
β”‚ Β  β”œβ”€β”€ ...
β”‚ Β  └── status.conf
└── upstream.d
Β Β Β Β β”œβ”€β”€ cian-mcs.conf
Β Β Β Β β”œβ”€β”€ ...
    └── wafserver.conf

Π‘Ρ‚Π°Π»ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Π½ΠΎ Π² процСссС пСрСимСнования ΠΈ распрСдСлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π»Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π»Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ include *.conf. Как слСдствиС β€” Ρ‡Π°ΡΡ‚ΡŒ хостов стала нСдоступна ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° 301 Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ. Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π° Π±Ρ‹Π» Π½Π΅ 5Ρ…Ρ…/4Ρ…Ρ…, это Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π½Π΅ сразу, Π° лишь ΠΏΠΎΠ΄ ΡƒΡ‚Ρ€ΠΎ. ПослС этого ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ инфраструктурных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:Β 

  • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ структурируйтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ nginx) ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°ΠΉΡ‚Π΅ структуру Π½Π° Ρ€Π°Π½Π½Π΅ΠΌ этапС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ Π²Ρ‹ сдСлаСтС ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ понятными ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Ρ‡Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ ВВМ.
  • Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инфраструктурных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΈΡˆΠΈΡ‚Π΅ тСсты. НапримСр: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ server_name ΠΎΡ‚Π΄Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ статус, + Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Достаточно Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ просто нСсколько скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ судороТно Π½Π΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Π² 3 часа Π½ΠΎΡ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΅Ρ‰Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.Β 

Π’Ρ€Π΅Ρ‚ΡŒΠ΅ мСсто β€” Β«Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ мСсто Π² CassandraΒ»

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ росли, ΠΈ всС Π±Ρ‹Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° Π² кластСрС Cassandra Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠ°Π΄Π°Ρ‚ΡŒ repair Π±ΠΎΠ»ΡŒΡˆΠΈΡ… кСйспСйсов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° Π½ΠΈΡ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ compaction.Β 

Π’ ΠΎΠ΄ΠΈΠ½ нСнастный дСнь кластСр ΠΏΠΎΡ‡Ρ‚ΠΈ прСвратился Π² Ρ‚Ρ‹ΠΊΠ²Ρƒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

  • мСста ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ ΠΎΠΊΠΎΠ»ΠΎ 20% суммарно ΠΏΠΎ кластСру;
  • ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ΄Ρ‹ нСльзя, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ cleanup послС добавлСния Π½ΠΎΠ΄Ρ‹ ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ мСста Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…;
  • ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠ°Π΄Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компакция;Β 
  • кластСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π’ΠΎΠΏ Ρ„Π°ΠΊΠ°ΠΏΠΎΠ² Π¦ΠΈΠ°Π½

Π’Ρ‹Ρ…ΠΎΠ΄ β€” Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ 5 Π½ΠΎΠ΄ Π±Π΅Π· cleanup, послС Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠ»Π°Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· кластСра ΠΈ снова Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ пустыС Π½ΠΎΠ΄Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ мСсто. Π’Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½ΠΎ сильно большС, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹. Π‘Ρ‹Π» риск частичной ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ нСдоступности кластСра.Β 

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

  • На всСх сСрвСрах cassandra Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ занято Π½Π΅ большС 60% мСста Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.Β 
  • Π—Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 50% ΠΏΠΎ cpu.
  • НС стоит Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° capacity planning ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, исходя ΠΈΠ· Π΅Π³ΠΎ спСцифики.
  • Π§Π΅ΠΌ большС Π½ΠΎΠ΄ Π² кластСрС β€” Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅. Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹, содСрТащиС нСбольшой объСм Π΄Π°Π½Π½Ρ‹Ρ…, быстрСС ΠΏΠ΅Ρ€Π΅Π½Π°Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΈ Ρ‚Π°ΠΊΠΎΠΉ кластСр Π»Π΅Π³Ρ‡Π΅ Ρ€Π΅Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.Β 

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ мСсто β€” Β«Π˜ΡΡ‡Π΅Π·Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· consul key-value storageΒ»

Для service discovery ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ consul. Но Ρƒ нас Π΅Π³ΠΎ key-value ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ для blue-green Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°. Π’Π°ΠΌ хранится информация ΠΎΠ± Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… апстримах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами Π²ΠΎ врСмя дСплоя. Для этого Π±Ρ‹Π» написан сСрвис дСплоя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствовал с KV. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· KV ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ. Восстановили ΠΏΠΎ памяти, Π½ΠΎ с рядом ошибок. Как слСдствиС β€” ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° апстримы Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π°ΡΡŒ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ, Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ошибок 502 ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ² ΠΏΠΎ CPU. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π»ΠΈ с consul KV Π½Π° postgres, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ просто.Β Β 

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

  • БСрвисы Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ сайта Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Ρƒ вас Π½Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ES β€” Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ доступ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСти ΠΎΡ‚ΠΎΠ²ΡΡŽΠ΄Ρƒ, Π³Π΄Π΅ ΠΎΠ½ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ action.destructive_requires_name: true.
  • ΠžΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΈ восстановлСния Π·Π°Ρ€Π°Π½Π΅Π΅. НапримСр, Π·Π°Ρ€Π°Π½Π΅Π΅ сдСлайтС скрипт (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π°Β python), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈ Π±Π΅ΠΊΠ°ΠΏΠΈΡ‚ΡŒ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ мСсто β€” Β«ΠšΠ°ΠΏΠΈΡ‚Π°Π½ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΒ»Β 

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° апстримы nginx Π² случаях, ΠΊΠΎΠ³Π΄Π° Π² Π±Π΅ΠΊΠ΅Π½Π΄Π΅ Π±Ρ‹Π»ΠΎ 10+ сСрвСров. Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ round-robin направлял запросы с 1 ΠΏΠΎ послСдний апстрим ΠΏΠΎ порядку, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π»ΠΎΠ°Π΄ nginx Π½Π°Ρ‡ΠΈΠ½Π°Π» сначала, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ апстримы всСгда ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ большС запросов, Ρ‡Π΅ΠΌ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Как слСдствиС β€” ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ страдал вСсь сайт. Π­Ρ‚ΠΎ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ всС Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ nginx для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ random Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ β€” Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ lua ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²Π·Π»Π΅Ρ‚Π΅Π» Π½Π° вСрсии 1.15 (Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚). ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ наш nginx 1.14.2, Π²Π½Π΅Π΄Ρ€ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ random. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π­Ρ‚ΠΎΡ‚ Π±Π°Π³ ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ Π² Π½ΠΎΠΌΠΈΠ½Π°Ρ†ΠΈΠΈ Β«ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΒ».

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

Π‘Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ интСрСсно ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этот Π±Π°Π³).Β 

  • ВыстройтС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π» Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„Π»ΡƒΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ быстро. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ELK для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° rps Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ backend ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ upstream, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния nginx. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это Π½Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.Β 

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ бОльшСй части Ρ„Π΅ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ скрупулСзном ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ дСлаСшь. Надо всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π·Π°ΠΊΠΎΠ½Π΅ ΠœΠ΅Ρ€Ρ„ΠΈ:Β Anything that can go wrong will go wrong, ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ ΠΈΠΌ.Β 

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com