Cloister → whakahaere huinga OTP ngawari

Tata ki nga tono pakihi angitu katoa ka uru ki tetahi waahanga e hiahiatia ana te whakatauine whakapae. I te nuinga o nga wa, ka taea e koe te timata i tetahi tauira hou me te whakaiti i te toharite kawenga. Engari he iti ano nga keehi iti e tika ana kia mohio nga momo pona tetahi ki tetahi me te tohatoha i nga kawenga mahi.

Cloister → whakahaere huinga OTP ngawari

Ua tupu te reira erlang, i whiriwhiria e matou mo tana wetereo pai me te panui huri noa, he akomanga tuatahi tautoko mo nga punaha tohatoha. I roto i te ariā, he mea iti noa tenei:

Ko nga karere e whakawhiti ana i waenga i nga tukanga i runga i nga waahanga rereke, i waenga i nga hononga me nga kaitirotiro he maamaa [...]

I roto i te mahi, he iti ake te uaua o nga mea. Kua tohaina erlang I whakawhanakehia i te wa e kiia ana ko te "putea" he pouaka rino nui hei kawe, a ko te "docker" he kupu taurite mo te tangata takutai moana. IN IP4 he maha nga wahitau kaore i whakamahia, ko te nuinga o nga wa ka pakaru te whatunga na nga kiore e ngaungau ana i te taura, ka inehia te wa roa o te punaha whakaputa i roto i nga tekau tau.

Inaianei kei te kaha taatau katoa ki a tatou ano, kikii, ka tohatohahia erlang i roto i te taiao ka tukuna nga wahitau IP hihiri i te matapōkeretia, ka puta mai nga pona ka ngaro i runga i te hiahia o te rekereke maui o te kaihōtaka. Ki te karo i te paihere o te waehere boilerplate i ia kaupapa e whakahaere ana i te tohatoha erlangka hiahiatia he awhina ki te whawhai i te taiao kino.

parau: E mohio ana ahau he aha libcluster. He tino rawe ia, neke atu i te kotahi mano nga whetu, e mohiotia ana te kaituhi i roto i te hapori, me era atu mea. Mena ko nga tikanga mo te hanga me te pupuri i te kohinga e tukuna ana e tenei kete ka nui ki a koe, kei te koa ahau mo koe. Kia aroha mai me nui ake ano. Kei te pirangi au ki te whakahaere i nga korero mo te whakatangi kia kaua e tu i te whare tapere o te hanga kapoi.

whakaritenga

Ko te mea i hiahiatia e au ake ko te whare pukapuka hei kawe i te whakahaerenga o te roopu me nga taonga e whai ake nei:

  • mahi marama me te rarangi tohu-maatau o nga pona me nga kitenga hihiri ma nga ratonga erlang;
  • hokinga-katoa i runga i nga huringa topology katoa (node ​​in, node out, network instability, splits);
  • atanga maramara mo te whakarewa i te roopu me nga ingoa roa me nga ingoa poto, pera me :nonode@nohost;
  • tautoko docker i waho o te pouaka, me te kore e hiahia ki te tuhi i te waehere hanganga.

Ko te tikanga o muri i muri i taku whakamatau i te tono i roto i te rohe :nonode@nohost, ranei i roto i te taiao toha awhiowhio whakamahi test_cluster_taskKei te pirangi noa ahau ki te oma docker-compose up --scale my_app=3 ka kite me pehea te whakahaere i nga wa e toru i te docker kaore he huringa waehere. Kei te pirangi ano ahau ki nga tono whakawhirinaki penei mnesia - ka huri te topology, ka hanga ano te tautau i muri i nga tirohanga mo te painga kaore he whana taapiri mai i te tono.

Kiko kare i whakaarohia hei whare pukapuka e taea ai nga mea katoa mai i te tautoko tautau ki te mahi kawhe. Ehara i te matā hiriwa e whai ana ki te kapi i nga keehi katoa ka taea, ka oti ranei i te maatauranga i runga i te tikanga o nga tohunga whakaaro CS haumi i tenei wahanga. Ko te tikanga o tenei whare pukapuka ki te whakatutuki i tetahi kaupapa tino marama, engari ki te mahi tika i ana mahi kaore i te tino nui. Ko tenei whainga kia tino marama i waenga i te taiao whakawhanaketanga a-rohe me tetahi taiao rapa toha ki tonu i nga ipu kino.

Te huarahi whiriwhiri

Kiko e tika ana kia whakahaeretia hei tono, ahakoa ka taea e nga kaiwhakamahi matatau te mahi me te huinga huinga me te tiaki a-ringa ma te whakahaere tika Cloister.Manager i te rakau kaitirotiro o te tono whainga.

Ina rere hei tono, ka whakawhirinaki te whare pukapuka config, ka tangohia e ia nga uara matua e whai ake nei:

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

Ko te tikanga o nga tawhā i runga ake nei he kupu kupu e whai ake nei: Kiko whakamahia mo te tono OTP :my_app, whakamahi kitea ratonga erlang ki te hono i nga pona, e toru i te iti rawa, me MyApp.Listener kōwae (whakatinana @behaviour Cloister.Listener) kua whirihorahia kia whiwhi whakamohiotanga mo nga huringa topology. Ka kitea he whakaahuatanga mo te whirihoranga katoa i roto tuhinga.

Ki tenei whirihoranga, te tono Kiko ka waiho kia whakarewahia i roto i nga waahanga, te whakaroa i te tukanga o te timata i te tono matua kia tae ra ano te whakaaro (ko nga pona e toru kei runga ka hono, penei i te tauira i runga ake nei.) Ka waiho tenei i te tono matua ki te whakaaro ka tiimata ana, kei te waatea te kohinga. I ia wa ka huri te topology (he maha o raatau, na te mea kaore nga pona e tiimata kia rite tonu), ka kiia te kaihautu MyApp.Listener.on_state_change/2. I te nuinga o nga wa, ka mahia e matou he mahi ina whiwhi matou i te karere mana. %Cloister.Monitor{status: :up}, ko te tikanga: "Kia ora, kua huihui te tautau."

I te nuinga o te waa, ko te whakaurunga consensus: 3 he tino pai na te mea ahakoa e tumanako ana tatou kia maha atu nga pona e hono ana, ka hoki te waea status: :rehashingstatus: :up i runga i tetahi pona katahi ano ka taapirihia, ka tangohia ranei.

A, no te rere i roto i te aratau whanaketanga, whakaturia noa consensus: 1 и Kiko ka harikoa koa ki te tatari mo te huihuinga tautau :nonode@nohostranei :node@hostranei :[email protected] - i runga i te ahua o te whirihora o te node (:none | :shortnames | :longnames).

Whakahaere Tono Tohaina

Ko nga tono toha karekau i roto i te korehau ko te nuinga o te waa ka uru ki nga whakawhirinakitanga toha, penei mnesia. He mea ngawari ki a maatau te whakahaere i a raatau whirihora ano mai i te waea whakahoki ano on_state_change/2. Hei tauira, koinei te whakamaarama taipitopito mo te whirihora ano mnesia i runga i te rere ki roto tuhinga Kiko.

Ko te painga nui o te whakamahi Kiko ko te mahi i nga mahi katoa e tika ana hei hanga ano i te tautau i muri i te whakarereketanga o te topology i raro i te arai. Ka rere noa te tono i roto i te taiao kua oti te tohatoha, me nga pona katoa e hono ana, ahakoa e mohio ana tatou ki nga wahitau IP, na reira ko nga ingoa o nga pona i mua atu, kua tohatohahia / whakarereketia ranei. Kaore rawa e hiahiatia he tautuhinga whirihoranga docker motuhake, a, mai i te tirohanga a te kaiwhakawhanake tono, kaore he rereketanga i waenga i te rere i roto i te taiao tohatoha, i te rohe ranei. :nonode@nohost. Ka taea e koe te panui atu mo tenei i roto i tuhinga.

Ahakoa ka taea te whakahaere maatanga o nga huringa topology ma te whakatinanatanga taketake MyApp.Listener, ka noho tonu nga keehi o te taha kei reira enei herenga whare pukapuka me te huarahi whirihoranga whirihora hei kohatu kokonga mo te huarahi whakatinana. He pai, tangohia noa nga korero o runga libcluster, he pai ake te mahi, ka mau ranei koe i te kahui taumata-iti. Ko te whainga o tenei whare pukapuka waehere ehara i te kii i nga ahuatanga katoa ka taea, engari ko te whakamahi i nga ahuatanga tino noa kaore he mamae me nga kape-piri uaua.

Tuhipoka: i roto i tenei wahi i roto i te taketake i reira ko te kīanga "Ka hari clustering!", Na Yandex, i whakamaoritia e ahau (kia kaua e piki ake i nga papakupu), i tukuna mai ki ahau te whiringa "Kia harikoa!". Ko te whakamaoritanga pai ake pea, ina koa i runga i te maaramatanga o nga ahuatanga geopolitical o naianei, kaore e taea te whakaaro.

Source: will.com

Tāpiri i te kōrero