Horay ayaanu uga hadalnay
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
Tarantool Cartridge ayaa leh 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 doorkaapi
, oo ay ku jirto doorkavshard-router
. Waxaa jiri doona hal tusaale oo kaliya halkan. - Dib u habeyn
storage-1
fulinta doorkastorage
(iyo isla markaavshard-storage
), halkan waxaan ku dari doonaa laba tusaale oo mashiinada kala duwan.
Si aan u socodsiino tusaalaha waxaan u baahanahay
Doorka laftiisa ayaa ku jira
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
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 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
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-instances
Maareynta tusaale ahaan (qaabaynta, xidhiidhka xubinnimada);cartridge-replicasets
Maaraynta topology (maamulida nuqulka iyo ka saarida joogtada ah ee kiisaska kooxda);cartridge-config
Maareynta 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
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; 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 halt
si 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 /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 Luacartridge
.
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 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
Haddii ay wax shaqayn waayaan, hubi inaad
Source: www.habr.com