ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€ пСрфоманса

Π•Π΄Π²Π° Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΈΠ· людСй
ΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ Ρ€Π°Π΄ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· страданиС.
Π›ΡŽΠ΄Π²ΠΈΠ³ Π²Π°Π½ Π‘Π΅Ρ‚Ρ…ΠΎΠ²Π΅Π½

ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€ пСрфоманса

Π― Π‘Π΅Ρ€Π³Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² ЯндСкс.Π”Π΅Π½ΡŒΠ³Π°Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠΎ исслСдованию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠ²Π΅Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π½Π°Ρ‡Π°Π»ΠΎ истории ΠΎ нашСм ΠΏΡƒΡ‚ΠΈ ΠΊ использованию оркСстровки β€” ΠΊΠ°ΠΊ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π»ΠΈ инструмСнты ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΈ. Всё события ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ происходят Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, поэтому Π²Ρ‹, Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, слСдитС Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ситуации практичСски Π² прямом эфирС.

Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅?

ΠšΡ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΉ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€? ΠžΡ‚ Ρ„Ρ€. diriger β€” ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ β€” Π² ΠΌΠΈΡ€Π΅ ΠΌΡƒΠ·Ρ‹ΠΊΠΈ β€” это Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ разучивания ΠΈ исполнСния ансамблСвой ΠΌΡƒΠ·Ρ‹ΠΊΠΈ. Π’ нашСм случаС это мСсто Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ систСмы оркСстрации ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π˜Ρ… Ρ€ΠΎΠ»ΡŒ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€ΠΎΠ»ΠΈ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€Π° Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ β€” ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΈΠ³Ρ€Ρƒ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ мощностСй β€” Π½Π°Π·ΠΎΠ²Π΅ΠΌ ΠΈΡ… сСрвСрами, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ свои ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ эксплуатации этих сСрвСров Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π΅Π½. НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

  • Команда Π΄Π΅Π»Π°Π΅Ρ‚ запрос, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ эксплуатации, Π½Π° прСдоставлСниС ΠΈΠΌ рСсурсов с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.
  • Π“Ρ€ΡƒΠΏΠΏΠ° эксплуатации прСдоставляСт ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство β€” cloud ΠΈΠ»ΠΈ bare metal (Β«Π³ΠΎΠ»ΠΎΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΎΒ») β€” ΠΈ ΠΎΠ±ΡΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΌ состоянии согласно SLA. Настройка Ρ‚Π°ΠΊΠΆΠ΅ производится силами Π³Ρ€ΡƒΠΏΠΏΡ‹ эксплуатации.
  • Команда ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рСсурсы cloud ΠΈΠ»ΠΈ bare metal ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ эксплуатации, настройку ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ своими силами.
  • Команда сама Β«Π·Π°ΠΊΡƒΠΏΠ°Π΅Ρ‚Β» рСсурсы ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚/настраиваСт ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π’ нашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сСрвСры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ β€” ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ОБ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ‚.ΠΏ.

Для сСбя ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΈΡ… Π² Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ°:

  • танковая Π³Ρ€ΡƒΠΏΠΏΠ°,
  • сСрвисная Π³Ρ€ΡƒΠΏΠΏΠ°.

Ванковая Π³Ρ€ΡƒΠΏΠΏΠ° состоит ΠΈΠ· хостов с ЯндСкс.Π’Π°Π½ΠΊΠΎΠΌ.

БСрвисная Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм составС всё, Ρ‡Ρ‚ΠΎ связано с обслуТиваниСм, β€” это Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСрвисы ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ автоматичСских ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ Ρ‚.ΠΏ.

Π’ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ всСм этим стало Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈ ΠΌΡ‹ Π·Π°Π΄ΡƒΠΌΠ°Π»ΠΈΡΡŒ ΠΎΠ± Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго процСсса, начиная ΠΎΡ‚ Β«Π½Π°Π»ΠΈΠ²ΠΊΠΈΒ» сСрвСров ΠΈ заканчивая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ, Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ ΠΈ запуском нашСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€ Π½ΡƒΠΆΠ΅Π½, Π΄Π°ΠΆΠ΅ Ссли оркСстр сам ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ?

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ освоили Ansible ΠΈ стали Β«Π½Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΒ» наши сСрвСры bare metal, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² мСньшСй стСпСни зависимыми ΠΎΡ‚ систСмных администраторов β€” здСсь Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ всС, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ избавляСм администраторов ΠΎΡ‚ части Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρƒ Π½ΠΈΡ… ΠΈ Π±Π΅Π· нас всСгда Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. ΠœΡ‹ стрСмимся ΠΊ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ Π²Π½Π΅ своСй ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ автономности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π’ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ansible ΡƒΠΆΠ΅ достаточно Π΄Π°Π²Π½ΠΎ настроСна ΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, поэтому ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ встроили своё Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² этот процСсс.

БСйчас Π½Π°Π»ΠΈΠ²ΠΊΠ° хостов состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Ρ€ΠΎΠ»Π΅ΠΉ Ansible:

  • пСрвая Ρ€ΠΎΠ»ΡŒ устанавливаСт OS,
  • вторая ΠΏΡ€ΠΎΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ настройки для хоста, LDAP-Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ,
  • ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ устанавливаСт Π² docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ЯндСкс.Π’Π°Π½ΠΊ ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ зависимости.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ сСрвисам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Для своих Π·Π°Π΄Π°Ρ‡ ΠΌΡ‹ Π² Ρ€Π°Π²Π½ΠΎΠΉ стСпСни ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Kotlin ΠΈ Python, Π° Π΅Ρ‰Ρ‘ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ Golang. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π°ΡˆΠΈΡ… сСрвисов, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ свободу Π²Ρ‹Π±ΠΎΡ€Π° языка программирования ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ поставки своСго прилоТСния.

НСбольшая Ρ€Π΅ΠΌΠ°Ρ€ΠΊΠ° ΠΏΡ€ΠΎ ipv6 Π² Docker

Π§Π°ΡΡ‚ΡŒ сСрвисов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ взаимодСйствуСм, доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ipv6, поэтому ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ipv6 для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Богласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ipv6 Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Docker, ipv6 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² daemon.json:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒ ipv6, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² fixed-cidr-v6.
Однако ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ipv6 NAT, ΠΈ Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ:

  • БСйчас docker нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ipv6.
  • НаличиС Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ глобально ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ адрСса ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΡ€Ρ‚Ρ‹ (Π΄Π°ΠΆΠ΅ Π½Π΅ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅) становятся доступны всСм, Ссли Π½Π΅ выполняСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ.
  • userland proxy для опубликования ΠΏΠΎΡ€Ρ‚ΠΎΠ², iptables Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ipv4.

ipv6 NAT β€” это docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам управляСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Π² ip6tables ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ряд манипуляций. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ip6table_nat Π² систСмС. НаличиС установлСнного Π² систСмС модуля Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π² ядро. ΠœΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с этим, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с NAT Π½Π° свСТСм хостС:

2019/01/22 14:59:54 running [/sbin/ip6tables -t filter -N DOCKER --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory
ip6tables v1.6.2: can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠΈΠ»Π°ΡΡŒ послС добавлСния Π² Ρ€ΠΎΠ»ΡŒ Ansible ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля modprobe ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ стартС ОБ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lineinfile:

- name: Add ip6table_nat module
 modprobe:
   name: ip6table_nat
   state: present
- name: Add ip6table_nat to boot
 lineinfile:
   path: /etc/modules
   line: 'ip6table_nat'

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π° Ρ…Π°Π±Ρ€Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ, которая ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈ ясно описываСт прСимущСства ΠΈ нСдостатки Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ipv6 Π² docker.

Но вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ вопросу, Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π² Π½Π°Ρ‡Π°Π»Π΅:
ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€ Π½ΡƒΠΆΠ΅Π½, Π΄Π°ΠΆΠ΅ Ссли оркСстр сам ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² нашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

  • процСсс Β«Π½Π°Π»ΠΈΠ²ΠΊΠΈΒ» сСрвСров создан,
  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ сСрвисов ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос β€” ΠΊΠ°ΠΊ эффСктивно ΠΈ максимально Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наши сСрвисы Π² docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…?

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ участник оркСстра Π·Π½Π°Π΅Ρ‚ свою ΠΏΠ°Ρ€Ρ‚ΠΈΡŽ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄ΡƒΠΌΠΊΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€Π° наш оркСстр Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ эффСктивно Ρ€Π΅ΠΏΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ слаТСнно ΠΈΠ³Ρ€Π°Ρ‚ΡŒ. Π”ΠΈΡ€ΠΈΠΆΠ΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ исполнСния, Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π±Ρ‹Π»ΠΎ объСдинСно Π΅Π΄ΠΈΠ½Ρ‹ΠΌ Ρ‚Π΅ΠΌΠΏΠΎΠΌ ΠΈ настроСниСм.

Как с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ влоТСниями ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄ΠΈΡ€ΠΈΠΆΠ΅Ρ€Π°?

Π’Π΅ΠΌΠ° оркСстрации достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π²ΠΈΡ‚Π° Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅. Но сначала ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€Ρƒ.

Consul β€” систСма, которая прСдоставляСт Π΄Π²Π΅ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ сСрвисов (service discovery),
  • распрСдСлСнноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ нашСм оркСстрС Consul Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ сСрвисов ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° рСгистрации:

  • Активная β€” это ΠΊΠΎΠ³Π΄Π° сСрвис сам рСгистрируСт сСбя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ HTTP API;
  • Пассивная β€” сСрвис Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Vault β€” это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ стандартизируСт ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ бСзопасноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с сСкрСтами β€” ΠΏΠ°Ρ€ΠΎΠ»ΠΈ, сСртификаты.
Π’ΠΎΡ‚ прСимущСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот инструмСнт:

  • Π•Π΄ΠΈΠ½Ρ‹ΠΉ Ρ†Π΅Π½Ρ‚Ρ€ создания ΠΈ хранСния сСкрСтов, управлСния ΠΈΡ… ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ посрСдством HTTP API.
  • Transit Secrets Engine β€” ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ-Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΈΡ… сохранСния. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠΎ Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ связи.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доступов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ.
  • Аудит доступа ΠΊ сСкрСтам.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания собствСнного CA (Certificate Authority) для управлСния самоподписанными сСртификатами Π²Π½ΡƒΡ‚Ρ€ΠΈ своСй инфраструктуры.

Учитывая всС наши трСбования, Π½Π° Ρ€ΠΎΠ»ΡŒ Π΄ΠΈΡ€ΠΈΠΆΠ΅Ρ€Π° годились Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° β€” Kubernetes ΠΈ Nomad.

Kubernetes

Бколько ΡƒΠΆΠ΅ написано ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ статСй ΠΈ ΠΊΠ½ΠΈΠ³ (Π²ΠΎΡ‚ такая, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ), рассказано Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ², Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΡƒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ практичСски всё. ΠŸΠ»Π°Ρ‚Π° Π·Π° это β€” Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΈΠ΅ настройка ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° кластСра Π½Π° Kubernetes.

Nomad

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ HashiCorp, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, извСстной ΠΏΠΎ упомянутым Π²Ρ‹ΡˆΠ΅ consul ΠΈ vault.

Nomad показался Π½Π°ΠΌ достаточно простым Π² установкС ΠΈ настройкС, Ρ‡Π΅ΠΌ Kubernetes. Один Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСрвСра, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ΠŸΡ€ΠΈ этом Nomad ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ вСсь список Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π»: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ кластСром, быстрый ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° multidatacenter. Плюс ΠΏΡ€ΠΈ использовании consul ΠΈ vault ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π΅ΡΠ½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ для оркСстровки Π½Π°ΡˆΠΈΡ… сСрвисов.

Π§Ρ‚ΠΎ сСйчас Π² Ρ€Π°Π±ΠΎΡ‚Π΅:

  • ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ сСрвСры для развСртывания Consul,
  • Π² Consul Π±ΡƒΠ΄Π΅Ρ‚ занСсСна конфигурация кластСра nomad, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ nomad Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ автоматичСски,
  • ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ vault для хранСния сСкрСтов.

Вопрос Π² Π·Π°Π» β€” стоит Π»ΠΈ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΈΡ€ΠΈΠΆΡ‘Ρ€Π° для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΈΠ»ΠΈ оркСстру ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ? РасскаТитС Π² коммСнтариях, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ.

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° наш Π±Π»ΠΎΠ³ ΠΈ ΠΎΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° связи β€” скоро расскаТСм, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΈ настроили Π»ΠΈ ΠΌΡ‹ кластСр nomad, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ этого Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ.

Π—Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² наш ΡƒΡŽΡ‚Π½Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Ρ‡Π°Ρ‚ΠΈΠΊ, Π³Π΄Π΅ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ совСта, ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΠΈ просто ΠΏΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΌΡƒ исслСдований ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ.

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