Қариб ҳар як барномаи муваффақи тиҷорат дер ё зуд ба марҳилае ворид мешавад, ки миқёси уфуқӣ талаб карда мешавад. Дар бисёр ҳолатҳо, шумо метавонед танҳо як мисоли навро оғоз кунед ва миёнаи сарбориро кам кунед. Аммо ҳолатҳои камтар ночиз низ ҳастанд, ки мо бояд боварӣ ҳосил кунем, ки гиреҳҳои гуногун дар бораи якдигар медонанд ва сарбории корро бодиққат тақсим мекунанд.
Он кадар хушбахтона баромад эрланг, ки мо онро барои синтаксиси гуворо ва табъи атрофи он интихоб кардем, дараҷаи аввал дорад.
Паём байни равандҳо дар гиреҳҳои гуногун, инчунин байни пайвандҳо ва мониторҳо шаффоф аст [...]
Дар амал, ҳама чиз каме мураккабтар аст. Тақсим карда шудааст эрланг вақте таҳия шудааст, ки "контейнер" як қуттии оҳании калон барои интиқолро дошт ва "докер" танҳо як синоними марди соҳилӣ буд. ДАР IP4 суроғаҳои бекорхобида зиёд буданд, танаффусҳои шабака одатан дар натиҷаи хоидани каламушҳо тавассути кабел ба амал меоянд ва вақти миёнаи кори системаи истеҳсолӣ дар даҳсолаҳо чен карда мешуд.
Ҳоло ҳамаи мо ба таври бениҳоят худкифо ҳастем, бастабандӣ ва тақсимшуда кор мекунем эрланг дар муҳите, ки суроғаҳои IP динамикӣ аз рӯи принсипи тасодуфии бузург дода мешаванд ва гиреҳҳо метавонанд бо хоҳиши пошнаи чапи нақшакаш пайдо шаванд ва нопадид шаванд. Барои роҳ надодан ба тӯдаҳои рамзи дегхона дар ҳар як лоиҳаи тақсимшуда эрланг, ба мукобили мухити душманона ёрй расондан лозим аст.
эрод гирифтан: Ман медонам, ки вуҷуд дорад libcluster
талаботи
Он чизе ки ба ман шахсан лозим буд, китобхонае буд, ки идоракунии кластерро ба ӯҳда мегирад ва дорои хосиятҳои зерин буд:
- кори шаффоф бо ҳам рӯйхати сахт-рамзи гиреҳҳо ва кашфи динамикӣ тавассути хидматҳо эрланг;
- занги пурраи функсионалӣ барои ҳар як тағирёбии топология (гиреҳ дар он ҷо, гиреҳ дар ин ҷо, ноустувории шабака, тақсимот);
- интерфейси шаффоф барои оғози кластер бо номҳои дароз ва кӯтоҳ, мисли бо
:nonode@nohost
; - Дастгирии Docker аз қуттӣ бидуни навиштани рамзи инфрасохтор.
Охирин маънои онро дорад, ки пас аз он ки ман барномаро дар маҳаллӣ санҷидам :nonode@nohost
, ё дар муҳити сунъӣ тақсим бо истифода аз test_cluster_task
docker-compose up --scale my_app=3
ва бубинед, ки чӣ тавр он се мисолро дар docker бидуни тағир додани код иҷро мекунад. Ман инчунин мехоҳам барномаҳои вобаста ба монанди mnesia
- вақте ки топология тағир меёбад, паси парда онҳо кластерро бе ягон зарбаи иловагӣ аз барнома дубора барқарор мекунанд.
Клоун Китобхонае набуд, ки аз дастгирии кластер то қаҳва омода карда метавонад. Ин як тири нуқра нест, ки ҳадафи он фаро гирифтани ҳама ҳолатҳои имконпазир ё ҳалли пурраи академикӣ ба он маъност, ки назариячиён аз CS ба ин истилоҳ гузоред. Ин китобхона барои иҷрои як ҳадафи хеле равшан тарҳрезӣ шудааст, аммо кори на он қадар калонро ба таври комил иҷро мекунад. Ин ҳадаф таъмини шаффофияти комил байни муҳити рушди маҳаллӣ ва муҳити паҳншудаи чандирии пур аз контейнерҳои душманона хоҳад буд.
Равиши интихобшуда
Клоун пешбинӣ шудааст, ки ҳамчун барнома иҷро карда шавад, гарчанде ки корбарони пешрафта метавонанд бо насб ва нигоҳдории кластер ба таври дастӣ тавассути иҷро кардани мустақим кор кунанд Cloister.Manager
дар дарахти супервайзери барномаи мақсаднок.
Вақте ки ҳамчун барнома иҷро мешавад, китобхона ба он такя мекунад config
, ки аз он арзишҳои асосии зеринро мехонад:
config :cloister,
otp_app: :my_app,
sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
consensus: 3, # number of nodes to consider
# the cluster is up
listener: MyApp.Listener # listener to be called when
# the ring has changed
Параметрҳои дар боло зикршуда маънои зеринро доранд: Клоун барои барномаи OTP истифода мешавад :my_app
, истифода мебарад кашфи хидмати erlang барои пайваст кардани гиреҳҳо, ҳадди аққал се ва MyApp.Listener
модул (амалкунанда @behaviour Cloister.Listener
Бо ин конфигуратсия, барнома Клоун мешавад MyApp.Listener.on_state_change/2
%Cloister.Monitor{status: :up}
, ки маънои: "Салом, кластер ҷамъ карда шуд."
Дар аксари ҳолатҳо, насб consensus: 3
оптималӣ аст, зеро ҳатто агар мо интизор шавем, ки гиреҳҳои бештар пайваст шаванд, занги бозпас мегузарад status: :rehashing
→ status: :up
дар ҳама гиреҳи нав иловашуда ё хориҷшуда.
Ҳангоми оғоз дар реҷаи рушд, шумо танҳо бояд танзим кунед consensus: 1
и Клоун Вақте ки ӯ мебинад, хушбахтона интизории васлшавии кластерро мегузаронад :nonode@nohost
ё :node@host
ё :[email protected]
- вобаста ба он ки гиреҳ чӣ гуна танзим шудааст (:none | :shortnames | :longnames
).
Идоракунии барномаҳои тақсимшуда
Барномаҳои тақсимшуда, ки дар холӣ нестанд, одатан вобастагии тақсимшударо дар бар мегиранд, масалан mnesia
. Барои мо осон аст, ки танзими дубораи онҳоро аз ҳамон занги бозпас иҷро кунем on_state_change/2
. Дар ин ҷо, масалан, тавсифи муфассали чӣ гуна аз нав танзим кардан аст mnesia
дар парвоз
Бартарии асосии истифода Клоун он аст, ки он тамоми амалиёти заруриро барои барқарор кардани кластер пас аз тағир додани топология иҷро мекунад зери капот. Барнома танҳо дар муҳити тақсимшудаи аллакай омодашуда кор мекунад ва ҳамаи гиреҳҳо пайваст аст, новобаста аз он ки мо суроғаҳои IP ва аз ин рӯ номҳои гиреҳро пешакӣ медонем ё онҳо динамикӣ таъин/тағйир дода шудаанд. Ин комилан танзимоти конфигуратсияи махсуси докерро талаб намекунад ва аз нуқтаи назари таҳиягари барнома, байни кор кардан дар муҳити тақсимшуда ё кор кардан дар муҳити маҳаллӣ фарқият вуҷуд надорад. :nonode@nohost
. Шумо метавонед дар ин бора бештар хонед
Гарчанде ки коркарди мураккаби тағироти топология тавассути татбиқи фармоишӣ имконпазир аст MyApp.Listener
, метавонад ҳамеша ҳолатҳои канорӣ вуҷуд дошта бошад, ки дар он маҳдудиятҳои китобхона ва ғаразҳои конфигуратсия сангҳои асосии татбиқ мебошанд. Ин хуб аст, танҳо дар боло libcluster
, ки ҳадафи умумӣ аст, ё ҳатто кластери сатҳи пастро худатон идора кунед. Ҳадафи ин китобхонаи кодҳо фаро гирифтани ҳар як сенарияи имконпазир нест, балки истифодаи сенарияи маъмултарин бидуни дарди нолозим ва нусхабардорӣ-часбондан аст.
Эзоҳ: Дар ин лаҳза дар нусхаи аслӣ ибораи “Кластерсозии хушбахтӣ!” мавҷуд буд ва Яндекс, ки ман бо он тарҷума мекунам (ман худам аз луғатҳо гузаштан лозим нест) ба ман варианти “Кластеркунии хушбахтона!” -ро пешниҳод кард. Тасаввур кардани тарҷумаи беҳтар, бахусус бо назардошти вазъи кунунии геополитикӣ шояд ғайриимкон аст.
Манбаъ: will.com