Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Horay ayaanu uga hadalnay Tarantool Cartridge, kaas oo kuu ogolaanaya inaad horumariso codsiyada la qaybiyey oo aad xirto. Waxa hadhay oo dhan waa in la barto sida loo diro codsiyadan oo loo maareeyo. Ha werwerin, dhammaan waannu daboolnay! Waxaan isku diyaarinay dhammaan hababka ugu wanaagsan ee la shaqeynta Tarantool Cartridge oo aan qornay door macquul ah, kaas oo u qaybin doona xidhmada server-yada, bilaabi doona tusaalooyin, ku midayn doona koox, dejin doonta oggolaanshaha, bootstrap vshard, awood u siin doonta fashilka tooska ah oo dhejin doona isku xidhka kooxda.

Xiiso leh? Markaa fadlan, hoos goynta, waanu kuu sheegi doonaa oo ku tusi doonaa wax walba.

Aan ku bilowno tusaale

Waxaan eegi doonaa oo kaliya qayb ka mid ah shaqeynta doorkeena. Waxaad mar walba ka heli kartaa sharraxaad dhammaystiran oo ku saabsan dhammaan awoodaheeda iyo cabbirrada wax-gelinta dukumentiyo. Laakiin way fiicantahay in la isku dayo hal mar halkii aad arki lahayd boqol jeer, markaa aynu geyno codsi yar.

Tarantool Cartridge ayaa leh waxbarashada in la sameeyo codsi yar oo Kartridge ah oo kaydiya macluumaadka macaamiisha bangiga iyo xisaabaadkooda, iyo sidoo kale siiya API-ga maamulka xogta iyada oo loo marayo HTTP. Si taas loo gaaro, lifaaqa ayaa qeexaya laba door oo suurtagal ah: api ΠΈ storage, kuwaas oo lagu meelayn karo tusaale ahaan.

Cartridge lafteedu waxba kama odhanayo sida loo bilaabo hababka, waxay kaliya bixisaa awooda lagu habeeyo tusaalooyinka horeba u socday. Isticmaaluhu waa inuu sameeyaa inta ka hartay laftiisa: habeeyo faylasha qaabeynta, bilaabo adeegyada iyo habeeyo topology-ga. Laakiin ma samayn doono waxaas oo dhan; Awood ayaa noo samayn doonta.

Hadal ilaa ficil

Markaa, aan u dirno codsigeena laba mashiin oo farsamaysan oo aan dejinno topology fudud:

  • Dib u habeyn app-1 fulin doona doorka api, oo ay ku jirto doorka vshard-router. Waxaa jiri doona hal tusaale oo kaliya halkan.
  • Dib u habeyn storage-1 fulinta doorka storage (iyo isla markaa vshard-storage), halkan waxaan ku dari doonaa laba tusaale oo mashiinada kala duwan.

Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Si aan u socodsiino tusaalaha waxaan u baahanahay Vagrant ΠΈ Caqli ahaan (nooca 2.8 ama ka weyn).

Doorka laftiisa ayaa ku jira Galaxy macquul ah. Tani waa meel kayd ah oo kuu ogolaanaysa inaad la wadaagto shaqadaada oo aad isticmaasho doorar diyaarsan.

Aan ku xidhno kaydka tusaale:

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

Waxaan kor u qaadnaa mashiinnada farsamada:

$ vagrant up

Ku rakib Tarantool Cartridge door macquul ah:

$ ansible-galaxy install tarantool.cartridge,1.0.1

Bilaw doorka la rakibay:

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

Waxaan sugeynaa buugga-ciyaaraha si uu u dhammaystiro fulinta, u tag http://localhost:8181/admin/cluster/dashboard oo ku raaxayso natiijada:

Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Waxaad soo gelin kartaa xogta Qabow, sax?

Hadda aynu ogaano sida tan loo shaqeeyo, isla markaana aan ku darno nuqul kale oo ku saabsan topology.

Aan bilowno inaan ogaano

Haddaba maxaa dhacay?

Waxaanu samaynay laba mashiin oo farsamaysan waxaana aanu bilownay buug-ciyaareed macquul ah oo habeeyey kooxdeena. Aynu eegno waxa ku jira faylka 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

Ma jiraan wax xiiso leh oo halkan ka dhacaya, aan bilowno door macquul ah oo la yiraahdo tarantool.cartridge.

Dhammaan waxyaalaha ugu muhiimsan (oo ah, qaabeynta kooxda) waxay ku yaalliin Liiska-faylka 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:

Waxa kaliya ee aan u baahanahay waa inaan barano sida loo maareeyo tusaalooyinka iyo nuqullada annagoo baddala waxa ku jira faylkan. Marka xigta waxaan ku dari doonaa qaybo cusub. Si aanad u wareerin meesha aad ku dari karto, waxaad eegi kartaa nooca ugu dambeeya ee faylkan, hosts.updated.yml, taas oo ku taal kaydka tusaalaha.

Maareynta Tusaale

Erayada macquulka ah, tusaale kastaa waa martigeliyaha (aan lagu khaldin server-ka hardware), i.e. Kaabayaasha dhaqaalaha ee Aansible maamuli doono. Martigeliyaha kasta waxaan u cayimi karnaa xuduudaha isku xirka (sida ansible_host ΠΈ ansible_user), iyo sidoo kale qaabeynta tusaale ahaan. Sharaxaada dhacdooyinka ayaa ku jira qaybta hosts.

Aynu eegno qaabeynta tusaale ahaan storage-1:

all:
  vars:
    ...

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

  ...

Doorsoome config Waxaan qeexnay halbeegyada tusaale ahaan - advertise URI ΠΈ HTTP port.
Hoos waxaa ku yaal cabbirada tusaale ahaan app-1 ΠΈ storage-1-replica.

Waxaan u baahanahay inaan u sheegno macquulka ah xuduudaha isku xirka tusaale kasta. Waxay u muuqataa wax macquul ah in la kooxeeyo tusaalooyinka kooxaha mashiinka farsamada Ujeedadan awgeed, tusaalooyinka waxa la isugu geeyaa kooxo host1 ΠΈ host2, iyo koox kasta oo ka tirsan qaybta vars qiyamka ayaa lagu tilmaamay ansible_host ΠΈ ansible_user hal mashiinka dalwaddii. Iyo qaybta hosts - martida loo yahay (tusaale ahaan) kuwaas oo lagu daray kooxdan:

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:

Waxaan bilaabeynaa inaan bedelno hosts.yml. Aan ku darno laba tusaale oo kale, storage-2-replica on mashiinka dalwaddii ugu horeysay iyo storage-2 Marka labaad:

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:  # <==
  ...

Bilaw buug-ciyaaraha macquulka ah:

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

Fadlan ogow doorashada --limit. Maaddaama koox kastaa ay martigeliso ereyo macquul ah, waxaan si cad u qeexi karnaa tusaalaha ay tahay in la habeeyo marka la fulinayo buugga ciyaarta.

Ku noqoshada Shabakadda UI http://localhost:8181/admin/cluster/dashboard oo arag xaaladahayada cusub:

Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Halkaas yaynaan ku joogsan oo si fiican u maarayn topology-ga.

Maamulka Topology

Aan isku geyno tusaalaheenna cusub qaab nuqul ah storage-2. Aan kudarno koox cusub replicaset_storage_2 oo ku sifee halbeegyada dib-u-dhigista ee doorsoomayaalkeeda iyadoo la barbardhigayo replicaset_storage_1. Qaybta hosts Aynu tilmaanno tusaalooyinka lagu dari doono kooxdan (taas oo ah, isku-duubnaantayada):

---
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:

Aan mar kale bilowno buug-ciyaareedka:

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

Qiyaas ahaan --limit Markan waxaan gudbinay magaca kooxda u dhiganta nuqulkayaga.

Aynu tixgelinno ikhtiyaarka tags.

Doorkeenu wuxuu si isdaba joog ah u fuliyaa hawlo kala duwan, kuwaas oo lagu calaamadeeyay calaamadaha soo socda:

  • cartridge-instancesMaareynta tusaale ahaan (qaabaynta, xidhiidhka xubinnimada);
  • cartridge-replicasetsMaaraynta topology (maamulida nuqulka iyo ka saarida joogtada ah ee kiisaska kooxda);
  • cartridge-configMaareynta xuduudaha kale ee kooxda (vshard bootstrapping, habka fashilka tooska ah, cabbirrada oggolaanshaha iyo qaabeynta codsiga).

Waxaan si cad u qeexi karnaa qaybta shaqada ee aan rabno inaan sameyno, markaas doorku wuxuu ka boodi doonaa hawlaha intiisa kale. Xaaladeena, waxaan rabnaa inaan la shaqeyno kaliya topology-ga, sidaas darteed waxaan qeexnay cartridge-replicasets.

Aynu qiimayno natiijada dadaalkeena. Waxaan ku helnaa nuqul cusub http://localhost:8181/admin/cluster/dashboard.

Si fudud oo dabiici ah u geyso codsiyada Tarantool Cartridge (qaybta 1)

Hooray!

Tijaabi beddelka qaabaynta tusaalooyinka iyo jaangooyooyinka nuqulka ah oo arag sida ay kooxdu isu beddesho. Waxaad isku dayi kartaa xaalado kala duwan oo hawleed, tusaale; cusbooneysiinta duubista ama korodho memtx_memory. Doorku wuxuu isku dayi doonaa inuu tan sameeyo iyada oo aan dib loo bilaabin tusaalaha si loo yareeyo wakhtiga dhicitaanka ee suurtogalka ah ee codsigaaga.

Ha ilaawin inaad orod vagrant haltsi aad u joojiso mishiinnada farsamada gacanta marka aad dhammayso la shaqayntooda.

Maxaa daboolka ku jira?

Halkan waxaan kuugu sheegi doonaa wax badan oo ku saabsan waxa ka dhacayay hoosta doorka suurtogalka ah inta lagu jiro tijaabooyinkayaga.

Aynu eegno geynta codsiga Kartridge talaabo talaabo.

Ku rakibida xirmada iyo tusaalooyinka bilowga

Marka hore waxaad u baahan tahay inaad keento xirmada server-ka oo aad ku rakibto. Hadda doorku wuxuu la shaqayn karaa xirmooyinka RPM iyo DEB.

Marka xigta waxaan bilaabeynaa tusaalooyinka. Wax walba halkan aad bay u fudud yihiin: tusaale kastaa waa gooni systemd-adeeg. Waxaan ku siinayaa tusaale:

$ systemctl start myapp@storage-1

Amarka ayaa bilaabi doona tusaalaha storage-1 apps myapp. Tusaalaha la bilaabay ayaa raadin doona habaynta Π² /etc/tarantool/conf.d/. Diiwaanada tusaalaha waxaa lagu arki karaa iyadoo la isticmaalayo journald.

faylka unugga /etc/systemd/system/[email protected] Adeegga systemd waxa lala keenayaa xirmada.

Macquulku waxa uu leeyahay qaybo ku dhex jira oo lagu rakibo baakooyinka iyo maaraynta adeegyada habaysan; wax cusub halkan kumaanu arinmin.

Dejinta cluster topology

Tani waa meesha ay ka bilaabato madadaalo. Ogow, waxa ay noqon doontaa wax la yaab leh in lagu dhibo door gaar ah oo macquul ah oo loogu talagalay rakibidda baakadaha iyo socodsiinta systemd-deegyada.

Waxaad gacanta ku habayn kartaa kooxda:

  • Doorashada koowaad: fur shabkada UI oo guji badhamada. Aad bay ugu habboon tahay bilawga hal-mar ee dhowr xaaladood.
  • Doorashada labaad: waxaad isticmaali kartaa GraphQl API. Halkan waxa aad mar hore si otomaatig ah ugu samayn kartaa wax, tusaale ahaan, qoraal ku qor Python.
  • Doorashada saddexaad (kuwa xoogga leh): u tag server-ka, ku xidh mid ka mid ah tusaalooyinka isticmaalaya tarantoolctl connect oo ku samee dhammaan wax-is-dabamarinta lagama maarmaanka u ah moduleka Lua cartridge.

Hawsha ugu weyn ee hal-abuurkeena waa in aan si sax ah u samayno tan, qaybta ugu adag ee shaqada adiga.

Aansible wuxuu kuu ogolaanayaa inaad qorto cutubkaaga oo aad u isticmaasho door. Doorkeenu wuxuu isticmaalaa cutubyadan oo kale si loo maareeyo qaybaha kala duwan ee kooxdu.

Sidee u shaqeysaa? Waxaad ku qeexday xaaladda la rabo ee kutlada qaab-dhismeed cadeynaya, doorkuna wuxuu siinayaa cutub kasta qaybtiisa qaabeynta sida wax gelinta. Cutubku waxa uu helayaa heerka ay hadda ku sugan tahay kooxdu waxa uuna la barbar dhigayaa waxa la soo galiyay. Marka xigta, kood ayaa laga bilaabayaa godka mid ka mid ah tusaalooyinka, kaas oo keenaya kooxda gobolka la doonayo.

Natiijooyinka

Maanta waxaan u sheegnay oo tusnay sida codsigaaga loo geeyo Tarantool Cartridge oo aan u dejinay topology fudud. Si tan loo sameeyo, waxaan isticmaalnay macquul - qalab awood leh oo sahlan in la isticmaalo oo kuu ogolaanaya inaad isku mar isku hagaajiso noodhka kaabayaasha badan (xaaladkeena, tusaaleyaal kooxeed).

Xagga sare waxaan eegnay mid ka mid ah siyaabaha badan ee lagu qeexi karo qaabeynta kooxda iyadoo la adeegsanayo macquul. Markaad dareentid inaad diyaar u tahay inaad hore u socoto, sahamiso hababka ugu wanaagsan qorista buugaagta ciyaarta. Waxaa laga yaabaa inaad ku fududaato inaad maamusho topology-gaaga adigoo isticmaalaya group_vars ΠΈ host_vars.

Dhawaan waxaanu kuu sheegi doonaa sida si joogto ah looga tirtiro (ka saaro) tusaalooyinka topology-ga, bootstrap vsshard, maamulida habka fashilka otomatiga ah, u habaynta ogolaanshaha iyo balastar galka isku xidhka. Dhanka kale, adigu keligaa ayaad wax baran kartaa dukumeenti oo tijaabi beddelka cabbirrada kooxda.

Haddii ay wax shaqayn waayaan, hubi inaad ii sheeg annaga oo ku saabsan dhibaatada. Wax walba si degdeg ah ayaan u xallin doonnaa!

Source: www.habr.com

Add a comment