Kii yoo jẹ aṣiṣe lati sọ pe o dara julọ ninu awọn ọkunrin
ri ayo nipasẹ ijiya.
Ludwig van Beethoven

Mo jẹ Sergey, Mo ṣiṣẹ ni Yandex.Money ni ẹgbẹ iwadii iṣẹ. Mo fẹ sọ fun ọ ni ibẹrẹ itan naa nipa ọna wa si lilo orchestration - bawo ni a ṣe yan awọn ohun elo ati ohun ti a ṣe sinu akọọlẹ. Gbogbo awọn iṣẹlẹ lati inu nkan naa waye ni akoko gidi, nitorinaa iwọ, awọn olufẹ olufẹ, n tẹle idagbasoke ti ipo ti o fẹrẹ gbe.
Kini idi ti a nilo oludari kan ninu ẹgbẹ wa?
Ta ni oludari? Lati fr. diriger - lati ṣakoso, taara, asiwaju - ni agbaye ti orin - eyi jẹ eniyan ti o jẹ olori ti ẹkọ ati iṣẹ ti orin akojọpọ. Ninu ọran wa, aaye yii wa nipasẹ orchestration ati awọn eto adaṣe.
Ipa wọn ko yatọ si ipa ti oludari ninu orin - wọn nilo lati ṣe iranlọwọ fun ẹgbẹ, itọsọna ati ṣeto ere rẹ.
Gẹgẹbi ofin, ẹgbẹ kan ni eto awọn agbara kan-jẹ ki a pe wọn olupin-lori eyiti wọn ṣe awọn iṣẹ akanṣe wọn.
Ọna lati gba ati ṣiṣiṣẹ awọn olupin wọnyi yatọ. Awọn apẹẹrẹ diẹ:
- Ẹgbẹ naa ṣe ibeere kan, fun apẹẹrẹ, si ẹgbẹ iṣiṣẹ, lati pese wọn pẹlu awọn orisun pẹlu awọn paramita kan.
- Ẹgbẹ iṣiṣẹ pese wọn pẹlu iwọn ti a beere - awọsanma tabi irin igboro - ati ṣe adehun lati ṣetọju wọn ni ipo to dara ni ibamu si SLA. Eto naa tun ṣe nipasẹ ẹgbẹ iṣẹ.
- Ẹgbẹ naa gba awọsanma nikan tabi awọn orisun irin igboro lati ẹgbẹ iṣẹ, ati tunto lori tirẹ.
- Ẹgbẹ funrararẹ “ra” awọn orisun ati ṣetọju / ṣeto wọn ni ominira patapata.
Ẹgbẹ wa nlo awọn olupin ti o nilo lati ṣe atilẹyin - imudojuiwọn OS, fifi sori ẹrọ awọn idii tuntun, ati bẹbẹ lọ.
Fun ara wa, a ti pin wọn si awọn oriṣi akọkọ meji:
- ẹgbẹ tanki,
- ẹgbẹ iṣẹ.
Ẹgbẹ ojò ni awọn ogun pẹlu Yandex.Tank.
Ẹgbẹ iṣẹ naa pẹlu ohun gbogbo ti o ni ibatan si itọju - iwọnyi jẹ awọn iṣẹ lọpọlọpọ lati pese atilẹyin fun ọmọ itusilẹ, ṣe agbekalẹ awọn ijabọ adaṣe, ati bẹbẹ lọ.
Ni akoko kan, gbogbo eyi di airọrun lati ṣakoso pẹlu ọwọ, ati pe a ronu nipa adaṣe gbogbo ilana, bẹrẹ lati awọn olupin “ikojọpọ” ati ipari pẹlu idagbasoke, itusilẹ ati ifilọlẹ iṣẹ inu wa.
Kí nìdí tí a fi nílò olùdarí, kódà bí ẹgbẹ́ akọrin fúnra rẹ̀ bá lè ṣeré?
Lati bẹrẹ pẹlu, a ni oye Ansible o bẹrẹ si “tú” awọn olupin irin ti a ko ni lati ni igbẹkẹle diẹ si awọn alabojuto eto - gbogbo eniyan ni o bori nibi, a ni awọn ọgbọn tuntun ati yọkuro awọn oludari diẹ ninu iṣẹ ti wọn nigbagbogbo ni to laisi wa. . A tiraka lati ni idagbasoke kọja pataki wa ati adase ẹgbẹ bi o ti ṣee ṣe.
Ninu ile-iṣẹ naa, iṣẹ pẹlu Ansible ti ni tunto ati ilana fun igba pipẹ, nitorinaa a ni irọrun ṣafikun ojutu wa sinu ilana yii.
Lọwọlọwọ, adagun-odo agbalejo ni awọn ipa ti o ṣeeṣe mẹta:
- ipa akọkọ fi OS sori ẹrọ,
- keji nṣiṣẹ awọn eto ipilẹ fun agbalejo, aṣẹ LDAP, fun apẹẹrẹ,
- ati ẹkẹta nfi Yandex.Tank ati awọn igbẹkẹle ti o jọmọ sinu apoti docker kan.
Jẹ ki a lọ siwaju si awọn iṣẹ ti a lo laarin ẹgbẹ.
Fun awọn iṣẹ-ṣiṣe wa, a lo Kotlin ati Python ni dọgbadọgba, ati Golang diẹ sii. Lati isokan idagbasoke ati imuṣiṣẹ ti awọn iṣẹ wa, a pinnu lati ṣajọ wọn ni awọn apoti Docker. Eyi fun ọ ni ominira lati yan ede siseto ati ni akoko kanna ṣe ilana ọna kika ifijiṣẹ aṣọ fun ohun elo rẹ.
Akọsilẹ kekere kan nipa ipv6 ni Docker
Diẹ ninu awọn iṣẹ ti a nlo pẹlu wa nipasẹ ipv6 nikan, nitorinaa a ni lati ṣawari bi a ṣe le ṣe ipv6 fun awọn apoti.
Gẹgẹbi iwe ipv6 lori oju opo wẹẹbu Docker osise, ipv6 ti ṣiṣẹ nipasẹ fifi awọn paramita kun si daemon.json:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}
Ni ọran yii, olupese gbọdọ fun subnet ipv6 kan, eyiti iwọ yoo forukọsilẹ ninu fixed-cidr-v6.
Sibẹsibẹ, a yan aṣayan miiran - ipv6 NAT, ati pe idi niyi:
- Bayi docker nikan pẹlu ipv6.
- Nini adirẹsi ipa ọna agbaye ni apoti kọọkan tumọ si pe gbogbo awọn ebute oko oju omi (paapaa awọn ti a ko tẹjade) ti han si gbogbo eniyan ayafi ti ṣisẹ afikun ba ṣe.
- aṣoju ilẹ olumulo fun awọn ibudo titẹjade, .
IPv6 NAT jẹ , eyi ti ara rẹ ṣakoso awọn ofin ni ip6tables ati satunkọ wọn nigbati o ba nfi eiyan titun kun.
Ni ibere fun ojutu yii lati ṣiṣẹ ni deede, o jẹ dandan lati ṣe nọmba awọn ifọwọyi miiran. Rii daju lati ṣe ipilẹṣẹ ip6table_nat lori eto naa. Iwaju module ti a fi sori ẹrọ lori eto ko ṣe iṣeduro pe module naa yoo gbe sinu ekuro ni ibẹrẹ. A ṣe alabapade eyi nigba ti a gba aṣiṣe yii nigbati o nṣiṣẹ apoti kan pẹlu NAT lori agbalejo tuntun kan:
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?)
A yanju iṣoro naa lẹhin fifi ipilẹṣẹ kun si ipa Ansible nipa lilo module modprobe ati ikojọpọ ni ibẹrẹ OS nipa lilo 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'
Nipa ona, nibẹ ni kan ti o dara lori ibudo , eyi ti o ṣoki ati kedere ṣe apejuwe awọn anfani ati awọn aila-nfani ti ọkan tabi ọna miiran fun ṣiṣe ipv6 ni docker.
Ṣugbọn jẹ ki a pada si ibeere wa ti a beere ni ibẹrẹ:
Kí nìdí tí a fi nílò olùdarí, kódà bí ẹgbẹ́ akọrin fúnra rẹ̀ bá lè ṣeré?
Bayi gbogbo eniyan ro bi o ṣe le ṣere ninu ẹgbẹ wa:
- ilana ti awọn olupin “fifun” ti ṣẹda,
- idagbasoke ati imuṣiṣẹ ti awọn iṣẹ ti wa ni isokan.
Ibeere ti o ni oye waye: bawo ni a ṣe le ran, ṣe imudojuiwọn, ati ṣakoso awọn iṣẹ wa ni awọn apoti Docker daradara ati ni adaṣe bi o ti ṣee ṣe?
Bíótilẹ o daju wipe kọọkan egbe onilu mọ apakan rẹ, o le gba idamu ati ki o yapa lati atilẹba ero. Nibi a wa si ipari pe laisi oludari ẹgbẹ orin wa kii yoo ṣe adaṣe ni imunadoko ati ṣere ni iṣọkan. Oludari jẹ iduro fun gbogbo awọn aye ti iṣẹ naa, ni idaniloju pe ohun gbogbo wa ni iṣọkan nipasẹ akoko kan ati iṣesi.
Bii o ṣe le gba oludari ti o dara pẹlu idoko-owo kekere?
Koko-ọrọ ti orchestration jẹ idagbasoke daradara ni ọja naa. Ṣugbọn akọkọ, jẹ ki a sọrọ nipa awọn irinṣẹ iranlọwọ ti o le ṣe iranlọwọ fun oludari.
- eto ti o pese awọn iṣẹ akọkọ meji:
- wiwa iṣẹ,
- ibi ipamọ iye-bọtini pinpin.
Ninu ẹgbẹ orin wa, Consul yoo jẹ iduro fun iforukọsilẹ awọn iṣẹ ati titoju awọn atunto wọn. Awọn aṣayan iforukọsilẹ meji wa:
- Nṣiṣẹ ni nigbati iṣẹ ba forukọsilẹ funrararẹ nipa lilo HTTP API;
- Palolo - iṣẹ naa gbọdọ forukọsilẹ pẹlu ọwọ.
Vault jẹ ibi ipamọ ti o ṣe iwọn ati ṣe iṣọkan ibi ipamọ to ni aabo ati mimu awọn aṣiri - awọn ọrọ igbaniwọle, awọn iwe-ẹri.
Eyi ni awọn anfani ti a yoo gba nipa lilo ọpa yii:
- Ile-iṣẹ ẹyọkan fun ṣiṣẹda ati titoju awọn aṣiri ati iṣakoso ọna igbesi aye wọn nipa lilo HTTP API.
- Ẹrọ Aṣiri irekọja - fifi ẹnọ kọ nkan ati decryption ti data laisi fifipamọ rẹ. Agbara lati atagba data ni fọọmu ti paroko lori awọn ikanni ibaraẹnisọrọ ti ko ni aabo.
- Wọle si awọn eto imulo ti o rọrun lati tunto.
- Ayẹwo ti wiwọle si asiri.
- Agbara lati ṣẹda CA tirẹ (Alaṣẹ Iwe-ẹri) lati ṣakoso awọn iwe-ẹri ti o fowo si laarin awọn amayederun rẹ.
Ṣiyesi gbogbo awọn ibeere wa, awọn aṣayan meji dara fun ipa ti oludari - Kubernetes ati Nomad.
Kubernetes
Awọn nkan ati awọn iwe melo ni a ti kọ tẹlẹ nipa rẹ (nibi , fun apẹẹrẹ), awọn ijabọ wa ti Emi yoo kọ ni ṣoki - eyi jẹ ikore gbogbo agbaye ti o le ṣe ohun gbogbo. Iye owo fun eyi ni pe iṣeto ati mimu iṣupọ kan lori Kubernetes kii ṣe rọrun nigbagbogbo.
Nomad
lati HashiCorp, ile-iṣẹ ti a mọ fun consul ati ifinkan ti a mẹnuba loke.
A rii pe Nomad rọrun pupọ lati fi sori ẹrọ ati tunto ju Kubernetes lọ. Faili alakomeji kan ṣiṣẹ ni olupin mejeeji ati ipo alabara. Ni akoko kanna, Nomad bo gbogbo atokọ awọn iṣẹ ṣiṣe ti a fẹ ki o yanju: iṣakoso iṣupọ, oluṣeto iyara, atilẹyin multidatacenter. Ni afikun, nigba lilo consul ati ifinkan, a gba isọpọ ti o pọ si fun ṣiṣe awọn iṣẹ wa.
Kini o nlọ lọwọ lọwọlọwọ:
- awọn olupin ti a pese silẹ fun imuṣiṣẹ Consul,
- iṣeto iṣupọ nomad yoo wọ inu Consul, pẹlu iranlọwọ eyiti o yẹ ki o gbe nomad lọ laifọwọyi,
- Ni afiwe, a yoo fi sori ẹrọ ifinkan lati tọju awọn aṣiri.
Ibeere fun awọn olugbo: Ṣe o tọ si igbanisise oludari fun iru awọn iṣẹ-ṣiṣe tabi ṣe ẹgbẹ-orin n ṣe daradara laisi rẹ? Sọ fun wa ninu awọn asọye kini o ro nipa eyi.
Alabapin si bulọọgi wa ki o duro ni ifọwọkan - laipẹ a yoo sọ fun ọ ohun ti o ṣẹlẹ ni ipari ati boya a tunto iṣupọ nomad ni ọna ti a fẹ.
Wa si igbadun wa , Nibi ti o ti le beere nigbagbogbo fun imọran, ran awọn ẹlẹgbẹ ati ki o kan iwiregbe nipa ise sise iwadi ati siwaju sii.
orisun: www.habr.com
