Itakuwa vigumu kusema kwamba bora ya wanaume
kupata furaha kupitia mateso.
Ludwig van Beethoven

Mimi ni Sergey, ninafanya kazi katika Yandex.Money katika timu ya utafiti wa utendaji. Ninataka kukuambia mwanzo wa hadithi kuhusu njia yetu ya kutumia okestration - jinsi tulivyochagua vyombo na kile tulichozingatia. Matukio yote kutoka kwa makala hufanyika kwa wakati halisi, kwa hiyo ninyi, wasomaji wapenzi, mnafuata maendeleo ya hali karibu kuishi.
Kwa nini tunahitaji kondakta kwenye timu yetu?
Kondakta ni nani? Kutoka kwa fr. diriger - kusimamia, kuelekeza, kuongoza - katika ulimwengu wa muziki - huyu ni mtu ambaye ni kiongozi wa kujifunza na utendaji wa muziki wa ensemble. Kwa upande wetu, mahali hapa panachukuliwa na mifumo ya orchestration na automatisering.
Jukumu lao sio tofauti na jukumu la kondakta katika muziki - wanahitajika kusaidia timu, kuongoza na kupanga uchezaji wake.
Kama sheria, timu ina seti fulani ya uwezo - wacha tuwaite seva - ambayo wanatekeleza miradi yao.
Mbinu ya kupata na kuendesha seva hizi ni tofauti. Mifano michache:
- Timu hufanya ombi, kwa mfano, kwa kikundi cha shughuli, kuwapa rasilimali na vigezo fulani.
- Timu ya operesheni huwapa kiasi kinachohitajika - wingu au chuma tupu - na hujitolea kuzidumisha katika hali ifaayo kulingana na SLA. Usanidi pia unafanywa na timu ya operesheni.
- Timu hupokea tu rasilimali za wingu au chuma wazi kutoka kwa kikundi cha shughuli, na huisanidi peke yake.
- Timu yenyewe "hununua" rasilimali na kuzitunza/kuziweka kwa kujitegemea kabisa.
Timu yetu hutumia seva zinazohitaji kuungwa mkono - kusasisha Mfumo wa Uendeshaji, kusakinisha vifurushi vipya, n.k.
Kwa sisi wenyewe, tumezigawanya katika aina mbili kuu:
- kikundi cha tanki,
- kikundi cha huduma.
Kundi la tank lina majeshi na Yandex.Tank.
Kikundi cha huduma kinajumuisha kila kitu kinachohusiana na matengenezo - hizi ni huduma mbalimbali za kutoa msaada kwa mzunguko wa kutolewa, kuzalisha ripoti za moja kwa moja, nk.
Wakati mmoja, yote haya yalikua magumu kusimamia kwa mikono, na tulifikiria juu ya kugeuza mchakato mzima kiotomatiki, kuanzia seva za "kupakia" na kuishia na ukuzaji, kutolewa na uzinduzi wa huduma yetu ya ndani.
Kwa nini kondakta anahitajika, hata kama orchestra yenyewe inaweza kucheza?
Kuanza, tulijua Ansible na tukaanza "kumwaga" seva zetu za chuma wazi ili kuwa tegemezi kidogo kwa wasimamizi wa mfumo - kila mtu anashinda hapa, tunapata ustadi mpya na kupunguza wasimamizi wa baadhi ya kazi ambayo huwa na ya kutosha kila wakati bila sisi. . Tunajitahidi kukuza zaidi ya taaluma yetu na uhuru wa timu kadri tuwezavyo.
Katika kampuni, kazi na Ansible imeundwa na kudhibitiwa kwa muda mrefu, kwa hivyo tuliunganisha suluhisho letu kwa urahisi katika mchakato huu.
Hivi sasa, bwawa la mwenyeji lina majukumu matatu Ansible:
- jukumu la kwanza kusakinisha OS,
- ya pili inaendesha mipangilio ya msingi kwa mwenyeji, idhini ya LDAP, kwa mfano,
- na ya tatu inasakinisha Yandex.Tank na vitegemezi vinavyohusiana katika chombo cha docker.
Wacha tuendelee kwenye huduma tunazotumia ndani ya timu.
Kwa kazi zetu, tunatumia Kotlin na Python kwa usawa, na Golang zaidi kidogo. Ili kuunganisha utayarishaji na usambazaji wa huduma zetu, tuliamua kuzifunga kwenye vyombo vya Docker. Hii inakupa uhuru wa kuchagua lugha ya programu na wakati huo huo kudhibiti umbizo sare la uwasilishaji kwa programu yako.
Ujumbe mdogo kuhusu ipv6 katika Docker
Baadhi ya huduma tunazoingiliana nazo zinapatikana tu kupitia ipv6, kwa hivyo ilitubidi kujua jinsi ya kutengeneza ipv6 kwa vyombo.
Kulingana na hati za ipv6 kwenye wavuti rasmi ya Docker, ipv6 imewezeshwa kwa kuongeza vigezo kwa daemon.json:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}Katika hali hii, mtoa huduma lazima atoe subnet ya ipv6, ambayo utajiandikisha fixed-cidr-v6.
Walakini, tulichagua chaguo jingine - ipv6 NAT, na hii ndio sababu:
- Sasa docker pekee na ipv6.
- Kuwa na anwani inayoweza kubadilishwa duniani kote katika kila kontena inamaanisha kuwa milango yote (hata ambayo haijachapishwa) inaonekana kwa kila mtu isipokuwa uchujaji wa ziada ufanyike.
- wakala wa ardhi ya watumiaji kwa bandari za uchapishaji, .
ipv6 NAT ni , ambayo yenyewe inasimamia sheria katika ip6tables na kuzihariri wakati wa kuongeza chombo kipya.
Ili suluhisho hili lifanye kazi kwa usahihi, ilihitajika kufanya udanganyifu mwingine kadhaa. Hakikisha umeanzisha ip6table_nat kwenye mfumo. Uwepo wa moduli iliyosanikishwa kwenye mfumo hauhakikishi kuwa moduli itapakiwa kwenye kernel wakati wa kuanza. Tulikumbana na hili tulipopokea hitilafu hii wakati wa kuendesha kontena na NAT kwenye mwenyeji mpya:
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?)Shida ilitatuliwa baada ya kuongeza uanzishaji kwa jukumu linalowezekana kwa kutumia moduli ya modprobe na kuipakia kwenye uanzishaji wa OS kwa kutumia 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'Kwa njia, kuna nzuri kwenye kitovu , ambayo inaelezea kwa ufupi na kwa uwazi faida na hasara za njia moja au nyingine ya kuendesha ipv6 kwenye docker.
Lakini turudi kwenye swali letu tulilouliza hapo mwanzo:
Kwa nini kondakta anahitajika, hata kama orchestra yenyewe inaweza kucheza?
Sasa kila mtu anafikiria jinsi ya kucheza katika timu yetu:
- mchakato wa "kumwaga" seva umeundwa,
- maendeleo na upelekaji wa huduma ni umoja.
Swali linalofaa linatokea: jinsi ya kusambaza, kusasisha na kudhibiti huduma zetu katika vyombo vya Docker kwa ufanisi na kiotomatiki iwezekanavyo?
Licha ya ukweli kwamba kila mwanachama wa orchestra anajua sehemu yake, anaweza kuchanganyikiwa na kuachana na wazo la awali. Hapa tunafikia hitimisho kwamba bila conductor orchestra yetu haitafanya mazoezi kwa ufanisi na kucheza kwa ushirikiano. Kondakta anajibika kwa vigezo vyote vya utendaji, kuhakikisha kwamba kila kitu kinaunganishwa na tempo moja na hisia.
Jinsi ya kupata kondakta mzuri na uwekezaji mdogo?
Mada ya orchestration imeendelezwa vizuri kwenye soko. Lakini kwanza, hebu tuzungumze kuhusu zana za msaidizi ambazo zinaweza kusaidia kondakta.
- mfumo ambao hutoa kazi kuu mbili:
- ugunduzi wa huduma,
- uhifadhi wa thamani kuu iliyosambazwa.
Katika orchestra yetu, Consul atawajibika kwa kusajili huduma na kuhifadhi usanidi wao. Kuna chaguzi mbili za usajili:
- Inatumika ni wakati huduma inajiandikisha yenyewe kwa kutumia API ya HTTP;
- Passive - huduma lazima isajiliwe kwa mikono.
Vault ni hazina inayosawazisha na kuunganisha uhifadhi salama na utunzaji wa siri - manenosiri, vyeti.
Hapa kuna faida tutakazopata kwa kutumia zana hii:
- Kituo kimoja cha kuunda na kuhifadhi siri na kudhibiti mzunguko wao wa maisha kwa kutumia API ya HTTP.
- Injini ya Siri za Usafiri - usimbaji fiche na usimbuaji wa data bila kuihifadhi. Uwezo wa kusambaza data kwa njia iliyosimbwa kwa njia fiche kwa njia zisizo salama za mawasiliano.
- Fikia sera ambazo ni rahisi kusanidi.
- Ukaguzi wa upatikanaji wa siri.
- Uwezo wa kuunda CA yako mwenyewe (Mamlaka ya Cheti) ili kudhibiti vyeti vilivyotiwa saini ndani ya miundombinu yako.
Kuzingatia mahitaji yetu yote, chaguzi mbili zilifaa kwa jukumu la kondakta - Kubernetes na Nomad.
Mabernet
Ni nakala ngapi na vitabu tayari vimeandikwa juu yake (hapa , kwa mfano), kuna ripoti ambazo nitaandika kwa ufupi - hii ni mvunaji wa ulimwengu wote ambaye anaweza kufanya karibu kila kitu. Bei ya hii ni kwamba kusanidi na kudumisha kikundi kwenye Kubernetes sio rahisi kila wakati.
kuhamahama
kutoka HashiCorp, kampuni inayojulikana kwa balozi na vault iliyotajwa hapo juu.
Tulipata Nomad kuwa rahisi kabisa kusakinisha na kusanidi kuliko Kubernetes. Faili moja ya binary inafanya kazi katika hali ya seva na mteja. Wakati huo huo, Nomad inashughulikia orodha nzima ya majukumu ambayo tunataka isuluhishe: usimamizi wa nguzo, kipanga ratiba cha haraka, usaidizi wa vituo vingi. Pia, tunapotumia balozi na vault, tunapata muunganisho mkali zaidi wa kupanga huduma zetu.
Nini kinaendelea kwa sasa:
- tayari seva kwa ajili ya kupelekwa kwa Balozi,
- usanidi wa nguzo za kuhamahama utaingizwa kwa Balozi, kwa msaada ambao nomad inapaswa kutumwa moja kwa moja,
- Sambamba, tutaweka vault ili kuhifadhi siri.
Swali kwa watazamaji: inafaa kuajiri kondakta kwa kazi kama hizo au orchestra inafanya vizuri bila yeye? Tuambie kwenye maoni maoni yako kuhusu hili.
Jiandikishe kwa blogu yetu na uendelee kuwasiliana - hivi karibuni tutakuambia kilichotokea mwishoni na ikiwa tulisanidi kikundi cha wahamaji jinsi tulivyotaka.
Njoo kwa starehe zetu , ambapo unaweza kuomba ushauri kila wakati, kusaidia wenzako na gumzo tu kuhusu utafiti wa tija na zaidi.
Chanzo: mapenzi.com
