Re se re buile ka
E thahasellisa? Joale ke botsa tlas'a sehiloeng, re tla bolela le ho bontša tsohle.
A re qaleng ka mohlala
Re tla fana ka karolo feela ea ts'ebetso ea karolo ea rona. U ka fumana tlhaloso e felletseng ea likarolo tsohle tsa eona le li-parameter tsa ho kenya
Tarantool Cartridge e na le api
и storage
e ka abelwang mehlala.
Cartridge ka boeona ha e bue letho ka mokhoa oa ho qala lits'ebetso, e fana feela ka bokhoni ba ho hlophisa maemo a seng a ntse a sebetsa. Mosebelisi o tlameha ho etsa tse ling ka boeena: senya lifaele tsa tlhophiso, qala lits'ebeletso ebe o theha topology. Empa re ke ke ra etsa tsena tsohle, Ansible o tla re etsetsa tsona.
Ho tloha ho mantswe ho isa diketsong
Kahoo, a re ke re sebeliseng kopo ea rona ho mechini e 'meli ea sebele 'me re thehe topology e bonolo:
- Replicaset
app-1
e tla bapala karoloapi
e kenyeletsang karolovshard-router
. Ho tla ba le mohlala o le mong feela mona. - replicaset
storage-1
phetha karolostorage
(mme ka nako e tšoanangvshard-storage
), mona re eketsa mehlala e 'meli ho tloha mechine e fapaneng.
Ho etsa mohlala, re hloka
Karolo ka boeona ke
Kopanya polokelo ka mohlala:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
Re phahamisa mechini e hlakileng:
$ vagrant up
Kenya karolo e loketseng ea Tarantool Cartridge:
$ ansible-galaxy install tarantool.cartridge,1.0.1
Etsa karolo e kentsoeng:
$ ansible-playbook -i hosts.yml playbook.yml
Re emetse pheletso ea ts'ebetso ea buka ea ho bapala, e ea ho
O ka tšela data. Pholile, ho joalo?
Joale a re boneng hore na re ka sebetsana joang le sena, 'me ka nako e ts'oanang re kenye setšoantšo se seng sa topology.
Re qala ho utloisisa
Joale ho etsahetse’ng?
Re na le li-VM tse peli mme re tsamaisa buka ea ho bapala e loketseng e thehileng sehlopha sa rona. Ha re shebeng litaba tsa faele 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
Ha ho letho le thahasellisang le etsahalang mona, re qala karolo e utloahalang, e bitsoang tarantool.cartridge
.
Lintho tsohle tsa bohlokoa ka ho fetisisa (e leng, tlhophiso ea lihlopha) e teng 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:
Seo re se hlokang feela ke ho ithuta ho laola maemo le likopi ka ho fetola litaba tsa faele ena. Ka mor'a moo, re tla eketsa likarolo tse ncha ho eona. E le hore u se ke ua ferekanngoa hore na u li kenye hokae, u ka sheba phetolelong ea ho qetela ea faele ena, hosts.updated.yml
, e leng sebakeng sa polokelo ea mohlala.
Tsamaiso ea maemo
Mabapi le Ansible, mohlala o mong le o mong ke moeti (o se ke oa ferekanngoa le seva sa tšepe), i.e. node ea meaho eo Ansible e tla e laola. Bakeng sa moamoheli e mong le e mong, re ka hlakisa liparamente tsa khokahano (joalo ka ansible_host
и ansible_user
), hammoho le tlhophiso ea mohlala. Tlhaloso ea mehlala e karolong hosts
.
Nahana ka tlhophiso ea mohlala storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
Ka ho feto-fetoha config
re hlalositse li-parameter tsa mohlala - advertise URI
и HTTP port
.
Ka tlase ke li-parameter tsa mohlala app-1
и storage-1-replica
.
Re hloka ho bolella Ansible li-parameter tsa khokahano bakeng sa mohlala o mong le o mong. Ho bonahala ho utloahala ho arola maemo ka lihlopha tsa mochini oa sebele. Ho etsa sena, mehlala e kopantsoe ka lihlopha. host1
и host2
, le sehlopheng ka seng karolong eo vars
litekanyetso ansible_host
и ansible_user
bakeng sa mochine o le mong oa sebele. Le karolong hosts
- baamoheli (ke mehlala) ba kenyellelitsoeng sehlopheng sena:
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:
Re qala ho fetoha hosts.yml
. Ha re kenye mehlala e meng e 'meli, storage-2-replica
mochine oa pele oa sebele le storage-2
Ea bobeli:
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: # <==
...
Etsa buka ea ho bapala e loketseng:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
Ela hloko khetho --limit
. Kaha mohlala o mong le o mong oa sehlopha ke moamoheli ka mantsoe a Ansible, re ka hlakisa ka ho hlaka hore na ke maemo afe a lokelang ho hlophisoa ha ho sebetsa buka ea ho bapala.
Khutlela ho Web UI
Re ke ke ra phomola 'me re tla ipabola taolong ea topology.
Tsamaiso ea thuto-thuto
Ha re kopanye mehlala ea rona e mecha ho etsa mohlala storage-2
. Kenya sehlopha se secha replicaset_storage_2
le ho hlalosa ka mefuta-futa ea eona liparamente tsa replicaset ka papiso le replicaset_storage_1
. Karolong hosts
hlakisa hore na ke mehlala efe e tla kenyeletsoa sehlopheng sena (ke hore, replica sete ea rona):
---
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:
Ha re qaleng buka ea ho bapala hape:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
Ka paramente --limit
rona lekhetlong lena re fetisitse lebitso la sehlopha se lumellanang le sehatisi sa rona.
Nahana ka khetho tags
.
Karolo ea rona e etsa mesebetsi e fapaneng ka tatellano, e tšoailoeng ka li-tag tse latelang:
cartridge-instances
: tsamaiso ea mohlala (tlhophiso, khokahanyo ho litho);cartridge-replicasets
: tsamaiso ea topology (taolo ea likopi le ho tlosa ka ho sa feleng (ho leleka) liketsahalo ho tsoa sehlopheng);cartridge-config
: Laola likarolo tse ling tsa lihlopha (vshard bootstrapping, mode automatic failover mode, tumello ea tumello le tlhophiso ea kopo).
Re ka hlakisa ka ho hlaka hore na ke karolo efe ea mosebetsi eo re batlang ho e etsa, ebe karolo e tla tlola mesebetsi e meng. Tabeng ea rona, re batla ho sebetsa feela le topology, kahoo re boletse cartridge-replicasets
.
A re hlahlobeng liphello tsa boiteko ba rōna. Ho fumana replicaset e ncha
Hooray!
Leka ka maemo a ho hlophisa bocha le likopi 'me u bone hore na topology ea sehlopha e fetoha joang. U ka leka maemo a fapaneng a ts'ebetso, mohlala, memtx_memory
. Karolo e tla leka ho etsa sena ntle le ho qala mohlala hape ho fokotsa nako e ka bang teng ea kopo ea hau.
Se lebale ho matha vagrant halt
ho emisa li-VM ha u qetile ka tsona.
Hona ke eng e ka tlas'a sekoahelo?
Mona ke tla bua haholoanyane ka se etsahetseng tlas'a hood ea karolo e utloahalang nakong ea liteko tsa rona.
Ha re shebeng ho tsamaisa kopo ea Cartridge mohato ka mohato.
Ho kenya sephutheloana le maemo a ho qala
Pele u lokela ho isa sephutheloana ho seva ebe u se kenya. Hona joale karolo e ka sebetsa le liphutheloana tsa RPM le DEB.
Ka mor'a moo, re qala liketsahalo. Ntho e 'ngoe le e' ngoe e bonolo haholo mona: mohlala o mong le o mong o arohane systemd
- tšebeletso. Ke bua ka mohlala:
$ systemctl start myapp@storage-1
Taelo ena e tla qala mohlala storage-1
ditiriso myapp
. Mohlala o qalileng o tla shebana le eona /etc/tarantool/conf.d/
. Li-logs tsa mohlala li ka bonoa ho sebelisoa journald
.
Faele ea yuniti /etc/systemd/system/[email protected]
bakeng sa ts'ebeletso ea systemd e tla tlisoa le sephutheloana.
Ansible e na le li-module tse hahelletsoeng kahare bakeng sa ho kenya liphutheloana le ho tsamaisa lits'ebeletso tsa sistimi, ha re so qape letho le lecha mona.
Ho lokisa topology ea lihlopha
'Me mona ho qala ho thahasellisang ka ho fetisisa. Lumellana, e ka ba ntho e makatsang ho khathatseha ka karolo e khethehileng ea ansible bakeng sa ho kenya liphutheloana le ho sebetsa systemd
-litšebeletso.
U ka theha sehlopha ka letsoho:
- Khetho ea pele: bula UI ea Webo ebe o tobetsa likonopo. Bakeng sa qaleho ea nako e le 'ngoe ea maemo a' maloa, e loketse haholo.
- Khetho ea bobeli: o ka sebelisa GraphQl API. Mona u se u ka iketsetsa ntho e itseng, ka mohlala, ngola script ho Python.
- Khetho ea boraro (bakeng sa ba matla moeeng): e-ea ho seva, hokela ho e 'ngoe ea maemo a sebelisang
tarantoolctl connect
'me u etse lintho tsohle tse hlokahalang ka module ea Luacartridge
.
Mosebetsi o ka sehloohong oa tlhahiso ea rona ke ho etsa sena, karolo e thata ka ho fetisisa ea mosebetsi ho uena.
Ansible e o lumella ho ngola mojule oa hau le ho o sebelisa ka karolo. Karolo ea rona e sebelisa li-module tsena ho laola likarolo tse fapaneng tsa sehlopha.
E sebetsa joang? U hlalosa boemo bo lakatsehang ba sehlopha ka har'a tlhophiso ea phatlalatso, 'me karolo e fa mojule ka mong karolo ea eona ea tlhophiso joalo ka tlhahiso. Mojule o amohela boemo ba hona joale ba sehlopha mme o bo bapisa le ho kenya letsoho. Ka mor'a moo, khoutu e tsamaisoa ka soketeng ea e 'ngoe ea maemo, e tlisang sehlopha sebakeng seo u se batlang.
Liphello
Kajeno re boletse le ho bonts'a mokhoa oa ho kenya kopo ea hau ho Tarantool Cartridge le ho theha topology e bonolo. Ho etsa sena, re sebelisitse Ansible, sesebelisoa se matla seo ho leng bonolo ho se sebelisa mme se u lumella hore ka nako e le 'ngoe u lokise li-node tse ngata tsa meaho (ho rona, tsena ke maemo a lihlopha).
Ka holimo, re sebetsana le e 'ngoe ea mekhoa e mengata ea ho hlalosa tlhophiso ea sehlopha ka ho sebelisa Ansible. Hang ha u tseba hore u se u loketse ho tsoela pele, ithute group_vars
и host_vars
.
Haufinyane re tla u bolella mokhoa oa ho tlosa (ho leleka) ka ho sa feleng maemo ho tloha ho topology, bootstrap vshard, ho laola mokhoa o itekanetseng oa failover, ho lokisa tumello le ho pata sehlopha sa lihlopha. Khabareng, u ka ithuta u le mong
Haeba ho hong ho sa sebetse, etsa bonnete
Source: www.habr.com