Cloister → mai sauƙin sarrafa gungu na OTP

Kusan duk aikace-aikacen kasuwanci mai nasara ba dade ko ba dade yana shiga wani lokaci inda ake buƙatar sikeli a kwance. A yawancin lokuta, zaku iya fara sabon misali kawai kuma ku rage matsakaicin nauyi. Amma akwai kuma ƙananan ƙananan lokuta inda muke buƙatar tabbatar da cewa nodes daban-daban sun san juna kuma a hankali rarraba nauyin aiki.

Cloister → mai sauƙin sarrafa gungu na OTP

Ya zama mai sa'a kuskure, wanda muka zaba don jin dadi da jin dadi a kusa da shi, yana da matakin farko goyon baya ga tsarin rarrabawa. A ka'idar, wannan yana sauti gaba ɗaya maras muhimmanci:

Saƙon da ke wucewa tsakanin matakai akan nodes daban-daban, haka kuma tsakanin hanyoyin haɗi da masu saka idanu, a bayyane yake […]

A aikace, komai yana da ɗan rikitarwa. An rarraba kuskure an ƙirƙira shi lokacin da "kwantena" na nufin babban akwatin ƙarfe don jigilar kaya, kuma "docker" ya kasance kawai ma'ana ga dogon teku. IN IP4 akwai adiresoshin da ba a cika su da yawa ba, hutun hanyar sadarwa yawanci yakan faru ne ta hanyar berayen da ke taunawa ta hanyar kebul, kuma an auna matsakaicin lokacin tsarin samarwa cikin shekaru da yawa.

Yanzu dukkanmu mun wadatu sosai, an tattara mu, kuma mun rarraba kuskure a cikin yanayin da aka ba da adiresoshin IP masu tsauri akan ka'idar babban bazuwar, kuma nodes na iya bayyana da ɓacewa a cikin son diddigin hagu na mai tsarawa. Don guje wa tarin lambar tukunyar jirgi a cikin kowane aikin da ke gudana da rarrabawa kuskure, don yaƙar yanayi mara kyau, ana buƙatar taimako.

Примечание: Ina sane da cewa akwai libcluster. Yana da kyau gaske, yana da taurari sama da dubu, marubucin ya shahara a cikin al'umma, da dai sauransu. Idan hanyoyin da wannan fakitin ke bayarwa don ƙirƙira da kiyaye tari sun ishe ku, Ina farin ciki a gare ku. Abin takaici, ina buƙatar ƙari mai yawa. Ina so in sarrafa saitin daki-daki kuma kada in zama ɗan kallo na waje a cikin gidan wasan kwaikwayo na sake tsara tari.

bukatun

Abin da ni kaina nake buƙata shi ne ɗakin karatu wanda zai ɗauki nauyin sarrafa tarin kuma yana da kaddarorin masu zuwa:

  • aiki na gaskiya tare da duka jerin ƙididdiga masu ƙarfi na nodes da bincike mai ƙarfi ta hanyar sabis kuskure;
  • cikakken aikin sake dawowa don kowane canjin topology (kumburi a can, kumburi a nan, rashin zaman lafiyar cibiyar sadarwa, rarrabuwa);
  • m dubawa don ƙaddamar da gungu mai tsawo da gajerun sunaye, kamar tare da :nonode@nohost;
  • Docker yana goyan bayan akwatin, ba tare da rubuta lambar kayan aikin ba.

Na karshen yana nufin cewa bayan na gwada aikace-aikacen a cikin gida :nonode@nohost, ko a cikin yanayin da aka rarraba ta wucin gadi ta amfani da shi test_cluster_task, Ina so in gudu docker-compose up --scale my_app=3 kuma duba yadda yake aiwatar da lokuta uku a cikin docker ba tare da canza lambar ba. Ina kuma son aikace-aikace masu dogara kamar mnesia - lokacin da topology ya canza, a bayan al'amuran suna sake gina gungu kai tsaye ba tare da ƙarin bugun daga aikace-aikacen ba.

Cloister ba a nufin ya zama ɗakin karatu wanda zai iya yin komai daga tallafawa tari zuwa yin kofi. Ba harsashi na azurfa ba ne wanda ke da nufin rufe duk wani lamari mai yuwuwa, ko kuma zama cikakkiyar mafita ta ilimi ta ma'anar cewa masu ilimin tauhidi daga CS sanya a cikin wannan lokaci. An ƙera wannan ɗakin karatu don yin aiki bayyanannen maƙasudi, amma yin aikin da bai cika girma sosai ba. Wannan burin zai kasance don samar da cikakkiyar gaskiya tsakanin yanayin ci gaban gida da kuma yanayin da aka rarraba da ke cike da kwantena masu rikici.

Hanyar da aka zaɓa

Cloister ana nufin gudanar da shi azaman aikace-aikace, kodayake masu amfani da ci gaba na iya aiki tare da haɗawa da kiyaye tarin da hannu ta hanyar gudu kai tsaye. Cloister.Manager a cikin bishiyar mai kula da aikace-aikacen manufa.

Lokacin aiki azaman aikace-aikace, ɗakin karatu ya dogara da config, wanda daga ciki yake karanta mahimman dabi'u masu zuwa:

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

Ma'aunin da ke sama yana nufin a zahiri kamar haka: Cloister amfani da aikace-aikacen OTP :my_app, amfani gano sabis erlang don haɗa nodes, aƙalla uku, kuma MyApp.Listener module (aiki @behaviour Cloister.Listener) an saita don karɓar sanarwa game da canje-canjen topology. Ana iya samun cikakken bayanin cikakken tsari a ciki takardun.

Tare da wannan tsari, aikace-aikacen Cloister zai zama kaddamar a matakai, jinkirta aiwatar da fara babban aikace-aikacen har sai an cimma yarjejeniya (ana haɗa nodes guda uku da haɗa su, kamar yadda yake a cikin misalin da ke sama.) Wannan yana ba babban aikace-aikacen damar ɗauka cewa lokacin da ya fara, gungu ya riga ya kasance. A duk lokacin da topology ya canza (za a sami da yawa daga cikinsu, saboda nodes ba su fara gaba ɗaya tare ba), za a kira mai kulawa. MyApp.Listener.on_state_change/2. Yawancin lokaci muna yin wani aiki lokacin da muka sami saƙon matsayi %Cloister.Monitor{status: :up}, wanda ke nufin: “Sannu, gungu ya taru.”

A mafi yawan lokuta, shigarwa consensus: 3 yana da kyau saboda ko da muna tsammanin ƙarin nodes don haɗawa, sake kiran zai shiga status: :rehashingstatus: :up akan kowane sabon ƙara ko cire kumburi.

Lokacin farawa a yanayin ci gaba, kawai kuna buƙatar saita consensus: 1 и Cloister cikin farin ciki zai tsallake jiran taron gungu idan ya gani :nonode@nohost, ko :node@host, ko :[email protected] - ya danganta da yadda aka saita kumburin (:none | :shortnames | :longnames).

Gudanar da Aikace-aikacen Rarraba

Aikace-aikacen da aka rarraba ba a cikin sarari yawanci sun haɗa da abin dogaro da aka rarraba, kamar mnesia. Yana da sauƙi a gare mu mu kula da sake fasalin su daga dawowar kira iri ɗaya on_state_change/2. Anan, alal misali, shine cikakken bayanin yadda ake sake saitawa mnesia kan tashi a ciki takardun Cloister.

Babban amfani da amfani Cloister shine yana aiwatar da duk ayyukan da suka wajaba don sake gina gungu bayan canjin yanayi a karkashin kaho. Aikace-aikacen yana gudana kawai a cikin yanayin da aka riga aka shirya, tare da haɗin duk nodes, ko da mun san adiresoshin IP kuma saboda haka kullin sunayen a gaba, ko an sanya su / canza su da ƙarfi. Wannan yana buƙatar kwata-kwata babu saitunan saitin docker na musamman kuma daga mahangar mai haɓaka aikace-aikacen, babu bambanci tsakanin gudana a cikin muhallin da aka rarraba ko gudana a cikin gida. :nonode@nohost. Kuna iya karanta ƙarin game da wannan a cikin takardun.

Ko da yake hadaddun kulawa na sauye-sauyen yanayi yana yiwuwa ta hanyar aiwatar da al'ada MyApp.Listener, ƙila a koyaushe ana samun ɓangarorin gefen inda waɗannan iyakoki na ɗakin karatu da tsattsauran ra'ayi ke tabbatar da zama ginshiƙan aiwatarwa. Ba laifi, kawai ɗauki abin da ke sama libcluster, wanda ya fi maƙasudin gabaɗaya, ko ma kula da gungu mara nauyi da kanka. Manufar wannan ɗakin karatu na lambar ba shine ya rufe kowane yanayi mai yuwuwa ba, amma don amfani da yanayin da aka fi sani ba tare da jin zafi mara buƙata ba da kwafin-manna mai wahala.

Note: A wannan lokacin a cikin asalin akwai kalmar "Tarin Farin Ciki!", kuma Yandex, wanda na fassara (ba lallai ne in shiga cikin ƙamus da kaina ba), ya ba ni zaɓi "Tari mai farin ciki!" Wataƙila ba zai yiwu a yi tunanin fassara mafi inganci ba, musamman idan aka yi la’akari da yanayin yanayin siyasa na yanzu.

source: www.habr.com

Add a comment