Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π²Π΅Π± практичСски нСмыслим Π±Π΅Π· ΠΌΠ΅Π΄ΠΈΠ°ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°: смартфоны Π΅ΡΡ‚ΡŒ практичСски Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ нашСй Π±Π°Π±ΡƒΡˆΠΊΠΈ, всС сидят Π² соцсСтях, ΠΈ простои Π² обслуТивании Π΄ΠΎΡ€ΠΎΠ³ΠΎ обходятся компаниям. Π’Π°ΡˆΠ΅ΠΌΡƒ вниманию Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° рассказа ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Badoo ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»Π° ΠΎΡ‚Π΄Π°Ρ‡Ρƒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ Π² процСссС, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹, Π½Ρƒ ΠΈ ΠΊΠ°ΠΊ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ софтового Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° основС Nginx, обСспСчив ΠΏΡ€ΠΈ этом ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π½Π° всСх уровнях (Π²ΠΈΠ΄Π΅ΠΎ). Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² рассказа ОлСга Sannis Π•Ρ„ΠΈΠΌΠΎΠ²Π° ΠΈ АлСксандра Π”Ρ‹ΠΌΠΎΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подСлились своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Uptime day 4.

β€” НачнСм с нСбольшого ввСдСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ слой, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠΌ, ΠΈ слой, Π³Π΄Π΅ ΠΌΡ‹ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌ. ΠŸΡ€ΠΈ этом, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ большого Ρ…ΠΈΡ‚Ρ€Π΅ΠΉΡ‚Π° ΠΈ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сторадТи, Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая фотография ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π»Π΅ΠΆΠ°Π»Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ сСрвСрС. Π˜Π½Π°Ρ‡Π΅ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· большС дисков, Π²ΠΎ сколько Ρƒ нас большС сСрвСров. Π₯ΠΈΡ‚Ρ€Π΅ΠΉΡ‚ Ρƒ нас Π² Ρ€Π°ΠΉΠΎΠ½Π΅ 99%, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ Π² 100 Ρ€Π°Π· сниТаСм Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° наши storage, ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΅Ρ‰Π΅ 10 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΊΠΎΠ³Π΄Π° всС это ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΎΡΡŒ, Ρƒ нас Π±Ρ‹Π»ΠΎ 50 сСрвСров. БоотвСтствСнно, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎ сути 50 Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ эти сСрвСры ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚.

ЕстСствСнно, сразу встал вопрос: Π° Ссли Ρƒ нас ΠΎΠ΄ΠΈΠ½ сСрвСр ΡƒΠΏΠ°Π΄Π΅Ρ‚, Π±ΡƒΠ΄Π΅Ρ‚ нСдоступСн, ΠΊΠ°ΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΡ‹ тСряСм? ΠœΡ‹ посмотрСли, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅, ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π΅ΡˆΠΈΠ»Π° всС наши ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π» Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ F5-network (которая, кстати, Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ ΠΊΡƒΠΏΠΈΠ»Π° NGINX, Inc): BIG-IP Local Traffic Manager.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π§Ρ‚ΠΎ эта ΠΆΠ΅Π»Π΅Π·ΠΊΠ° (LTM) Π΄Π΅Π»Π°Π΅Ρ‚: это ΠΆΠ΅Π»Π΅Π·Π½Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΅ redundancy своих Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΈ позволяСт Ρ€ΠΎΡƒΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ сСти, Π½Π° ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ настройках, Π΄Π΅Π»Π°Π΅Ρ‚ health-check’и. Нам Π±Ρ‹Π»ΠΎ Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ эту ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. БоотвСтствСнно, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΈΡΡŒ с ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ кэша. Как это выглядит? Π•ΡΡ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΊΠ°, которая смотрит Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄ΠΎΠΌΠ΅Π½Ρƒ, ΠΎΠ΄Π½ΠΎΠΌΡƒ ip, Π΄Π΅Π»Π°Π΅Ρ‚ ssl offload, Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ http-запросы, ΠΈΠ· IRule Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ кэша, ΠΊΡƒΠ΄Π° ΠΏΠΎΠΉΡ‚ΠΈ, ΠΈ пускаСт Ρ‚ΡƒΠ΄Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. ΠŸΡ€ΠΈ этом ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ health-cheсk’и, ΠΈ Π² случаС нСдоступности ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΡ‹ сдСлали Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ шСл Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ сСрвСр. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния конфигурирования Π΅ΡΡ‚ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ всС довольно просто: ΠΌΡ‹ прописываСм ΠΊΠ°Ρ€Ρ‚Ρƒ, соотвСтствиС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ числа Π½Π°ΡˆΠ΅ΠΌΡƒ IP Π² сСти, Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° 80-ΠΌ ΠΈ 443-ΠΌ ΠΏΠΎΡ€Ρ‚Π°Ρ…, Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ, Ссли сСрвСр нСдоступСн, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 35-ΠΉ, ΠΈ описываСм ΠΊΡƒΡ‡Ρƒ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ эту Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π½Π°Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ. ЕдинствСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ программируСтся ΠΆΠ΅Π»Π΅Π·ΠΊΠ°, это язык Tcl. Если ΠΊΡ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠΉ помнит… язык этот большС write-only, Ρ‡Π΅ΠΌ язык, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для программирования:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π§Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ? ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ, которая обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ нашСй инфраструктуры, Ρ€ΠΎΡƒΡ‚ΠΈΡ‚ вСсь наш Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, обСспСчиваСт health-cheсk’и ΠΈ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ довольно Π΄ΠΎΠ»Π³ΠΎ: Π·Π° послСдниС 10 Π»Π΅Ρ‚ ΠΊ Π½Π΅ΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π°Ρ€Π΅ΠΊΠ°Π½ΠΈΠΉ. К Π½Π°Ρ‡Π°Π»Ρƒ 2018 Π³ΠΎΠ΄Π° ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 80k Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π² сСкунду. Π­Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 80 Π³ΠΈΠ³Π°Π±ΠΈΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с ΠΎΠ±ΠΎΠΈΡ… Π½Π°ΡˆΠΈΡ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ².

ΠžΠ΄Π½Π°ΠΊΠΎβ€¦

Π’ Π½Π°Ρ‡Π°Π»Π΅ 2018 Π³ΠΎΠ΄Π° ΠΌΡ‹ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π½Π΅ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: врСмя ΠΎΡ‚Π΄Π°Ρ‡ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ явно выросло. И ΠΎΠ½ΠΎ пСрСстало нас ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самый ΠΏΠΈΠΊ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° β€” для нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ это Π½ΠΎΡ‡ΡŒ с Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΡ Π½Π° понСдСльник. Но всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя систСма Π²Π΅Π»Π° сСбя ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ. ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡ… Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ uplinks внСшниС, ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… uplinks, нашли всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста. Но ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° всё это Π½Π΅ Π΄Π°Π»ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ исчСзла.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΡƒΠ·ΠΊΠΈΠΌ мСстом Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ самих Ρ„ΠΎΡ‚ΠΎ-кэшСй. И ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° упираСтся Π² Π½ΠΈΡ…. Π§Ρ‚ΠΎ ΠΆ, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” Π² основном, сСтСвыС ΠΏΠΎΡ€Ρ‚Ρ‹ Π½Π° Ρ„ΠΎΡ‚ΠΎΠΊΡΡˆΠ°Ρ…. Но снова Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ явного ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ самого LTM-Π°, ΠΈ Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСх CPU Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΏΠ»Π°Π²Π½ΠΎ, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π΅Π·ΠΊΠΎ упираСтся Π² ΠΏΠΎΠ»ΠΊΡƒ. ΠŸΡ€ΠΈ этом LTM пСрСстаСт Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° health-check’ΠΈ uplink’ΠΎΠ² ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡ… случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Π΄Π΅Ρ‚ ΠΊ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ источник ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡƒΠ·ΠΊΠΎΠ΅ мСсто. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, само Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ, β€” это ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам LTM. Но Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΆΠ΅Π»Π΅Π·ΠΎ достаточно ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅, Ρ‚Ρ‹ Π½Π΅ пойдСшь Π² блиТайший супСрмаркСт ΠΈ Π½Π΅ ΠΊΡƒΠΏΠΈΡˆΡŒ. Π­Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, ΠΈ это Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ самому, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° своих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с использованиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ доступом. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ‹ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ для этого ΠΈ сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠΌ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, вСдь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅Π΄ΠΎΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ. Π‘Ρ‚Π°Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ, Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ всС это ΠΎΡ‡Π΅Π½ΡŒ-ΠΎΡ‡Π΅Π½ΡŒ быстро, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ β€” Π²Ρ‡Π΅Ρ€Π°.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Π° Π·Π²ΡƒΡ‡Π°Π»Π° ΠΊΠ°ΠΊ Β«ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ максимально быстро ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎ ΠΆΠ΅Π»Π΅Π·ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρƒ нас Π΅ΡΡ‚ΡŒΒ», ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ, β€” это просто ΡΠ½ΡΡ‚ΡŒ с Ρ„Ρ€ΠΎΠ½Ρ‚Π° ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ самыС ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Nginx, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΡƒΠΌΠ΅Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всю Ρ‚Ρƒ ΡΠ°ΠΌΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π½ΡŒΡˆΠ΅ Π΄Π΅Π»Π°Π»Π° ΠΆΠ΅Π»Π΅Π·ΠΊΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ фактичСски ΠΌΡ‹ оставляли Π½Π°ΡˆΡƒ ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ, ставили Π΅Ρ‰Π΅ 4 сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄Π΅Π»Π°Π»ΠΈ для Π½ΠΈΡ… внСшниС Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ 10 Π»Π΅Ρ‚ назад… ΠœΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ тСряли Π² доступности Π² случаС падСния этих машин, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π΅ΡˆΠ°Π»ΠΈ локально ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

БоотвСтствСнно, Π»ΠΎΠ³ΠΈΠΊΠ° остаСтся Ρ‚ΠΎΠΉ ΠΆΠ΅ самой: ΠΌΡ‹ ставим Nginx, ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ SSL-offload, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ… ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³Π°, health-check’ΠΈ ΠΈ просто ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ Π»ΠΎΠ³ΠΈΠΊΡƒ, которая Ρƒ нас Π±Ρ‹Π»Π° Π΄ΠΎ этого.

Бадимся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° казалось, Ρ‡Ρ‚ΠΎ всС Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто, Π½ΠΎ, ΠΊ соТалСнию, ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ°Π½ΡƒΠ°Π»Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ слоТно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ совСтуСм просто Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Β«ΠΊΠ°ΠΊ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Nginx для Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉΒ»: Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, которая ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ настройки стоит Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ. Но ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ самим. Ну, Π° дальшС всС просто: описываСм сСрвСры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ, описываСм сСртификаты… Но самоС интСрСсноС β€” это, собствСнно, сама Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³Π°.

ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ Π½Π°ΠΌ казалось, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ просто описываСм наш локСйшн, ΠΌΠ°Ρ‚Ρ‡ΠΈΠΌ Π² Π½Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ нашСго Ρ„ΠΎΡ‚ΠΎΠΊΡΡˆΠ°, Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π»ΠΈΠ±ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ описываСм, сколько Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ апстримов, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ апстримС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΈ бэкапный сСрвСр β€” Π² случаС, Ссли основной сСрвСр нСдоступСн:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

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

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΌΡ‹ сдСлали Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

Π°) Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Nginx’Ρƒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ β€” ΠΈ ΠΊ соТалСнию, СдинствСнный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” просто Π·Π°Π΄Π°Ρ‚ΡŒ настройки max fails.

Π±) вспомнили, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ health-check’ΠΈ β€” соотвСтствСнно, ΠΌΡ‹ сдСлали довольно частыС health-check’ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ простой Π² случаС Π°Π²Π°Ρ€ΠΈΠΈ Ρƒ нас Π±Ρ‹Π» ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

К соТалСнию, это Ρ‚ΠΎΠΆΠ΅ Π½Π΅ всС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой схСмы ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ TCP health-check β€” Ρ‚ΠΎΠΆΠ΅ ΡˆΡ‚ΡƒΠΊΠ° нСнадСТная: Π½Π° апстрим-сСрвСрС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ поднят Π½Π΅ Nginx, ΠΈΠ»ΠΈ Nginx Π² D-state, ΠΈ Π² этом случаС ядро Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ соСдинСниС, health-check Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ сразу ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ это Π½Π° health-check http’ΡˆΠ½Ρ‹ΠΉ, сдСлали ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ссли ΡƒΠΆ ΠΎΡ‚Π΄Π°Π΅Ρ‚ 200, Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² этом скриптС. МоТно Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… сСрвСров ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ смонтирована файловая систСма:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

И нас Π±Ρ‹ это устроило, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ схСма ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ повторяла Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π»Π° ΠΆΠ΅Π»Π΅Π·ΠΊΠ°. Но ΠΌΡ‹-Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅. РаньшС Ρƒ нас Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ сСрвСр, ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли сСрвСров Ρƒ вас сто, Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠ°Π΄Π°Π΅Ρ‚ сразу нСсколько, ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ сСрвСр вряд Π»ΠΈ справится с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ всСм сСрвСрам: сдСлали просто Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ апстрим, записали Ρ‚ΡƒΠ΄Π° всС сСрвСра с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² соотвСтствии с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ‚Π΅ ΠΆΠ΅ самыС health-check’ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас Π±Ρ‹Π»ΠΈ Π΄ΠΎ этого:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ апстрима нСльзя Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ апстрим, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² случаС нСдоступности основного апстрима, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ просто записывали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„ΠΎΡ‚ΠΎΠΊΡΡˆ, ΠΌΡ‹ просто Ρ‡Π΅Ρ€Π΅Π· error_page шли Π½Π° fallback, ΠΎΡ‚ΠΊΡƒΠ΄Π° шли Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ апрстрим:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

И Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сСрвСра, ΠΌΡ‹ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ: Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ β€” сняли с LTM Π½Π° эти сСрвСра, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°ΠΌ Ρ‚Ρƒ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандартноС ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΈ софт, сразу ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ бонусом, Ρ‡Ρ‚ΠΎ эти сСрвСра ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, сколько Π½ΡƒΠΆΠ½ΠΎ. Ну ΠΈ СдинствСнный минус β€” ΠΌΡ‹ потСряли Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ для Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Но Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ этим ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π˜Ρ‚Π°ΠΊ, Ρ‡Π°ΡΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΡ‹ сняли, это ΠΎΠΊΠΎΠ»ΠΎ 40% Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, LTM’Ρƒ стало Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π° Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ послС Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΡ‹ стали ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ 45k запросов Π² сСкунду, Π° 55k. По сути, ΠΌΡ‹ выросли Π½Π° 20% β€” это явно Ρ‚ΠΎΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π΅Π΄ΠΎΠΎΡ‚Π΄Π°Π²Π°Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. И послС этого Π½Π°Ρ‡Π°Π»ΠΈ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ внСшнюю Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π£ нас Π±Ρ‹Π»Π° нСкоторая ΠΏΠ°ΡƒΠ·Π°, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ обсуТдали, ΠΊΠ°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Ρ‹Π»ΠΈ прСдлоТСния ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DNS, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ самописных скриптов, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² динамичСской ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈβ€¦ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡƒΠΆΠ΅ стало ясно, Ρ‡Ρ‚ΠΎ для ΠΏΠΎ-настоящСму Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΎΡ‚Π΄Π°Ρ‡ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ ввСсти Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ слой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° этим ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ. ΠœΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ эти ΠΌΠ°ΡˆΠΈΠ½Ρ‹ photo directors. Π’ качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΎΠΏΠΈΡ€Π°Π»ΠΈΡΡŒ, Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π» Keepalived:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Для Π½Π°Ρ‡Π°Π»Π° β€” ΠΈΠ· Ρ‡Π΅Π³ΠΎ Keepalived состоит. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ β€” это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» VRRP, ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстный сСтСвикам, располоТСн Π½Π° сСтСвом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ внСшнСго IP-адрСса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Вторая Ρ‡Π°ΡΡ‚ΡŒ это β€” IPVS, IP virtual server, для балансировки ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ обСспСчСния отказоустойчивости Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅. И Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ β€” health-check’ΠΈ.

НачнСм с ΠΏΠ΅Ρ€Π²ΠΎΠΉ части: VRRP β€” ΠΊΠ°ΠΊ это выглядит? Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ virtual IP, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ запись Π² dns badoocdn.com, ΠΊΡƒΠ΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρƒ нас IP-адрСс присутствуСт Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС. ΠœΠ΅ΠΆΠ΄Ρƒ сСрвСрами Π±Π΅Π³Π°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ VRRP keepalived-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈ Π² случаС Ссли мастСр ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ с Ρ€Π°Π΄Π°Ρ€ΠΎΠ² β€” сСрвСр пСрСзагрузился ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Ρ‚ΠΎ бэкапный сСрвСр автоматичСски ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ этот IP адрСс Ρƒ сСбя β€” Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€ΡƒΡ‡Π½Ρ‹Ρ… дСйствий. ΠžΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ мастСр ΠΈ бэкап, Π² основном priority: Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‚Π΅ΠΌ большС шансов, Ρ‡Ρ‚ΠΎ машина станСт мастСр. ΠžΡ‡Π΅Π½ΡŒ большоС достоинство, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ IP-адрСса Π½Π° самом сСрвСрС, достаточно ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅, ΠΈ Ссли ΠΏΡ€ΠΈ этом IP-адрСсам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ кастомныС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, это описываСтся прямо Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅, Ρ‚Π΅ΠΌ ΠΆΠ΅ синтаксисом, ΠΊΠ°ΠΊ это описываСтся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ VRRP. Никаких Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ Π²Π°ΠΌ Π½Π΅ встрСтится.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Как это выглядит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅? Π§Ρ‚ΠΎ происходит, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сСрвСров ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΡ‚ΠΊΠ°Π·? Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мастСр ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚, Ρƒ нас бэкап ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ адвСртисмСнты ΠΈ автоматичСски становится мастСром. Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ΠΌΡ‹ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΈ мастСр, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ, подняли Keepalived β€” приходят адвСртисмСнты с бОльшим ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ Ρƒ бэкапа, ΠΈ бэкап автоматичСски прСвращаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, снимаСт с сСбя IP-адрСса, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€ΡƒΡ‡Π½Ρ‹Ρ… дСйствий ΠΏΡ€ΠΈ этом Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ внСшнСго IP-адрСса ΠΌΡ‹ обСспСчили. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ β€” это с внСшнСго IP-адрСса ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ. Π‘ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ балансировки всС достаточно ясно. Π­Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ простой round-robin, Π»ΠΈΠ±ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ слоТныС Π²Π΅Ρ‰ΠΈ, wrr, list connection ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ особого Π½Π΅Ρ‚. А Π²ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ доставки… Π’ΡƒΡ‚ остановимся ΠΏΠΎΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…. Π­Ρ‚ΠΎ NAT, Direct Routing ΠΈ TUN. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сразу Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π° ΠΎΡ‚Π΄Π°Ρ‡Ρƒ 100 Π³ΠΈΠ³Π°Π±ΠΈΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΎΠΊ. Π­Ρ‚ΠΎ Ссли ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ 10 Π³ΠΈΠ³Π°Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ? 10 Π³ΠΈΠ³Π°Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС β€” это ΡƒΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, нашСго понятия «стандартноС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅Β». И Ρ‚ΡƒΡ‚ ΠΌΡ‹ вспомнили, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ просто ΠΎΡ‚Π΄Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΌΡ‹ ΠΎΡ‚Π΄Π°Π΅ΠΌ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

Π’ Ρ‡Π΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ? β€” Колоссальная Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ входящим ΠΈ исходящим Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. Входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‡Π΅Π½ΡŒ малСнький, исходящий ΠΎΡ‡Π΅Π½ΡŒ большой:

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° эти Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Π° поступаСт порядка 200 Мб Π² сСкунду, это самый ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ дСнь. ΠžΡ‚Π΄Π°Π΅ΠΌ ΠΆΠ΅ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ 4,500 Мб Π² сСкунду, ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρƒ нас ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1/22. Π£ΠΆΠ΅ понятно, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ обСспСчСния исходящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° 22 сСрвСра Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… достаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ это соСдинСниС. Π’ΡƒΡ‚ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ direct routing, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Как это выглядит? Π€ΠΎΡ‚ΠΎ-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ Ρƒ нас согласно своСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ соСдинСния Π½Π° Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹. Но ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΡƒΠΆΠ΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ‚ΠΎ-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством машин ΠΌΡ‹ обСспСчиваСм ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡ΠΊΡƒ всСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ… это выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π² нашСм случаС это простой rr, обСспСчиваСм ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΈΡ€Π΅ΠΊΡ‚-Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ ΠΈ дальшС Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всС Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра, сколько ΠΈΡ… Ρƒ нас Π΅ΡΡ‚ΡŒ. ΠšΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ этот Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ случаС, Ссли Ρƒ нас Ρ‚Π°ΠΌ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½-Π΄Π²Π°, нСсколько сСрвСров, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ β€” просто дописываСм эту ΡΠ΅ΠΊΡ†ΠΈΡŽ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ ΠΈ особо Π½Π΅ паримся. Π‘ΠΎ стороны Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров, со стороны Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ самого минимального конфигурирования, ΠΎΠ½ прСкрасно описан Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ Ρ‚Π°ΠΌ Π½Π΅Ρ‚.

Π§Ρ‚ΠΎ особСнно приятно β€” Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠΈ локальной сСти, для нас это Π±Ρ‹Π»ΠΎ Π²Π°ΠΆΠ½ΠΎ, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ это ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ IPVS admin, Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ это выглядит. Π’ΠΎΡ‚ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр, Π½Π° 443 ΠΏΠΎΡ€Ρ‚Ρƒ, ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСниС, ΠΈΠ΄Π΅Ρ‚ пСрСчислСниС всСх Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… сСрвСров, ΠΈ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ connection β€” ΠΎΠ½, плюс-минус, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ. Если ΠΌΡ‹ посмотрим статистику, Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ сСрвСрС, β€” Ρƒ нас Π΅ΡΡ‚ΡŒ входящиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, входящиС соСдинСния, Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ исходящиС. Π˜ΡΡ…ΠΎΠ΄ΡΡ‰ΠΈΠ΅ соСдинСния ΠΈΠ΄ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ€Π°Π·Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ смогли. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Ρƒ нас ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠ² ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΡ‚ΠΊΠ°Π·? Π’Π΅Π΄ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΎ Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ ΡƒΠΉΡ‚ΠΈ Π² kernel panic, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΡΡ, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³ΠΎΡ€Π΅Ρ‚ΡŒ Π±Π»ΠΎΠΊ питания. Π§Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Для этого ΠΈ Π½ΡƒΠΆΠ½Ρ‹ health-check’ΠΈ. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ самыми простыми β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡ€Ρ‚ Ρƒ нас ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, β€” Ρ‚Π°ΠΊ ΠΈ какая-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТными, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ самописных скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π°ΠΆΠ΅ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ.

ΠœΡ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС: Ρƒ нас ΠΈΠ΄Π΅Ρ‚ https-запрос Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ location, вызываСтся скрипт, Ссли ΠΎΠ½ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ 200-ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ, ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ с этим сСрвСром всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΆΠΈΠ²ΠΎΠΉ ΠΈ Π΅Π³ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ спокойно ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ.

Как это, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, выглядит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ сСрвСр допустим Π½Π° обслуТиваниС β€” ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° BIOS, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ Π»ΠΎΠ³Π°Ρ… Ρƒ нас Ρ‚ΡƒΡ‚ ΠΆΠ΅ происходит Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, Π²ΠΈΠ΄ΠΈΠΌ пСрвая строчка, ΠΏΠΎΡ‚ΠΎΠΌ послС Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ помСчаСтся ΠΊΠ°ΠΊ Β«Π·Π°Ρ„Π΅ΠΉΠ»Π΅Π½Β», ΠΈ ΠΎΠ½ удаляСтся просто ΠΈΠ· списка.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π΅Ρ‰Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ повСдСния, ΠΊΠΎΠ³Π΄Π° просто VS выставляСтся Π² ноль, Π½ΠΎ Π² случаС ΠΎΡ‚Π΄Π°Ρ‡ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎ. Π‘Π΅Ρ€Π²Π΅Ρ€ поднимаСтся, запускаСтся Ρ‚Π°ΠΌ Nginx, Ρ‚ΡƒΡ‚ ΠΆΠ΅ health-check’ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΈ сСрвСр появляСтся Ρƒ нас Π² спискС, ΠΈ Π½Π° Π½Π΅Π³ΠΎ Ρ‚ΡƒΡ‚ ΠΆΠ΅ автоматичСски Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. Никаких ΠΏΡ€ΠΈ этом Ρ€ΡƒΡ‡Π½Ρ‹Ρ… дСйствий ΠΎΡ‚ Π΄Π΅ΠΆΡƒΡ€Π½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½Π° Π½Π΅ трСбуСтся. ΠΠΎΡ‡ΡŒΡŽ сСрвСр пСрСзагрузился β€” ΠΎΡ‚Π΄Π΅Π» ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π°ΠΌ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π½ΠΎΡ‡ΡŒΡŽ Π½Π΅ Π·Π²ΠΎΠ½ΠΈΡ‚. Π’ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ставят, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π»ΠΎ, всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Π˜Ρ‚Π°ΠΊ, достаточно простым способ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСбольшого количСства сСрвСром ΠΌΡ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ внСшнСй отказоустойчивости Ρ€Π΅ΡˆΠΈΠ»ΠΈ.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Keepalivede, ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎ написанный софт, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΡƒΡ‡Ρƒ способов Π΅Π³ΠΎ Π·Π°ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· DBus, SMTP, SNMP, Ρ‚Π°ΠΊ ΠΈ стандартным Zabbix’ΠΎΠΌ. Плюс, ΠΎΠ½ сам ΠΏΠΎ сСбС ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ письма практичСски Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡ΠΈΡ…, ΠΈ чСстно говоря, ΠΌΡ‹ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄ΡƒΠΌΠ°Π»ΠΈ Π΄Π°ΠΆΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ писСм Π½Π° любоС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ IP-шник ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли сСрвСров ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ этими письмами сСбя Π·Π°Π²Π°Π»ΠΈΡ‚ΡŒ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ способами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠΌ nginx Π½Π° Ρ„ΠΎΡ‚ΠΎ-Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°Ρ…, ΠΈ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ дСлся ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΆΠ΅Π»Π΅Π·Π°. ΠœΡ‹ Π±Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, совСтовали Π΅Ρ‰Π΅ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ: это Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, внСшниС health-check’ΠΈ доступности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½Π° самом Π΄Π΅Π»Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с внСшними ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТного. ВсСгда стоит Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСти, Π² amazon ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π³Π΄Π΅-Ρ‚ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая смоТСт снаруТи ΠΏΠΈΠ½Π³ΠΎΠ²Π°Ρ‚ΡŒ ваши сСрвСра, ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ anomaly detection, для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ Π² Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ machine learning, Π»ΠΈΠ±ΠΎ простой ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, хотя Π±Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ссли рСквСсты Ρ€Π΅Π·ΠΊΠΎ ΡƒΠΏΠ°Π»ΠΈ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, выросли. Π’ΠΎΠΆΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ: ΠΌΡ‹, ΠΏΠΎ сути, Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ пСрСстало нас ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, довольно простой систСмой, которая Π΄Π΅Π»Π°Π΅Ρ‚ всС Ρ‚ΠΎΠΆΠ΅ самоС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ обСспСчиваСт Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HTTPS Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ дальнСйший ΡƒΠΌΠ½Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ health-check’Π°ΠΌΠΈ. ΠœΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ этой систСмы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой Ρƒ нас всС Ρ‚Π°ΠΊΠΆΠ΅ высокая Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, плюс ΠΌΡ‹ бонусом ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ слоС довольно просто всС это ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это стандартноС ΠΆΠ΅Π»Π΅Π·ΠΎ со стандартным софтом, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΌ самым ΠΌΡ‹ упростили сСбС диагностику Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ? ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρƒ нас Π±Ρ‹Π»Π° Π² январскиС ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠΈ 2018-Π³ΠΎ. Π—Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ эту схСму Π² строй, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ»ΠΈ ΡƒΠΆΠ΅ Π½Π° вСсь Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вСсь Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΡΠ½ΡΡ‚ΡŒ с LTM, ΠΌΡ‹ выросли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡƒ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ с 40 Π³ΠΈΠ³Π°Π±ΠΈΡ‚ Π΄ΠΎ 60 Π³ΠΈΠ³Π°Π±ΠΈΡ‚, ΠΈ ΠΏΡ€ΠΈ этом Π·Π° вСсь 2018-ΠΉ Π³ΠΎΠ΄ смогли ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ практичСски Π² Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° большС Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π² сСкунду.

Как Badoo добился возмоТности ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ 200k Ρ„ΠΎΡ‚ΠΎ Π² сСкунду

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