Tha sinn air bruidhinn mu thràth
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
Tha aig Tarantool Cartridge 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ìomhapi
, anns a bheil an dreuchdvshard-router
. Cha bhi ach aon eisimpleir an seo. - Mac-samhail
storage-1
a’ cur an gnìomh an dreuchdstorage
(agus aig an aon àmvshard-storage
), an seo cuiridh sinn dà eisimpleir bho dhiofar innealan.
Gus an eisimpleir a tha a dhìth oirnn a ruith
Tha an dreuchd fhèin ann
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
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 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
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
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. 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 halt
gus 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 /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 Luacartridge
.
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 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
Mura h-eil rudeigin ag obair, dèan cinnteach
Source: www.habr.com