Эркектердин эң мыктысы десем жаңылышпайм
азап аркылуу бакыт табуу.
Людвиг ван Бетховен

Мен Сергеймин, мен Яндекс.Акчада эффективдүү изилдөө тобунда иштейм. Мен сиздерге оркестрди колдонууга болгон биздин жолубуз жөнүндө окуянын башталышын айткым келет - биз аспаптарды кантип тандап алганбыз жана эмнени эске алганбыз. Макаладагы бардык окуялар реалдуу убакыт режиминде орун алгандыктан, сиз, урматтуу окурмандар, кырдаалдын өнүгүшүнө дээрлик түз эфирде көз салып турасыз.
Биздин командага дирижер эмне үчүн керек?
Дирижер деген ким? From fr. диригер - башкаруу, жетектөө, алып баруу - музыка дүйнөсүндө - бул ансамблдик музыканы үйрөнүү жана аткаруу боюнча жетекчи болгон адам. Биздин учурда бул орунду оркестрдик жана автоматташтыруу системалары ээлейт.
Алардын ролу музыкадагы дирижердун ролунан эч айырмаланбайт — алар коллективге жардам беруу, анын оюнун туура жолго коюу жана уюштуруу учун зарыл.
Эреже катары, команданын белгилүү бир мүмкүнчүлүктөр топтому бар, аларды серверлер деп атайлы, алар өз долбоорлорун ишке ашырышат.
Бул серверлерди алуу жана иштетүү ыкмасы ар түрдүү. Бир нече мисал:
- Команда, мисалы, операциялык топко, аларды белгилүү бир параметрлери бар ресурстар менен камсыз кылуу өтүнүчү менен кайрылат.
- Операциялык топ аларды керектүү көлөмдө - булут же жылаңач металл менен камсыз кылат жана аларды SLAга ылайык талаптагыдай абалда кармоого милдеттенет. Орнотуу да операциялык топ тарабынан ишке ашырылат.
- Команда операциялар тобунан булут же жылаңач металл ресурстарын гана алат жана аны өз алдынча конфигурациялайт.
- Команда өзү ресурстарды "сатып алат" жана аларды толугу менен өз алдынча сактайт / орнотот.
Биздин команда колдоого алынышы керек болгон серверлерди колдонот - ОСти жаңылоо, жаңы пакеттерди орнотуу ж.б.
Биз өзүбүз үчүн аларды эки негизги түргө бөлдүк:
- танк тобу,
- тейлөө тобу.
Танк тобу Яндекс.Танкы бар хосттордон турат.
Тейлөө тобуна тейлөөгө тиешелүү бардык нерселер кирет - бул чыгаруу циклине колдоо көрсөтүү, автоматтык отчетторду түзүү жана башкалар.
Бир убакта мунун баары кол менен башкарууга ыңгайсыз болуп калды жана биз серверлерди “жүктөөдөн” баштап, ички сервисибизди иштеп чыгууга, чыгарууга жана ишке киргизүүгө чейин бүт процессти автоматташтыруу жөнүндө ойлондук.
Оркестр өзү ойной алса да, дирижер эмне үчүн керек?
Баштоо үчүн, биз Ansibleди өздөштүрүп, системалык администраторлордон азыраак көз каранды болуу үчүн жылаңач металл серверлерибизди "төкпөй" баштадык - бул жерде бардыгы утат, биз жаңы шыктарга ээ болобуз жана администраторлорду бизсиз эле ар дайым жетиштүү болгон жумуштардан бошотуп беребиз. . Биз мүмкүн болушунча өз адистигибизден жана командалык автономиядан тышкары өнүгүүгө умтулабыз.
Компанияда Ansible менен иштөө узак убакыт бою конфигурацияланган жана жөнгө салынган, ошондуктан биз бул процесске чечимибизди оңой эле киргиздик.
Учурда хост пулу үч Ansible ролунан турат:
- биринчи ролу OS орнотот,
- экинчиси хост үчүн негизги орнотууларды иштетет, LDAP авторизациясы, мисалы,
- үчүнчүсү Yandex.Tank жана ага байланыштуу көз карандылыктарды докер контейнерине орнотот.
Келгиле, команданын ичинде биз колдонгон кызматтарга өтөбүз.
Биздин милдеттерди аткаруу үчүн, биз Kotlin жана Python бирдей жана бир аз көбүрөөк Голанг колдонобуз. Кызматтарыбызды өнүктүрүүнү жана жайылтууну унификациялоо үчүн биз аларды Docker контейнерлерине топтоону чечтик. Бул сизге программалоо тилин тандоо эркиндигин берет жана ошол эле учурда колдонмоңуз үчүн бирдиктүү жеткирүү форматын жөнгө салат.
Dockerдеги ipv6 жөнүндө кичинекей эскертүү
Биз өз ара аракеттенген кызматтардын айрымдары ipv6 аркылуу гана жеткиликтүү, ошондуктан контейнерлер үчүн ipv6 кантип жасоону чечишибиз керек болчу.
Докердин расмий веб-сайтындагы ipv6 документтерине ылайык, ipv6 daemon.json дарегине параметрлерди кошуу менен иштетилет:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}Бул учурда, провайдер сиз каттала турган ipv6 ички тармагын чыгарышы керек fixed-cidr-v6.
Бирок, биз башка вариантты тандап алдык - ipv6 NAT, жана бул жерде эмне үчүн:
- Азыр докер ipv6 менен гана.
- Ар бир контейнерде глобалдык маршруттук дарекке ээ болуу, кошумча чыпкалоо жүргүзүлбөсө, бардык порттор (ал тургай жарыяланбагандары да) баарына ачык болот дегенди билдирет.
- портторду жарыялоо үчүн колдонуучу прокси, .
ipv6 NAT болуп саналат , ал өзү 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 контейнерлериндеги кызматтарыбызды кантип натыйжалуу жана мүмкүн болушунча автоматтык түрдө жайылтуу, жаңыртуу жана көзөмөлдөө керек?
Оркестрдин ар бир мучесу езунун партиясын билсе да, баш-аламан болуп, баштапкы идеядан четтеп кетет. Мына ушул жерден биз дирижерсуз биздин оркестр эффективдуу репетиция жана ырааттуу ойной албайт деген тыянакка келдик. Дирижер спектаклдин бардык параметрлери үчүн жооп берет, бардыгы бирдиктүү темп жана маанай менен бириктирилишин камсыз кылат.
Кантип минималдуу салым менен жакшы дирижер алууга болот?
Оркестр темасы рынокто жакшы өнүккөн. Бирок адегенде дирижерго жардам бере турган көмөкчү куралдар жөнүндө сөз кылалы.
- эки негизги функцияны камсыз кылган система:
- кызматтын ачылышы,
- бөлүштүрүлгөн ачкыч-нарк сактагыч.
Биздин оркестрде консул кызматтарды каттоо жана алардын конфигурацияларын сактоо үчүн жооптуу болот. эки каттоо параметрлери бар:
- Кызмат HTTP API аркылуу өзүн каттаганда активдүү болот;
- Пассивдүү - кызмат кол менен катталышы керек.
Vault – сырларды – сырсөздөрдү, сертификаттарды коопсуз сактоону жана иштетүүнү стандартташтырган жана бириктирген репозиторий.
Бул куралды колдонуу менен биз ала турган артыкчылыктар:
- HTTP API аркылуу сырларды түзүү жана сактоо жана алардын жашоо циклин башкаруу үчүн бирдиктүү борбор.
- Transit Secrets Engine - маалыматтарды сактабастан шифрлөө жана чечмелөө. корголбогон байланыш каналдары аркылуу шифрленген түрдө маалыматтарды берүү мүмкүнчүлүгү.
- Конфигурациялоо оңой болгон саясаттарга кирүү.
- Сырларга жетүүнүн аудити.
- Инфраструктураңыздын ичинде өз алдынча кол коюлган сертификаттарды башкаруу үчүн өзүңүздүн CA (Сертификат органы) түзүү мүмкүнчүлүгү.
Биздин бардык талаптарыбызды эске алып, дирижердун ролуна эки вариант ылайыктуу болду - Кубернетес жана Номад.
Kubernetes
Ал жөнүндө буга чейин канча макалалар жана китептер жазылган (бул жерде , мисалы), мен кыскача жаза турган кабарлар бар - бул дээрлик бардыгын жасай турган универсалдуу комбайн. Мунун баасы Kubernetesте кластерди түзүү жана тейлөө дайыма эле оңой боло бербейт.
Nomad
HashiCorp компаниясынан, жогоруда айтылган консул жана сактагыч менен белгилүү.
Nomadди орнотуу жана конфигурациялоо Kubernetesке караганда бир топ жеңил экенин таптык. Бир бинардык файл серверде да, кардар режиминде да иштейт. Ошол эле учурда, Nomad биз чечүүнү каалаган милдеттердин толук тизмесин камтыйт: кластердик башкаруу, тез пландоочу, көп маалымат борборлорун колдоо. Мындан тышкары, консулду жана сейфти колдонууда, биз кызматтарыбызды уюштуруу үчүн тыгыз интеграцияга ээ болобуз.
Учурда эмне болуп жатат:
- Консулду жайгаштыруу үчүн даярдалган серверлер,
- көчмөн кластеринин конфигурациясы Консулга киргизилет, анын жардамы менен көчмөн автоматтык түрдө жайгаштырылышы керек,
- Параллелдүү сырларды сактоо үчүн сактагыч орнотобуз.
Угуучуларга суроо: мындай иштерге дирижер жалдоо керекпи же ансыз оркестр жакшы иштеп жатабы? Бул тууралуу пикириңизди комментарийлерде айтыңыз.
Биздин блогго жазылыңыз жана байланышта болуңуз - биз жакында сизге акыры эмне болгонун жана көчмөн кластерин биз каалагандай конфигурациялаган жокпузбу, айтып беребиз.
Биздин жайга келиңиз , бул жерде сиз ар дайым кеңеш сурап, кесиптештериңизге жардам берип, өндүрүмдүүлүктү изилдөө жана башкалар жөнүндө сүйлөшө аласыз.
Source: www.habr.com
