Táimid tar éis labhairt cheana féin faoi
Suimiúil? Ansin le do thoil, faoin gearrtha, inseoimid duit agus taispeánfaimid gach rud duit.
Let tús le sampla
Ní fhéachfaimid ach ar chuid d’fheidhmiúlacht ár róil. Is féidir leat cur síos iomlán a fháil i gcónaí ar a chumais agus a paraiméadair ionchuir go léir i
Tá Cartús Tarantool api
и storage
, is féidir a shannadh do chásanna.
Ní deir Cartús féin rud ar bith faoi conas próisis a sheoladh, ní sholáthraíonn sé ach an cumas cásanna atá ag rith cheana féin a chumrú. Ní mór don úsáideoir an chuid eile a dhéanamh é féin: comhaid cumraíochta a shocrú, tús a chur le seirbhísí agus an topology a chumrú. Ach ní dhéanfaimid é seo go léir; déanfaidh Ansible dúinn é.
Ó fhocail go gníomhais
Mar sin, déanaimis ár n-iarratas a imscaradh chuig dhá mheaisín fhíorúla agus cuirfimid topology simplí ar bun:
- Macasamhail
app-1
an ról a chur i bhfeidhmapi
, a chuimsíonn an rólvshard-router
. Ní bheidh ach cás amháin anseo. - Macasamhail
storage-1
cuireann an ról i bhfeidhmstorage
(agus ag an am céannavshard-storage
), anseo cuirfimid dhá chás ó mheaisíní éagsúla.
Chun an sampla a theastaíonn uainn a rith
Tá an ról féin i
Déanaimis an stór a chlónáil le sampla:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
Déanaimid meaisíní fíorúla a ardú:
$ vagrant up
Suiteáil an ról insible Cartridge Tarantool:
$ ansible-galaxy install tarantool.cartridge,1.0.1
Seoladh an ról suiteáilte:
$ ansible-playbook -i hosts.yml playbook.yml
Táimid ag fanacht leis an leabhar súgartha chun an forghníomhú a chríochnú, téigh go dtí
Is féidir leat sonraí a uaslódáil. Cool, ceart?
Anois déanaimis amach conas oibriú leis seo, agus ag an am céanna cuir macasamhail eile leis an topology.
Let tús a dhéanamh amach é
Mar sin, cad a tharla?
Chuireamar dhá mheaisín fhíorúla ar bun agus sheolamar leabhar súgartha ansible a chumraigh ár mbraisle. Breathnaímid ar ábhar an chomhaid 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
Ní tharlaíonn aon rud suimiúil anseo, a ligean ar sheoladh ról insible ar a dtugtar tarantool.cartridge
.
Tá na rudaí is tábhachtaí ar fad (is é sin, an chumraíocht braisle) suite i 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:
Níl le déanamh againn ach foghlaim conas cásanna agus macasamhla a bhainistiú trí ábhar an chomhaid seo a athrú. Ansin cuirfimid rannóga nua leis. Ionas nach mbeidh mearbhall ort cá háit ar cheart iad a chur leis, is féidir leat breathnú ar an leagan deiridh den chomhad seo, hosts.updated.yml
, atá sa stór samplach.
Bainistíocht Cáis
I dtéarmaí Insible, is óstach é gach cás (gan a mheascadh le freastalaí crua-earraí), i.e. an nód bonneagair a bhainisteoidh Ansible. I gcás gach ósta is féidir linn paraiméadair nasc a shonrú (mar shampla ansible_host
и ansible_user
), chomh maith leis an gcumraíocht shampla. Tá cur síos ar chásanna sa rannán hosts
.
A ligean ar breathnú ar an chumraíocht shampla storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
I athróg config
shonraigh muid na paraiméadair shampla - advertise URI
и HTTP port
.
Seo thíos na paraiméadair shampla app-1
и storage-1-replica
.
Ní mór dúinn na paraiméadair naisc a insint do gach cás. Dealraíonn sé go bhfuil sé loighciúil cásanna a ghrúpáil i ngrúpaí meaisíní fíorúla. Chun na críche seo, cuirtear cásanna le chéile i ngrúpaí host1
и host2
, agus i ngach grúpa sa roinn vars
cuirtear luachanna in iúl ansible_host
и ansible_user
le haghaidh meaisín fíorúil amháin. Agus sa rannóg hosts
— óstaigh (mar shampla) atá san áireamh sa ghrúpa 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:
Tosaímid ag athrú hosts.yml
. Cuirimis dhá chás eile leis, storage-2-replica
ar an gcéad meaisín fíorúil agus storage-2
Ar an dara ceann:
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: # <==
...
Seol an leabhar súgartha ciallmhar:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
Tabhair faoi deara an rogha --limit
. Ós rud é gur óstach é gach cás braisle i dtéarmaí Ansible, is féidir linn a shonrú go sainráite cé na cásanna ba cheart a chumrú agus an leabhar súgartha á chur i gcrích.
Ag dul ar ais go dtí an Chomhéadain Gréasáin
Ná stopaimis ansin agus máistreacht againn ar bhainistíocht topology.
Bainistíocht topology
Déanaimis ár gcásanna nua a chomhcheangal i sraith macasamhail storage-2
. Cuirimis grúpa nua leis replicaset_storage_2
agus déan cur síos ar na paraiméadair macasamhlaithe ina athróga de réir analaí replicaset_storage_1
. In alt hosts
Cuirimis in iúl cé na cásanna a bheidh san áireamh sa ghrúpa seo (is é sin, ár macasamhail tacair):
---
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:
Cuirimis tús leis an leabhar súgartha arís:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
I bparaiméadar --limit
An uair seo chuireamar thar ainm an ghrúpa a fhreagraíonn dár macasamhail.
Déanaimis machnamh ar an rogha tags
.
Déanann ár ról tascanna éagsúla go seicheamhach, atá marcáilte leis na clibeanna seo a leanas:
cartridge-instances
: bainistíocht shampla (cumraíocht, ceangal le ballraíocht);cartridge-replicasets
: bainistíocht topology (macasamhlú a bhainistiú agus cásanna a bhaint go buan (a dhíbirt) as an mbraisle);cartridge-config
: bainistiú paraiméadair braisle eile (vshard bootstrapping, modh teip uathoibríoch, paraiméadair údaraithe agus cumraíocht feidhmchláir).
Is féidir linn a shonrú go sainráite cén chuid den obair ba mhaith linn a dhéanamh, ansin ní rachaidh an ról thar an gcuid eile de na tascanna. In ár gcás, ba mhaith linn a bheith ag obair ach amháin leis an topology, mar sin sonraithe againn cartridge-replicasets
.
Déanaimis meastóireacht ar thoradh ár n-iarrachtaí. Faighimid macasamhail nua ar
Hooray!
Triail a dhéanamh le cumraíocht cásanna agus tacair macasamhail a athrú agus féach conas a athraíonn topology an bhraisle. Is féidir leat triail a bhaint as cásanna oibriúcháin éagsúla, m.sh. memtx_memory
. Déanfaidh an ról iarracht é seo a dhéanamh gan an sampla a atosú chun an t-am aga a d’fhéadfadh a bheith i gceist le d’iarratas a laghdú.
Ná déan dearmad a rith vagrant halt
chun stop a chur leis na meaisíní fíorúla nuair a bhíonn tú críochnaithe ag obair leo.
Agus cad atá faoin gcochall?
Anseo inseoidh mé duit níos mó faoi cad a bhí ag tarlú faoi chochall an ról insible le linn ár dturgnaimh.
Breathnaímid ar an iarratas Cartús a imscaradh céim ar chéim.
Suiteáil an phacáiste agus cásanna tosaigh
Ar dtús ní mór duit an pacáiste a sheachadadh chuig an bhfreastalaí agus é a shuiteáil. Faoi láthair is féidir leis an ról oibriú le pacáistí RPM agus DEB.
Ansin cuirimid na cásanna ar aghaidh. Tá gach rud an-simplí anseo: tá gach cás ar leith systemd
-seirbhís. Tabharfaidh mé sampla duit:
$ systemctl start myapp@storage-1
Seolfaidh an t-ordú seo an cás storage-1
apps myapp
. Beidh an ásc seolta ag lorg a /etc/tarantool/conf.d/
. Is féidir logaí cásanna a fheiceáil ag baint úsáide as journald
.
Comhad aonad /etc/systemd/system/[email protected]
le haghaidh seirbhíse systemd a sheachadadh chomh maith leis an bpacáiste.
Tá modúil ionsuite ag Ansible chun pacáistí a shuiteáil agus chun seirbhísí córasacha a bhainistiú; níl aon rud nua cruthaithe againn anseo.
Topology braisle a bhunú
Seo nuair a thosaíonn an spraoi. Aontaigh, bheadh sé aisteach bodhraigh le ról Freagrach speisialta maidir le pacáistí a shuiteáil agus a reáchtáil systemd
-seirbhísí.
Is féidir leat an braisle a chumrú de láimh:
- An chéad rogha: oscail an Chomhéadain Gréasáin agus cliceáil ar na cnaipí. Tá sé oiriúnach go leor le haghaidh tús aonuaire i roinnt cásanna.
- An dara rogha: is féidir leat an API GraphQl a úsáid. Anseo is féidir leat rud éigin a uathoibriú cheana féin, mar shampla, scríobh script i Python.
- Tríú rogha (don láidir-willed): téigh go dtí an freastalaí, ceangal le ceann de na cásanna ag baint úsáide as
tarantoolctl connect
agus na hionramhálacha riachtanacha go léir a dhéanamh leis an modúl Luacartridge
.
Is é príomhchúram ár n-aireagán é seo a dhéanamh go díreach, an chuid is deacra den obair duit.
Ligeann Ansible duit do mhodúl féin a scríobh agus é a úsáid i ról. Úsáideann ár ról modúil den sórt sin chun comhpháirteanna braisle éagsúla a bhainistiú.
Conas a oibríonn sé? Déanann tú cur síos ar staid inmhianaithe an bhraisle i gcumraíocht dhearbhaithe, agus soláthraíonn an ról a rannóg cumraíochta do gach modúl mar ionchur. Faigheann an modúl staid reatha an bhraisle agus cuireann sé é i gcomparáid leis an méid a fuarthas mar ionchur. Ansin, seoltar cód trí shoicéad ceann de na cásanna, a thugann an braisle go dtí an staid atá ag teastáil.
Torthaí
Inniu d’inis muid agus léirigh muid conas d’iarratas a imscaradh chuig Tarantool Cartridge agus topology simplí a bhunú. Chun seo a dhéanamh, d'úsáideamar Ansible - uirlis chumhachtach atá éasca le húsáid agus a ligeann duit go leor nóid bonneagair a chumrú ag an am céanna (inár gcás, cásanna braisle).
Thuas d’fhéachamar ar cheann de na bealaí iomadúla chun cur síos a dhéanamh ar chumraíocht bhraisle ag baint úsáide as Ansible. Nuair a bhraitheann tú réidh le bogadh ar aghaidh, déan iniúchadh group_vars
и host_vars
.
Go han-luath inseoimid duit conas cásanna a scriosadh go buan (a dhíbirt) ón topology, bootstrap vshard, modh teipthe uathoibríoch a bhainistiú, údarú a chumrú agus an cumraíocht braisle a phaisteáil. Idir an dá linn, is féidir leat staidéar a dhéanamh leat féin
Mura n-oibríonn rud éigin, bí cinnte
Foinse: will.com