Kua korerohia e matou
He mea whakamere? Na koa, i raro i te tapahi, ka korero atu matou ki a koe ka whakaatu ki a koe nga mea katoa.
Me timata ma te tauira
Ka titiro noa tatou ki tetahi waahanga o te mahi o ta tatou mahi. Ka kitea e koe he whakaahuatanga katoa mo ona kaha katoa me nga tawhā whakauru i roto
Kei a Tarantool Cartridge api
и storage
, ka taea te tautapa ki nga tauira.
Kaore he korero a Cartridge ake mo te huarahi ki te whakarewa i nga tikanga, ka taea noa e ia te whirihora i nga waa kua rere ke. Me mahi e te kaiwhakamahi te toenga: whakarite i nga konae whirihoranga, tiimata nga ratonga me te whirihora i te topology. Engari e kore matou e mahi i enei mea katoa; Ma Ansible e mahi ma matou.
Mai i nga kupu ki nga mahi
Na, me tuku ta maatau tono ki nga miihini mariko e rua ka whakarite i tetahi topology ngawari:
- He huinga tauira
app-1
ka whakatinana i te mahiapi
, kei roto ko te mahivshard-router
. Ka kotahi noa te tauira i konei. - He huinga tauira
storage-1
ka whakatinana i te mahistorage
(me te wa anovshard-storage
), i konei ka taapirihia e matou nga waahanga e rua mai i nga miihini rereke.
Hei whakahaere i te tauira e hiahiatia ana
Ko te mahi ano kei roto
Kia whakakaohia te putunga me tetahi tauira:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
Ka whakaarahia e matou nga miihini mariko:
$ vagrant up
Tāutahia te Kaata Tarantool ka taea te mahi:
$ ansible-galaxy install tarantool.cartridge,1.0.1
Whakarewahia te mahi kua whakauruhia:
$ ansible-playbook -i hosts.yml playbook.yml
Ka tatari kia oti te mahi a te pukapuka takaro, haere ki
Ka taea e koe te tuku raraunga. Ataahua, tika?
Inaianei me whakaaro me pehea te mahi me tenei, me te taapiri i tetahi atu tauira ki te topology.
Kia timata tatou ki te whakaaro
Na he aha te mea i tupu?
I whakaturia e matou etahi miihini mariko e rua, ka whakarewahia he pukapuka takaro e whirihora ana i ta matou roopu. Kia titiro tatou ki nga korero o te konae 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
Karekau he mea whakamere i konei, kia whakarewahia e tatou tetahi mahi e kiia nei tarantool.cartridge
.
Ko nga mea tino nui katoa (ara, te whirihoranga tautau) kei roto 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:
Ko nga mea katoa e hiahiatia ana ko te ako me pehea te whakahaere i nga tauira me nga tauira taapiri ma te whakarereke i nga ihirangi o tenei konae. I muri mai ka taapirihia e matou etahi waahanga hou. Kia kore ai e pohehe ki hea hei taapiri, ka taea e koe te titiro ki te putanga whakamutunga o tenei konae, hosts.updated.yml
, kei roto i te kohinga tauira.
Te whakahaere tauira
I roto i nga kupu Ansible, he kaihautu ia tauira (kaua e pohehe ki te tūmau taputapu), i.e. te kōpuku hanganga ka whakahaerehia e Ansible. Mo ia kaihautu ka taea e taatau te tautuhi i nga tawhā hononga (penei i ansible_host
и ansible_user
), me te whirihoranga tauira. Ko te whakaahuatanga o nga tauira kei te waahanga hosts
.
Kia titiro tatou ki te whirihoranga tauira storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
I roto i te taurangi config
i tohua e matou nga tawhā tauira - advertise URI
и HTTP port
.
Kei raro ko nga tawhā tauira app-1
и storage-1-replica
.
Me korero ki a Ansible nga tawhā hononga mo ia tauira. Te ahua arorau ki te whakarōpū i nga tauira ki nga roopu miihini mariko. Mo tenei kaupapa, ka whakakotahihia nga tauira ki nga roopu host1
и host2
, me ia roopu i te waahanga vars
kua tohua nga uara ansible_host
и ansible_user
mo te miihini mariko kotahi. Na i roto i te waahanga hosts
— nga kaihautu (aka tauira) kei roto i tenei roopu:
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:
Ka timata tatou ki te huri hosts.yml
. Kia rua ano nga tauira taapiri, storage-2-replica
i runga i te miihini mariko tuatahi me te storage-2
I te tuarua:
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: # <==
...
Whakarewahia te pukapuka takaro ansible:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
Kia mahara ki te whiringa --limit
. I te mea he kaihautu ia tauira kahui i roto i nga kupu Ansible, ka taea e tatou te tautuhi ko wai nga tauira me whirihora i te wa e mahia ana te pukapuka takaro.
Ka hoki ki te UI Tukutuku
Kaua tatou e mutu i reira me te rangatira whakahaere topology.
Te whakahaere topology
Whakakotahitia a tatou tauira hou ki te huinga tauira storage-2
. Me taapiri he roopu hou replicaset_storage_2
me te whakaahua i nga tawhā tauira i roto i ona taurangi ma te whakataurite ki replicaset_storage_1
. I te wahanga hosts
Me tohu ko wai nga tauira ka uru ki roto i tenei roopu (ara, to taatau huinga tauira):
---
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:
Me timata ano te pukapuka takaro:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
Ia kōwhiringa --limit
I tenei wa ka tukuna e matou te ingoa o te roopu e rite ana ki to maatau tauira.
Kia whakaaro tatou te kōwhiringa tags
.
He maha nga mahi ka mahia e ta maatau mahi, kua tohua ki nga tohu e whai ake nei:
cartridge-instances
: whakahaere tauira (whirihora, hononga ki te mema);cartridge-replicasets
: whakahaere topology (whakahaere tauira me te tango tuturu (peia) o nga tauira mai i te tautau);cartridge-config
: te whakahaere i etahi atu tawhā tautau (vshard bootstrapping, aratau failover aunoa, tawhā whakamanatanga me te whirihoranga tono).
Ka taea e tatou te whakaatu marama ko tehea wahanga o te mahi e hiahia ana tatou ki te mahi, katahi ka pekehia e te mahi te toenga o nga mahi. I roto i to maatau, e hiahia ana matou ki te mahi me te topology anake, na reira i tohua e matou cartridge-replicasets
.
Kia arotakehia te hua o a tatou mahi. Ka kitea he tauira hou kei runga
Ohana!
Whakamātautau me te huri i te whirihoranga o nga tauira me nga huinga tauira ka kite i te huringa o te topology tautau. Ka taea e koe te whakamatau i nga ahuatanga whakahaere rereke, hei tauira. memtx_memory
. Ka ngana te mahi ki te mahi i tenei me te kore e whakaara ano i te tauira hei whakaiti i te wa heke o to tono.
Kaua e wareware ki te oma vagrant halt
ki te whakamutu i nga miihini mariko ina mutu to mahi ki a raatau.
A he aha te mea kei raro i te potae?
I konei ka korero atu ahau ki a koe mo nga mea e tupu ana i raro i te ahuru o te mahi ansible i a maatau whakamatautau.
Kia titiro tatou ki te tuku i te tono Cartridge ma te taahiraa.
Te tāuta i te mōkihi me te tīmata i ngā wā
Tuatahi me tuku e koe te kete ki te tūmau me te whakauru. I tenei wa ka taea e te mahi te mahi me nga kohinga RPM me DEB.
I muri mai ka whakarewahia e matou nga tauira. He tino ngawari nga mea katoa i konei: he mea motuhake ia tauira systemd
- ratonga. Ka hoatu e ahau he tauira:
$ systemctl start myapp@storage-1
Ka whakarewahia e tenei tono te tauira storage-1
taupānga myapp
. Ko te tauira kua whakarewahia ka rapu mo tona /etc/tarantool/conf.d/
. Ka taea te tiro i nga raarangi tauira ma te whakamahi journald
.
Kōnae wae /etc/systemd/system/[email protected]
mo te ratonga systemd ka tukuna me te kete.
Kei a Ansible nga waahanga whakauru mo te whakauru i nga kete me te whakahaere i nga ratonga punaha; kaore ano matou i hanga he mea hou i konei.
Te whakarite topology tautau
I konei ka timata te ngahau. Whakaae, he mea ke ki te whakararuraru i tetahi mahi Ansible motuhake mo te whakauru i nga kete me te whakahaere systemd
- ratonga.
Ka taea e koe te whirihora a-ringa i te tautau:
- Kōwhiringa tuatahi: whakatuwhera i te UI Tukutuku ka paato i nga paatene. He tino pai mo te tiimata kotahi o nga wa maha.
- Kōwhiringa tuarua: ka taea e koe te whakamahi i te GraphQl API. I konei ka taea e koe te whakaaunoa i tetahi mea, hei tauira, tuhia he tuhinga ki te Python.
- Kōwhiringa tuatoru (mo te hunga kaha-kaha): haere ki te tūmau, hono atu ki tetahi o nga waahi ma te whakamahi
tarantoolctl connect
me te mahi i nga whawhe katoa e tika ana me te waahanga Luacartridge
.
Ko te mahi matua o ta maatau tenenga ko te mahi tika i tenei, te waahanga tino uaua o te mahi mo koe.
Ka taea e Ansible te tuhi i to ake waahanga me te whakamahi i tetahi mahi. Ka whakamahia e ta maatau mahi nga momo waahanga hei whakahaere i nga momo huinga huinga.
Pehea te mahi? Ka whakaahua koe i te ahua e hiahiatia ana o te tautau i roto i te whirihora whakapuakanga, a ko te mahi e whakarato ana i ia waahanga me tana waahanga whirihoranga hei whakaurunga. Ka whiwhi te kōwae i te āhua o te kāhui o nāianei, ā, ka whakataurite ki ngā mea i riro hei tāuru. I muri mai, ka whakarewahia he waehere ma te turanga o tetahi o nga tauira, ka kawea te tautau ki te ahua e hiahiatia ana.
Ngā putanga
I tenei ra i korero matou me te whakaatu me pehea te tohatoha i to tono ki te Kaata Tarantool me te whakarite i tetahi topology ngawari. Ki te mahi i tenei, i whakamahia e matou te Ansible - he taputapu kaha e ngawari ana ki te whakamahi ka taea e koe te whirihora i te maha o nga pona hanganga (i roto i ta maatau keehi, nga tauira kahui).
I runga ake i titiro matou ki tetahi o nga huarahi maha ki te whakaahua i tetahi whirihoranga tautau ma te whakamahi i te Ansible. Ina kua rite koe ki te neke haere, torotoro group_vars
и host_vars
.
Kaore e roa ka korerotia e matou ki a koe me pehea te whakakore i nga ahuatanga mai i te topology, bootstrap vshard, te whakahaere i te aratau failover aunoa, te whirihora i te whakamanatanga me te papaki i te whirihora tautau. I tenei wa, ka taea e koe te ako i a koe ake
Ki te kore tetahi mea e mahi, me tino mohio
Source: will.com