Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Tha sinn air bruidhinn mu thràth Cartridge Tarantool, a leigeas leat tagraidhean sgaoilte a leasachadh agus am pacadh. Chan eil air fhàgail ach ionnsachadh mar a chleachdas tu na tagraidhean sin agus an riaghladh. Na gabh dragh, tha sinn uile air a chòmhdach! Chuir sinn ri chèile na cleachdaidhean as fheàrr airson a bhith ag obair le Tarantool Cartridge agus sgrìobh sinn dreuchd a ghabhas, a bhios a’ sgaoileadh a’ phacaid gu frithealaichean, a’ cur air bhog shuidheachaidhean, gan aonachadh ann am brabhsair, a’ rèiteachadh ùghdarrachadh, bootstrap vshard, a’ comasachadh fàilligeadh fèin-ghluasadach agus a’ gleusadh an config brabhsair.

Inntinneach? An uairsin feuch, fon ghearradh, innsidh sinn dhut agus seallaidh sinn dhut a h-uile dad.

Feuch an tòisich sinn le eisimpleir

Cha toir sinn sùil ach air pàirt de ghnìomhachd ar dleastanas. Gheibh thu an-còmhnaidh tuairisgeul iomlan de na comasan agus na paramadairean cuir a-steach aige ann an sgrìobhainnean. Ach tha e nas fheàrr feuchainn aon uair na bhith ga fhaicinn ceud uair, mar sin feuch an cleachd sinn tagradh beag.

Tha aig Tarantool Cartridge teagaisg gus tagradh beag Cartridge a chruthachadh a bhios a’ stòradh fiosrachadh mu luchd-dèiligidh banca agus na cunntasan aca, agus cuideachd a’ toirt seachad API airson riaghladh dàta tro HTTP. Gus seo a choileanadh, tha an eàrr-ràdh a’ toirt cunntas air dà dhreuchd a dh’ fhaodadh a bhith ann: api и storage, a dh’ fhaodar a shònrachadh do shuidheachaidhean.

Chan eil Cartridge fhèin ag ràdh dad mu mar a thèid pròiseasan a chuir air bhog, chan eil e a’ toirt seachad ach comas suidheachaidhean a tha a ’ruith mu thràth a rèiteachadh. Feumaidh an neach-cleachdaidh an còrr a dhèanamh e fhèin: cuir air dòigh faidhlichean rèiteachaidh, tòisich seirbheisean agus rèitich an topology. Ach cha dean sinn so uile ; ni Ansible e air ar son.

Bho bhriathran gu gnìomharan

Mar sin, leig leinn an tagradh againn a chuir gu dà inneal brìgheil agus stèidhich sinn topology sìmplidh:

  • Mac-samhail app-1 cuiridh e an dreuchd an gnìomh api, anns a bheil an dreuchd vshard-router. Cha bhi ach aon eisimpleir an seo.
  • Mac-samhail storage-1 a’ cur an gnìomh an dreuchd storage (agus aig an aon àm vshard-storage), an seo cuiridh sinn dà eisimpleir bho dhiofar innealan.

Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Gus an eisimpleir a tha a dhìth oirnn a ruith luaineach и Freagair (dreach 2.8 no nas sine).

Tha an dreuchd fhèin ann Galaxy freagarrach. Is e stòr a tha seo a leigeas leat an obair agad a cho-roinn agus dreuchdan deiseil a chleachdadh.

Dèanamaid clonadh air an stòr le eisimpleir:

$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0

Bidh sinn a’ togail innealan brìgheil:

$ vagrant up

Stàlaich an dreuchd iomchaidh Cartridge Tarantool:

$ ansible-galaxy install tarantool.cartridge,1.0.1

Cuir air bhog an dreuchd stàlaichte:

$ ansible-playbook -i hosts.yml playbook.yml

Tha sinn a 'feitheamh ris an leabhar-cluiche gus crìoch a chur air a chur gu bàs, rachaibh gu http://localhost:8181/admin/cluster/dashboard agus faigh tlachd às an toradh:

Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Faodaidh tu dàta a luchdachadh suas. Cool, ceart?

A-nis leigidh sinn a-mach mar a dh'obraicheas tu le seo, agus aig an aon àm cuir mac-samhail eile ris an topology.

Feuch an tòisich sinn ga thuigsinn

Mar sin dè thachair?

Stèidhich sinn dà inneal brìgheil agus chuir sinn air bhog leabhar-cluiche iomchaidh a chuir air dòigh ar cruinneachadh. Bheir sinn sùil air susbaint an fhaidhle playbook.yml:

---
- name: Deploy my Tarantool Cartridge app
  hosts: all
  become: true
  become_user: root
  tasks:
  - name: Import Tarantool Cartridge role
    import_role:
      name: tarantool.cartridge

Chan eil dad inntinneach a’ tachairt an seo, leig dhuinn dreuchd iomchaidh a chuir air bhog ris an canar tarantool.cartridge.

Tha a h-uile rud as cudromaiche (is e sin, an rèiteachadh brabhsair) suidhichte ann Clàr-seilbhe-faidhle hosts.yml:

---
all:
  vars:
    # common cluster variables
    cartridge_app_name: getting-started-app
    cartridge_package_path: ./getting-started-app-1.0.0-0.rpm  # path to package

    cartridge_cluster_cookie: app-default-cookie  # cluster cookie

    # common ssh options
    ansible_ssh_private_key_file: ~/.vagrant.d/insecure_private_key
    ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

  # INSTANCES
  hosts:
    storage-1:
      config:
        advertise_uri: '172.19.0.2:3301'
        http_port: 8181

    app-1:
      config:
        advertise_uri: '172.19.0.3:3301'
        http_port: 8182

    storage-1-replica:
      config:
        advertise_uri: '172.19.0.3:3302'
        http_port: 8183

  children:
    # GROUP INSTANCES BY MACHINES
    host1:
      vars:
        # first machine connection options
        ansible_host: 172.19.0.2
        ansible_user: vagrant

      hosts:  # instances to be started on the first machine
        storage-1:

    host2:
      vars:
        # second machine connection options
        ansible_host: 172.19.0.3
        ansible_user: vagrant

      hosts:  # instances to be started on the second machine
        app-1:
        storage-1-replica:

    # GROUP INSTANCES BY REPLICA SETS
    replicaset_app_1:
      vars:  # replica set configuration
        replicaset_alias: app-1
        failover_priority:
          - app-1  # leader
        roles:
          - 'api'

      hosts:  # replica set instances
        app-1:

    replicaset_storage_1:
      vars:  # replica set configuration
        replicaset_alias: storage-1
        weight: 3
        failover_priority:
          - storage-1  # leader
          - storage-1-replica
        roles:
          - 'storage'

      hosts:   # replica set instances
        storage-1:
        storage-1-replica:

Chan eil a dhìth oirnn ach ionnsachadh mar a stiùireas sinn eisimpleirean agus ath-bhualaidhean le bhith ag atharrachadh susbaint an fhaidhle seo. An uairsin cuiridh sinn earrannan ùra ris. Gus nach bi thu troimh-chèile càite an cuir thu iad, faodaidh tu coimhead air an tionndadh mu dheireadh den fhaidhle seo, hosts.updated.yml, a tha anns an ionad-tasgaidh eisimpleir.

Stiùireadh cùise

Ann an teirmean Ansible, tha gach eisimpleir na aoigh (gun a bhith air a mheasgadh le frithealaiche bathar-cruaidh), i.e. an nód bun-structair a bhios Ansible a’ riaghladh. Airson gach aoigh is urrainn dhuinn crìochan ceangail a shònrachadh (leithid ansible_host и ansible_user), a bharrachd air rèiteachadh an eisimpleir. Tha tuairisgeul air na h-eisimpleirean anns an earrainn hosts.

Bheir sinn sùil air rèiteachadh an t-eisimpleir storage-1:

all:
  vars:
    ...

  # INSTANCES
  hosts:
    storage-1:
      config:
        advertise_uri: '172.19.0.2:3301'
        http_port: 8181

  ...

Ann an caochlaideach config shònraich sinn na paramadairean eisimpleir - advertise URI и HTTP port.
Gu h-ìosal tha na paramadairean eisimpleir app-1 и storage-1-replica.

Feumaidh sinn innse do Ansible na crìochan ceangail airson gach suidheachadh. Tha e coltach gu bheil e loidsigeach eisimpleirean a chuir ann am buidhnean innealan brìgheil. Airson an adhbhair seo, tha eisimpleirean air an cur còmhla ann am buidhnean host1 и host2, agus anns gach buidheann anns an earrainn vars luachan air an comharrachadh ansible_host и ansible_user airson aon inneal mas-fhìor. Agus anns an earrainn hosts - luchd-aoigheachd (aka eisimpleirean) a tha air an gabhail a-steach sa bhuidheann seo:

all:
  vars:
    ...
  hosts:
    ...
  children:
    # GROUP INSTANCES BY MACHINES
    host1:
      vars:
        # first machine connection options
        ansible_host: 172.19.0.2
        ansible_user: vagrant
       hosts:  # instances to be started on the first machine
        storage-1:

     host2:
      vars:
        # second machine connection options
        ansible_host: 172.19.0.3
        ansible_user: vagrant
       hosts:  # instances to be started on the second machine
        app-1:
        storage-1-replica:

Bidh sinn a 'tòiseachadh air atharrachadh hosts.yml. Nach cuir sinn dà eisimpleir eile ris, storage-2-replica air a’ chiad inneal mas-fhìor agus storage-2 Air an dàrna fear:

all:
  vars:
    ...

  # INSTANCES
  hosts:
    ...
    storage-2:  # <==
      config:
        advertise_uri: '172.19.0.3:3303'
        http_port: 8184

    storage-2-replica:  # <==
      config:
        advertise_uri: '172.19.0.2:3302'
        http_port: 8185

  children:
    # GROUP INSTANCES BY MACHINES
    host1:
      vars:
        ...
      hosts:  # instances to be started on the first machine
        storage-1:
        storage-2-replica:  # <==

    host2:
      vars:
        ...
      hosts:  # instances to be started on the second machine
        app-1:
        storage-1-replica:
        storage-2:  # <==
  ...

Cuir air bhog an leabhar-cluiche iomchaidh:

$ ansible-playbook -i hosts.yml 
                   --limit storage-2,storage-2-replica 
                   playbook.yml

Thoir an aire don roghainn --limit. Leis gu bheil a h-uile cùis brabhsair na aoigh ann an teirmean Ansible, is urrainn dhuinn sònrachadh gu soilleir dè na suidheachaidhean a bu chòir a bhith air an rèiteachadh nuair a bhios sinn a’ cur an gnìomh an leabhar-cluiche.

A 'dol air ais gu Web UI http://localhost:8181/admin/cluster/dashboard agus faic na suidheachaidhean ùra againn:

Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Nach stad sinn an sin agus maighstireachd a dhèanamh air riaghladh topology.

Stiùireadh topology

Nach cuir sinn na suidheachaidhean ùra againn còmhla ann an seata mac-samhail storage-2. Nach cuir sinn buidheann ùr ris replicaset_storage_2 agus thoir cunntas air na paramadairean mac-samhail anns na caochladairean aige a rèir coslas replicaset_storage_1. Ann an earrann hosts Innsidh sinn dè na suidheachaidhean a bhios air an gabhail a-steach sa bhuidheann seo (is e sin, an seata mac-samhail againn):

---
all:
  vars:
    ...
  hosts:
    ...
  children:
    ...
    # GROUP INSTANCES BY REPLICA SETS
    ...
    replicaset_storage_2:  # <==
      vars:  # replicaset configuration
        replicaset_alias: storage-2
        weight: 2
        failover_priority:
          - storage-2
          - storage-2-replica
        roles:
          - 'storage'

      hosts:   # replicaset instances
        storage-2:
        storage-2-replica:

Nach tòisich sinn air an leabhar-cluiche a-rithist:

$ ansible-playbook -i hosts.yml 
                   --limit replicaset_storage_2 
                   --tags cartridge-replicasets 
                   playbook.yml

Ann am paramadair --limit An turas seo chaidh sinn seachad air ainm na buidhne a tha a rèir ar mac-samhail.

Beachdaichidh sinn air an roghainn tags.

Bidh ar dleastanas ann an sreath a’ coileanadh diofar ghnìomhan, a tha air an comharrachadh leis na tagaichean a leanas:

  • cartridge-instances: eisimpleir stiùireadh (rèiteachadh, ceangal ri ballrachd);
  • cartridge-replicasets: riaghladh topology (riaghladh mac-samhail agus toirt air falbh gu maireannach (cuir às) shuidheachaidhean bhon bhuidheann);
  • cartridge-config: riaghladh paramadairean brabhsair eile (vshard bootstrapping, modh fàiligeadh fèin-ghluasadach, paramadairean ceadachaidh agus rèiteachadh tagraidh).

Faodaidh sinn sònrachadh gu soilleir dè am pàirt den obair a tha sinn airson a dhèanamh, agus an uairsin leumaidh an dreuchd an còrr de na gnìomhan. Anns a 'chùis againn, tha sinn airson a bhith ag obair a-mhàin leis an topology, agus mar sin shònraich sinn cartridge-replicasets.

Nach dèan sinn measadh air toradh ar n-oidhirpean. Lorgaidh sinn mac-samhail ùr air http://localhost:8181/admin/cluster/dashboard.

Cleachd tagraidhean gu Tarantool Cartridge gu furasta agus gu nàdarra (pàirt 1)

Hooray!

Dèan deuchainn le bhith ag atharrachadh rèiteachadh shuidheachaidhean agus seataichean mac-samhail agus faic mar a bhios topology a’ chnuasachd ag atharrachadh. Faodaidh tu diofar shuidheachaidhean obrachaidh fheuchainn, m.e. ùrachadh leantainneach no àrdachadh memtx_memory. Feuchaidh an dreuchd ri seo a dhèanamh gun a bhith ag ath-thòiseachadh an eisimpleir gus an ùine downt a dh’ fhaodadh a bhith aig an tagradh agad a lughdachadh.

Na dì-chuimhnich ruith vagrant haltgus stad a chuir air na h-innealan brìgheil nuair a bhios tu deiseil ag obair còmhla riutha.

Dè a tha fon chochall?

An seo innsidh mi barrachd dhut mu na bha a’ tachairt fo chochall na dreuchd iomchaidh rè ar deuchainnean.

Bheir sinn sùil air a bhith a’ cleachdadh an tagradh Cartridge ceum air cheum.

A 'stàladh a' phacaid agus suidheachaidhean tòiseachaidh

An toiseach feumaidh tu am pasgan a lìbhrigeadh don t-seirbheisiche agus a stàladh. An-dràsta faodaidh an dreuchd obrachadh le pasganan RPM agus DEB.

An uairsin bidh sinn a 'cur air bhog na h-eisimpleirean. Tha a h-uile dad gu math sìmplidh an seo: tha gach cùis fa leth systemd- seirbheis. Bheir mi eisimpleir dhut:

$ systemctl start myapp@storage-1

Cuiridh an àithne seo air bhog an eisimpleir storage-1 apps myapp. Bidh an eisimpleir a chaidh a chuir air bhog a’ coimhead airson a rèiteachadh в /etc/tarantool/conf.d/. Faodar coimhead air clàran cùise a’ cleachdadh journald.

Faidhle aonad /etc/systemd/system/[email protected] airson seirbheis systemd a lìbhrigeadh còmhla ris a’ phacaid.

Tha modalan stèidhichte aig Ansible airson pacaidean a chuir a-steach agus seirbheisean systemd a riaghladh; chan eil sinn air dad ùr a chruthachadh an seo.

A 'stèidheachadh buidheann topology

Seo far a bheil an spòrs a’ tòiseachadh. Aontaich, bhiodh e neònach dragh a chuir air dreuchd sònraichte Ansible airson pacaidean a chuir a-steach agus a ruith systemd-seirbheisean.

Faodaidh tu am brabhsair a rèiteachadh le làimh:

  • A’ chiad roghainn: fosgail an Web UI agus cliog air na putanan. Tha e gu math freagarrach airson tòiseachadh aon-ùine de ghrunn shuidheachaidhean.
  • An dàrna roghainn: faodaidh tu an API GraphQl a chleachdadh. An seo faodaidh tu rudeigin a dhèanamh fèin-ghluasadach mar-thà, mar eisimpleir, sgrìobh sgriobt ann am Python.
  • An treas roghainn (airson an fheadhainn làidir-willed): rachaibh chun an fhrithealaiche, ceangail ri aon de na suidheachaidhean a 'cleachdadh tarantoolctl connect agus dèan a h-uile làimhseachadh riatanach leis a’ mhodal Lua cartridge.

Is e prìomh obair an innleachd againn seo a dhèanamh dìreach, am pàirt as duilghe den obair dhut.

Leigidh Ansible leat do mhodal fhèin a sgrìobhadh agus a chleachdadh ann an dreuchd. Bidh ar dleastanas a’ cleachdadh mhodalan mar seo gus diofar phàirtean cnuasachaidh a riaghladh.

Ciamar a tha e ag obair? Bidh thu a’ toirt cunntas air staid a’ bhraisle a tha thu ag iarraidh ann an config dearbhach, agus tha an dreuchd a’ toirt a roinn rèiteachaidh do gach modal mar chur-a-steach. Bidh am modal a’ faighinn staid làithreach a’ chnuasaich agus ga choimeas ris na chaidh fhaighinn mar chur-a-steach. An uairsin, thèid còd a chuir air bhog tro socaid aon de na h-eisimpleirean, a bheir a’ bhuidheann chun staid a tha thu ag iarraidh.

Builean

An-diugh dh’ innis agus sheall sinn mar a chleachdas tu an tagradh agad gu Tarantool Cartridge agus stèidhich sinn topology sìmplidh. Gus seo a dhèanamh, chleachd sinn Ansible - inneal cumhachdach a tha furasta a chleachdadh agus a leigeas leat mòran nodan bun-structair a rèiteachadh aig an aon àm (anns a’ chùis againn, suidheachaidhean brabhsair).

Gu h-àrd thug sinn sùil air aon de na diofar dhòighean air cunntas a thoirt air rèiteachadh brabhsair a’ cleachdadh Ansible. Aon uair ‘s gu bheil thu deiseil airson gluasad air adhart, rannsaich cleachdaidhean as fheàrr mu bhith a’ sgrìobhadh leabhraichean-cluiche. Is dòcha gum bi e nas fhasa dhut do topology a riaghladh le bhith a’ cleachdadh group_vars и host_vars.

Gu math luath innsidh sinn dhut mar a sguabas tu às gu buan (cuir a-mach) suidheachaidhean bhon topology, bootstrap vshard, stiùir am modh fàilligidh fèin-ghluasadach, rèiteachadh ùghdarrachadh agus gleusadh an rèiteachadh brabhsair. Anns an eadar-ama, faodaidh tu ionnsachadh leat fhèin sgrìobhainnean agus feuchainn ri paramadairean cnuasachaidh ag atharrachadh.

Mura h-eil rudeigin ag obair, dèan cinnteach Cuir fios thugam dhuinn mun duilgheadas. Cuiridh sinn a h-uile càil air dòigh gu sgiobalta!

Source: www.habr.com

Cuir beachd ann